deque move-ctor OK on gcc

[SVN r80334]
This commit is contained in:
Joel de Guzman
2012-08-31 15:58:31 +00:00
parent 5946ab9936
commit 3613310b62
3 changed files with 34 additions and 11 deletions

View File

@@ -28,13 +28,22 @@ namespace boost { namespace fusion { namespace detail
typedef typename deque_keyed_values_impl<next_index, Tail...>::type tail;
typedef keyed_element<N, Head, tail> type;
static type call(
static type construct(
typename detail::call_param<Head>::type head
, typename detail::call_param<Tail>::type... tail)
{
return type(
head
, deque_keyed_values_impl<next_index, Tail...>::call(tail...)
, deque_keyed_values_impl<next_index, Tail...>::construct(tail...)
);
}
static type forward_(Head&& head, Tail&&... tail)
{
return type(
std::forward<Head>(head)
, deque_keyed_values_impl<next_index, Tail...>::
forward_(std::forward<Tail>(tail)...)
);
}
};
@@ -45,7 +54,8 @@ namespace boost { namespace fusion { namespace detail
struct deque_keyed_values_impl<N>
{
typedef nil_keyed_element type;
static type call() { return type(); }
static type construct() { return type(); }
static type forward_() { return type(); }
};
template <typename ...Elements>

View File

@@ -63,6 +63,9 @@ namespace boost { namespace fusion { namespace detail
: Rest(rhs.get_base()), value_(rhs.value_)
{}
#if !defined(BOOST_NO_RVALUE_REFERENCES)
#endif
Rest& get_base()
{
return *this;