Fix overload resolution failure.

Because the ctor `deque(U &&...)` is also performed as `deque(U const&...)`.
This commit is contained in:
Kohei Takahashi
2014-11-30 14:29:03 +09:00
parent ed9880c161
commit 223c7d520f

View File

@ -127,12 +127,6 @@ namespace boost { namespace fusion
: base(detail::deque_keyed_values<Head, Tail...>::construct(head, tail...))
{}
template <typename Head_, typename ...Tail_>
BOOST_FUSION_GPU_ENABLED
explicit deque(Head_ const& head, Tail_ const&... tail)
: base(detail::deque_keyed_values<Head_, Tail_...>::construct(head, tail...))
{}
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
template <typename Head_, typename ...Tail_, typename =
typename enable_if<is_convertible<Head_, Head> >::type
@ -142,6 +136,14 @@ namespace boost { namespace fusion
: base(detail::deque_keyed_values<Head, Tail...>
::forward_(BOOST_FUSION_FWD_ELEM(Head_, head), BOOST_FUSION_FWD_ELEM(Tail_, tail)...))
{}
#else
template <typename Head_, typename ...Tail_, typename =
typename enable_if<is_convertible<Head_, Head> >::type
>
BOOST_FUSION_GPU_ENABLED
explicit deque(Head_ const& head, Tail_ const&... tail)
: base(detail::deque_keyed_values<Head_, Tail_...>::construct(head, tail...))
{}
#endif
template <typename Sequence>