mirror of
https://github.com/boostorg/fusion.git
synced 2025-07-30 20:47:31 +02:00
deque move-ctor OK on gcc
[SVN r80334]
This commit is contained in:
@ -71,6 +71,11 @@ namespace boost { namespace fusion
|
|||||||
: base(seq)
|
: base(seq)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
template <typename ...Elements>
|
||||||
|
deque(deque<Elements...>& seq)
|
||||||
|
: base(seq)
|
||||||
|
{}
|
||||||
|
|
||||||
#if !defined(BOOST_NO_RVALUE_REFERENCES)
|
#if !defined(BOOST_NO_RVALUE_REFERENCES)
|
||||||
template <typename ...Elements>
|
template <typename ...Elements>
|
||||||
deque(deque<Elements...>&& seq)
|
deque(deque<Elements...>&& seq)
|
||||||
@ -89,16 +94,21 @@ namespace boost { namespace fusion
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
explicit deque(Head const& head, Tail const&... tail)
|
explicit deque(Head const& head, Tail const&... tail)
|
||||||
: base(detail::deque_keyed_values<Head, Tail...>::call(head, tail...))
|
: base(detail::deque_keyed_values<Head, Tail...>::construct(head, tail...))
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//~ #if !defined(BOOST_NO_RVALUE_REFERENCES)
|
template <typename Head_, typename ...Tail_>
|
||||||
//~ template <typename Head_, typename ...Tail_>
|
explicit deque(Head_ const& head, Tail_ const&... tail)
|
||||||
//~ explicit deque(Head_&& head, Tail_&&... tail)
|
: base(detail::deque_keyed_values<Head_, Tail_...>::construct(head, tail...))
|
||||||
//~ : base(detail::deque_keyed_values<Head_, Tail_...>
|
{}
|
||||||
//~ ::call(std::forward<Head_>(head), std::forward<Tail_>(tail)...))
|
|
||||||
//~ {}
|
#if !defined(BOOST_NO_RVALUE_REFERENCES)
|
||||||
//~ #endif
|
template <typename Head_, typename ...Tail_>
|
||||||
|
explicit deque(Head_&& head, Tail_&&... tail)
|
||||||
|
: base(detail::deque_keyed_values<Head, Tail...>
|
||||||
|
::forward_(std::forward<Head_>(head), std::forward<Tail_>(tail)...))
|
||||||
|
{}
|
||||||
|
#endif
|
||||||
|
|
||||||
template <typename Sequence>
|
template <typename Sequence>
|
||||||
explicit deque(Sequence const& seq
|
explicit deque(Sequence const& seq
|
||||||
|
@ -28,13 +28,22 @@ namespace boost { namespace fusion { namespace detail
|
|||||||
typedef typename deque_keyed_values_impl<next_index, Tail...>::type tail;
|
typedef typename deque_keyed_values_impl<next_index, Tail...>::type tail;
|
||||||
typedef keyed_element<N, Head, tail> type;
|
typedef keyed_element<N, Head, tail> type;
|
||||||
|
|
||||||
static type call(
|
static type construct(
|
||||||
typename detail::call_param<Head>::type head
|
typename detail::call_param<Head>::type head
|
||||||
, typename detail::call_param<Tail>::type... tail)
|
, typename detail::call_param<Tail>::type... tail)
|
||||||
{
|
{
|
||||||
return type(
|
return type(
|
||||||
head
|
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>
|
struct deque_keyed_values_impl<N>
|
||||||
{
|
{
|
||||||
typedef nil_keyed_element type;
|
typedef nil_keyed_element type;
|
||||||
static type call() { return type(); }
|
static type construct() { return type(); }
|
||||||
|
static type forward_() { return type(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename ...Elements>
|
template <typename ...Elements>
|
||||||
|
@ -63,6 +63,9 @@ namespace boost { namespace fusion { namespace detail
|
|||||||
: Rest(rhs.get_base()), value_(rhs.value_)
|
: Rest(rhs.get_base()), value_(rhs.value_)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
#if !defined(BOOST_NO_RVALUE_REFERENCES)
|
||||||
|
#endif
|
||||||
|
|
||||||
Rest& get_base()
|
Rest& get_base()
|
||||||
{
|
{
|
||||||
return *this;
|
return *this;
|
||||||
|
Reference in New Issue
Block a user