20 changes: 10 additions & 10 deletions include/boost/fusion/adapted/struct/detail/define_struct.hpp
Expand Up @@ -62,7 +62,7 @@
ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
\
template<typename Seq> \
BOOST_FUSION_GPU_ENABLED \
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
self_type& \
operator=(Seq const& seq) \
{ \
Expand Down Expand Up @@ -121,7 +121,7 @@
ATTRIBUTE_TUPEL_SIZE, \
ATTRIBUTES_SEQ) \
\
BOOST_FUSION_GPU_ENABLED \
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
NAME() \
: BOOST_PP_SEQ_FOR_EACH_I_R( \
1, \
Expand All @@ -130,7 +130,7 @@
ATTRIBUTES_SEQ) \
{} \
\
BOOST_FUSION_GPU_ENABLED \
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
NAME(self_type const& other_self) \
: BOOST_PP_SEQ_FOR_EACH_I_R( \
1, \
Expand All @@ -140,7 +140,7 @@
{} \
\
template<typename Seq> \
BOOST_FUSION_GPU_ENABLED \
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
NAME(Seq const& seq \
BOOST_PP_IF( \
BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ)), \
Expand All @@ -160,7 +160,7 @@
#define BOOST_FUSION_DEFINE_STRUCT_CTOR_1( \
NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
\
BOOST_FUSION_GPU_ENABLED \
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
explicit \
NAME(boost::call_traits< \
BOOST_PP_TUPLE_ELEM( \
Expand All @@ -173,7 +173,7 @@
#define BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_1( \
TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
\
BOOST_FUSION_GPU_ENABLED \
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
explicit \
NAME(typename boost::call_traits< \
typename boost::fusion::detail::get_first_arg< \
Expand Down Expand Up @@ -210,7 +210,7 @@
#define BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_N( \
TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
\
BOOST_FUSION_GPU_ENABLED \
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
NAME(BOOST_PP_SEQ_FOR_EACH_I_R( \
1, \
BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_ARG_I, \
Expand Down Expand Up @@ -238,7 +238,7 @@
#define BOOST_FUSION_DEFINE_STRUCT_CTOR_N( \
NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
\
BOOST_FUSION_GPU_ENABLED \
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
NAME(BOOST_PP_SEQ_FOR_EACH_I_R( \
1, \
BOOST_FUSION_DEFINE_STRUCT_CTOR_ARG_I, \
Expand Down Expand Up @@ -280,12 +280,12 @@
NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
\
template<typename Seq> \
BOOST_FUSION_GPU_ENABLED \
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
NAME(Seq const&) \
{} \
\
template<typename Seq> \
BOOST_FUSION_GPU_ENABLED \
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
self_type& \
operator=(Seq const& seq) \
{ \
Expand Down
25 changes: 13 additions & 12 deletions include/boost/fusion/adapted/struct/detail/define_struct_inline.hpp
Expand Up @@ -66,6 +66,7 @@
#define BOOST_FUSION_IGNORE_2(ARG1, ARG2)

#define BOOST_FUSION_MAKE_COPY_CONSTRUCTOR(NAME, ATTRIBUTES_SEQ) \
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
NAME(BOOST_PP_SEQ_FOR_EACH_I( \
BOOST_FUSION_MAKE_CONST_REF_PARAM, \
~, \
Expand Down Expand Up @@ -113,7 +114,7 @@
struct deref<SPEC_TYPE, N> > \
{ \
typedef typename boost_fusion_detail_Sq::t##N##_type TYPE_QUAL& type; \
BOOST_FUSION_GPU_ENABLED \
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
static type call(CALL_ARG_TYPE, N> const& iter) \
{ \
return iter.seq_.BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE); \
Expand Down Expand Up @@ -163,7 +164,7 @@
typename boost_fusion_detail_Sq::t##N##_type& \
>::type type; \
\
BOOST_FUSION_GPU_ENABLED \
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
static type call(boost_fusion_detail_Sq& sq) \
{ \
return sq. BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE); \
Expand Down Expand Up @@ -208,7 +209,7 @@
result_raw_type \
>::type type; \
\
BOOST_FUSION_GPU_ENABLED \
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
static type call(iterator_raw_type const& iter) \
{ \
return boost::fusion::at_c<index>(iter.ref_vec); \
Expand Down Expand Up @@ -336,7 +337,7 @@
typedef boost::mpl::int_<N> index; \
typedef boost_fusion_detail_Seq sequence_type; \
\
BOOST_FUSION_GPU_ENABLED \
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
BOOST_FUSION_ITERATOR_NAME(NAME)(boost_fusion_detail_Seq& seq) \
: seq_(seq) \
BOOST_FUSION_DEFINE_ITERATOR_WKND_INIT_LIST_ENTRIES( \
Expand All @@ -359,7 +360,7 @@
boost_fusion_detail_It::index::value + 1 \
> type; \
\
BOOST_FUSION_GPU_ENABLED \
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
static type call(boost_fusion_detail_It const& it) \
{ \
return type(it.seq_); \
Expand All @@ -374,7 +375,7 @@
boost_fusion_detail_It::index::value - 1 \
> type; \
\
BOOST_FUSION_GPU_ENABLED \
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
static type call(boost_fusion_detail_It const& it) \
{ \
return type(it.seq_); \
Expand All @@ -392,7 +393,7 @@
typename boost_fusion_detail_It1::index \
>::type type; \
\
BOOST_FUSION_GPU_ENABLED \
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
static type call(boost_fusion_detail_It1 const& /* it1 */, \
boost_fusion_detail_It2 const& /* it2 */) \
{ \
Expand All @@ -412,7 +413,7 @@
+ boost_fusion_detail_M::value \
> type; \
\
BOOST_FUSION_GPU_ENABLED \
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
static type call(boost_fusion_detail_It const& it) \
{ \
return type(it.seq_); \
Expand Down Expand Up @@ -445,14 +446,14 @@
(NAME, ATTRIBUTES_SEQ) \
\
template <typename boost_fusion_detail_Seq> \
BOOST_FUSION_GPU_ENABLED \
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
NAME(const boost_fusion_detail_Seq& rhs) \
{ \
boost::fusion::copy(rhs, *this); \
} \
\
template <typename boost_fusion_detail_Seq> \
BOOST_FUSION_GPU_ENABLED \
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
NAME& operator=(const boost_fusion_detail_Seq& rhs) \
{ \
boost::fusion::copy(rhs, *this); \
Expand All @@ -465,7 +466,7 @@
typedef BOOST_FUSION_ITERATOR_NAME(NAME)<boost_fusion_detail_Sq, 0> \
type; \
\
BOOST_FUSION_GPU_ENABLED \
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
static type call(boost_fusion_detail_Sq& sq) \
{ \
return type(sq); \
Expand All @@ -480,7 +481,7 @@
ATTRIBUTES_SEQ_SIZE \
> type; \
\
BOOST_FUSION_GPU_ENABLED \
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
static type call(boost_fusion_detail_Sq& sq) \
{ \
return type(sq); \
Expand Down
5 changes: 2 additions & 3 deletions include/boost/fusion/adapted/struct/detail/deref_impl.hpp
Expand Up @@ -28,9 +28,8 @@ namespace boost { namespace fusion { namespace extension

typedef typename impl::type type;

BOOST_FUSION_GPU_ENABLED
static
type
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(It const& it)
{
return impl::call(*it.seq);
Expand Down
4 changes: 2 additions & 2 deletions include/boost/fusion/adapted/struct/detail/end_impl.hpp
Expand Up @@ -33,7 +33,7 @@ namespace boost { namespace fusion { namespace extension
>
type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(Seq& seq)
{
Expand All @@ -57,7 +57,7 @@ namespace boost { namespace fusion { namespace extension
>
type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(Seq& seq)
{
Expand Down
2 changes: 1 addition & 1 deletion include/boost/fusion/adapted/struct/detail/proxy_type.hpp
Expand Up @@ -19,7 +19,7 @@
\
struct NAME \
{ \
BOOST_FUSION_GPU_ENABLED \
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
NAME(WRAPPED_TYPE& in_obj) \
: obj(in_obj) \
{} \
Expand Down
8 changes: 4 additions & 4 deletions include/boost/fusion/algorithm/auxiliary/copy.hpp
Expand Up @@ -34,14 +34,14 @@ namespace boost { namespace fusion
typedef typename result_of::end<Seq2>::type end2_type;

template <typename I1, typename I2>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static void
call(I1 const&, I2 const&, mpl::true_)
{
}

template <typename I1, typename I2>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static void
call(I1 const& src, I2 const& dest, mpl::false_)
{
Expand All @@ -50,7 +50,7 @@ namespace boost { namespace fusion
}

template <typename I1, typename I2>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static void
call(I1 const& src, I2 const& dest)
{
Expand All @@ -71,7 +71,7 @@ namespace boost { namespace fusion
}

template <typename Seq1, typename Seq2>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::copy<Seq1 const, Seq2>::type
copy(Seq1 const& src, Seq2& dest)
{
Expand Down
8 changes: 4 additions & 4 deletions include/boost/fusion/algorithm/auxiliary/move.hpp
Expand Up @@ -34,14 +34,14 @@ namespace boost { namespace fusion
typedef typename result_of::end<Seq2>::type end2_type;

template <typename I1, typename I2>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static void
call(I1 const&, I2 const&, mpl::true_)
{
}

template <typename I1, typename I2>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static void
call(I1 const& src, I2 const& dest, mpl::false_)
{
Expand All @@ -50,7 +50,7 @@ namespace boost { namespace fusion
}

template <typename I1, typename I2>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static void
call(I1 const& src, I2 const& dest)
{
Expand All @@ -71,7 +71,7 @@ namespace boost { namespace fusion
}

template <typename Seq1, typename Seq2>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::move<Seq1, Seq2>::type
move(Seq1&& src, Seq2& dest)
{
Expand Down
10 changes: 4 additions & 6 deletions include/boost/fusion/algorithm/iteration/accumulate.hpp
Expand Up @@ -26,9 +26,8 @@ namespace boost { namespace fusion
}

template <typename Sequence, typename State, typename F>
BOOST_FUSION_GPU_ENABLED
inline
typename
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
lazy_enable_if<
traits::is_sequence<Sequence>
, result_of::accumulate<Sequence, State const, F>
Expand All @@ -39,9 +38,8 @@ namespace boost { namespace fusion
}

template <typename Sequence, typename State, typename F>
BOOST_FUSION_GPU_ENABLED
inline
typename
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
lazy_enable_if<
traits::is_sequence<Sequence>
, result_of::accumulate<Sequence const, State const, F>
Expand Down
8 changes: 4 additions & 4 deletions include/boost/fusion/algorithm/iteration/accumulate_fwd.hpp
Expand Up @@ -20,17 +20,17 @@ namespace boost { namespace fusion
}

template <typename Sequence, typename State, typename F>
BOOST_FUSION_GPU_ENABLED
typename
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
lazy_enable_if<
traits::is_sequence<Sequence>
, result_of::accumulate<Sequence, State const, F>
>::type
accumulate(Sequence& seq, State const& state, F f);

template <typename Sequence, typename State, typename F>
BOOST_FUSION_GPU_ENABLED
typename
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
lazy_enable_if<
traits::is_sequence<Sequence>
, result_of::accumulate<Sequence const, State const, F>
Expand Down
22 changes: 11 additions & 11 deletions include/boost/fusion/algorithm/iteration/detail/for_each.hpp
Expand Up @@ -21,14 +21,14 @@ namespace boost { namespace fusion {
namespace detail
{
template <typename First, typename Last, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline void
for_each_linear(First const&, Last const&, F const&, mpl::true_)
{
}

template <typename First, typename Last, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline void
for_each_linear(First const& first, Last const& last, F const& f, mpl::false_)
{
Expand All @@ -39,7 +39,7 @@ namespace detail


template <typename Sequence, typename F, typename Tag>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline void
for_each_dispatch(Sequence& seq, F const& f, Tag)
{
Expand All @@ -56,7 +56,7 @@ namespace detail
struct for_each_unrolled
{
template<typename I0, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static void call(I0 const& i0, F const& f)
{
f(*i0);
Expand All @@ -77,7 +77,7 @@ namespace detail
struct for_each_unrolled<3>
{
template<typename I0, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static void call(I0 const& i0, F const& f)
{
f(*i0);
Expand All @@ -94,7 +94,7 @@ namespace detail
struct for_each_unrolled<2>
{
template<typename I0, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static void call(I0 const& i0, F const& f)
{
f(*i0);
Expand All @@ -108,7 +108,7 @@ namespace detail
struct for_each_unrolled<1>
{
template<typename I0, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static void call(I0 const& i0, F const& f)
{
f(*i0);
Expand All @@ -119,14 +119,14 @@ namespace detail
struct for_each_unrolled<0>
{
template<typename It, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static void call(It const&, F const&)
{
}
};

template <typename Sequence, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline void
for_each_dispatch(Sequence& seq, F const& f, random_access_traversal_tag)
{
Expand All @@ -136,7 +136,7 @@ namespace detail
}

template <typename Sequence, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline void
for_each(Sequence& seq, F const& f, mpl::false_) // unsegmented implementation
{
Expand Down
Expand Up @@ -16,7 +16,7 @@ namespace boost { namespace fusion { namespace detail
template <typename Fun>
struct segmented_fold_fun
{
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
explicit segmented_fold_fun(Fun const& f)
: fun(f)
{}
Expand All @@ -29,7 +29,7 @@ namespace boost { namespace fusion { namespace detail
typedef typename result_of::fold<Sequence, State, Fun>::type type;
typedef mpl::true_ continue_type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type call(Sequence& seq, State const& state, Context const&, segmented_fold_fun const& fun)
{
return fusion::fold(seq, state, fun.fun);
Expand All @@ -52,7 +52,7 @@ namespace boost { namespace fusion { namespace detail
>::type
type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type call(State& state, Sequence& seq, Fun fun)
{
return fusion::segmented_fold_until(seq, state, segmented_fold_fun<Fun>(fun));
Expand Down
Expand Up @@ -18,7 +18,7 @@ namespace boost { namespace fusion { namespace detail
template <typename Fun>
struct segmented_for_each_fun
{
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
explicit segmented_for_each_fun(Fun const& f)
: fun(f)
{}
Expand All @@ -31,7 +31,7 @@ namespace boost { namespace fusion { namespace detail
typedef void_ type;
typedef mpl::true_ continue_type;

BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type call(Sequence& seq, State const&, Context const&, segmented_for_each_fun const& fun)
{
fusion::for_each(seq, fun.fun);
Expand All @@ -41,7 +41,7 @@ namespace boost { namespace fusion { namespace detail
};

template <typename Sequence, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline void
for_each(Sequence& seq, F const& f, mpl::true_) // segmented implementation
{
Expand Down
10 changes: 4 additions & 6 deletions include/boost/fusion/algorithm/iteration/for_each.hpp
Expand Up @@ -27,9 +27,8 @@ namespace boost { namespace fusion
}

template <typename Sequence, typename F>
BOOST_FUSION_GPU_ENABLED
inline
typename
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
enable_if<
traits::is_sequence<Sequence>
, void
Expand All @@ -40,9 +39,8 @@ namespace boost { namespace fusion
}

template <typename Sequence, typename F>
BOOST_FUSION_GPU_ENABLED
inline
typename
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
enable_if<
traits::is_sequence<Sequence>
, void
Expand Down
10 changes: 4 additions & 6 deletions include/boost/fusion/algorithm/iteration/for_each_fwd.hpp
Expand Up @@ -20,19 +20,17 @@ namespace boost { namespace fusion
}

template <typename Sequence, typename F>
BOOST_FUSION_GPU_ENABLED
inline
typename
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
enable_if<
traits::is_sequence<Sequence>
, void
>::type
for_each(Sequence& seq, F const& f);

template <typename Sequence, typename F>
BOOST_FUSION_GPU_ENABLED
inline
typename
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
enable_if<
traits::is_sequence<Sequence>
, void
Expand Down
2 changes: 1 addition & 1 deletion include/boost/fusion/algorithm/query/all.hpp
Expand Up @@ -24,7 +24,7 @@ namespace boost { namespace fusion
}

template <typename Sequence, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline bool
all(Sequence const& seq, F f)
{
Expand Down
2 changes: 1 addition & 1 deletion include/boost/fusion/algorithm/query/any.hpp
Expand Up @@ -25,7 +25,7 @@ namespace boost { namespace fusion
}

template <typename Sequence, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline bool
any(Sequence const& seq, F f)
{
Expand Down
5 changes: 2 additions & 3 deletions include/boost/fusion/algorithm/query/count.hpp
Expand Up @@ -26,9 +26,8 @@ namespace boost { namespace fusion
}

template <typename Sequence, typename T>
BOOST_FUSION_GPU_ENABLED
inline
typename
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
enable_if<
traits::is_sequence<Sequence>
, int
Expand Down
5 changes: 2 additions & 3 deletions include/boost/fusion/algorithm/query/count_if.hpp
Expand Up @@ -26,9 +26,8 @@ namespace boost { namespace fusion
}

template <typename Sequence, typename F>
BOOST_FUSION_GPU_ENABLED
inline
typename
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
enable_if<
traits::is_sequence<Sequence>
, int
Expand Down
32 changes: 16 additions & 16 deletions include/boost/fusion/algorithm/query/detail/all.hpp
Expand Up @@ -21,20 +21,20 @@
namespace boost { namespace fusion { namespace detail
{
template <typename First, typename Last, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline bool
linear_all(First const&, Last const&, F const&, mpl::true_)
{
return true;
}

template <typename First, typename Last, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline bool
linear_all(First const& first, Last const& last, F& f, mpl::false_)
{
typename result_of::deref<First>::type x = *first;
return f(x) &&
return f(x) &&
detail::linear_all(
fusion::next(first)
, last
Expand All @@ -43,7 +43,7 @@ namespace boost { namespace fusion { namespace detail
}

template <typename Sequence, typename F, typename Tag>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline bool
all(Sequence const& seq, F f, Tag)
{
Expand All @@ -60,11 +60,11 @@ namespace boost { namespace fusion { namespace detail
struct unrolled_all
{
template <typename It, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static bool call(It const& it, F f)
{
return
f(*it) &&
return
f(*it) &&
f(*fusion::advance_c<1>(it))&&
f(*fusion::advance_c<2>(it)) &&
f(*fusion::advance_c<3>(it)) &&
Expand All @@ -76,11 +76,11 @@ namespace boost { namespace fusion { namespace detail
struct unrolled_all<3>
{
template <typename It, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static bool call(It const& it, F f)
{
return
f(*it) &&
return
f(*it) &&
f(*fusion::advance_c<1>(it)) &&
f(*fusion::advance_c<2>(it));
}
Expand All @@ -90,11 +90,11 @@ namespace boost { namespace fusion { namespace detail
struct unrolled_all<2>
{
template <typename It, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static bool call(It const& it, F f)
{
return
f(*it) &&
return
f(*it) &&
f(*fusion::advance_c<1>(it));
}
};
Expand All @@ -103,7 +103,7 @@ namespace boost { namespace fusion { namespace detail
struct unrolled_all<1>
{
template <typename It, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static bool call(It const& it, F f)
{
return f(*it);
Expand All @@ -114,15 +114,15 @@ namespace boost { namespace fusion { namespace detail
struct unrolled_all<0>
{
template <typename It, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static bool call(It const& /*it*/, F /*f*/)
{
return true;
}
};

template <typename Sequence, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline bool
all(Sequence const& seq, F f, random_access_traversal_tag)
{
Expand Down
32 changes: 16 additions & 16 deletions include/boost/fusion/algorithm/query/detail/any.hpp
Expand Up @@ -24,20 +24,20 @@ namespace boost { namespace fusion {
namespace detail
{
template <typename First, typename Last, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline bool
linear_any(First const&, Last const&, F const&, mpl::true_)
{
return false;
}

template <typename First, typename Last, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline bool
linear_any(First const& first, Last const& last, F& f, mpl::false_)
{
typename result_of::deref<First>::type x = *first;
return f(x) ||
return f(x) ||
detail::linear_any(
fusion::next(first)
, last
Expand All @@ -46,7 +46,7 @@ namespace detail
}

template <typename Sequence, typename F, typename Tag>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline bool
any(Sequence const& seq, F f, Tag)
{
Expand All @@ -63,11 +63,11 @@ namespace detail
struct unrolled_any
{
template <typename It, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static bool call(It const& it, F f)
{
return
f(*it) ||
return
f(*it) ||
f(*fusion::advance_c<1>(it))||
f(*fusion::advance_c<2>(it)) ||
f(*fusion::advance_c<3>(it)) ||
Expand All @@ -79,11 +79,11 @@ namespace detail
struct unrolled_any<3>
{
template <typename It, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static bool call(It const& it, F f)
{
return
f(*it) ||
return
f(*it) ||
f(*fusion::advance_c<1>(it)) ||
f(*fusion::advance_c<2>(it));
}
Expand All @@ -93,11 +93,11 @@ namespace detail
struct unrolled_any<2>
{
template <typename It, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static bool call(It const& it, F f)
{
return
f(*it) ||
return
f(*it) ||
f(*fusion::advance_c<1>(it));
}
};
Expand All @@ -106,7 +106,7 @@ namespace detail
struct unrolled_any<1>
{
template <typename It, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static bool call(It const& it, F f)
{
return f(*it);
Expand All @@ -117,15 +117,15 @@ namespace detail
struct unrolled_any<0>
{
template <typename It, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static bool call(It const&, F)
{
return false;
}
};

template <typename Sequence, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline bool
any(Sequence const& seq, F f, random_access_traversal_tag)
{
Expand Down
14 changes: 7 additions & 7 deletions include/boost/fusion/algorithm/query/detail/count.hpp
Expand Up @@ -25,10 +25,10 @@ namespace boost { namespace fusion { namespace detail

// T1 is convertible to T2 or vice versa
template <>
struct compare_convertible<true>
struct compare_convertible<true>
{
template <typename T1, typename T2>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static bool
call(T1 const& x, T2 const& y)
{
Expand All @@ -41,7 +41,7 @@ namespace boost { namespace fusion { namespace detail
struct compare_convertible<false>
{
template <typename T1, typename T2>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static bool
call(T1 const&, T2 const&)
{
Expand All @@ -53,16 +53,16 @@ namespace boost { namespace fusion { namespace detail
struct count_compare
{
typedef typename detail::call_param<T1>::type param;
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
count_compare(param in_x)
: x(in_x) {}

template <typename T2>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
bool
operator()(T2 const& y)
operator()(T2 const& y) const
{
return
return
compare_convertible<
mpl::or_<
is_convertible<T1, T2>
Expand Down
20 changes: 10 additions & 10 deletions include/boost/fusion/algorithm/query/detail/count_if.hpp
Expand Up @@ -24,19 +24,19 @@ namespace boost { namespace fusion {
namespace detail
{
template <typename First, typename Last, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline int
linear_count_if(First const&, Last const&, F const&, mpl::true_)
{
return 0;
}

template <typename First, typename Last, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline int
linear_count_if(First const& first, Last const& last, F& f, mpl::false_)
{
int n =
int n =
detail::linear_count_if(
fusion::next(first)
, last
Expand All @@ -48,7 +48,7 @@ namespace detail
}

template <typename Sequence, typename F, typename Tag>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline int
count_if(Sequence const& seq, F f, Tag)
{
Expand All @@ -65,7 +65,7 @@ namespace detail
struct unrolled_count_if
{
template<typename I0, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static int call(I0 const& i0, F f)
{
int ct = unrolled_count_if<n-4>::
Expand Down Expand Up @@ -96,7 +96,7 @@ namespace detail
struct unrolled_count_if<3>
{
template<typename I0, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static int call(I0 const& i0, F f)
{
int ct = 0;
Expand All @@ -121,7 +121,7 @@ namespace detail
struct unrolled_count_if<2>
{
template<typename I0, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static int call(I0 const& i0, F f)
{
int ct = 0;
Expand All @@ -142,7 +142,7 @@ namespace detail
struct unrolled_count_if<1>
{
template<typename I0, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static int call(I0 const& i0, F f)
{
int ct = 0;
Expand All @@ -157,15 +157,15 @@ namespace detail
struct unrolled_count_if<0>
{
template<typename I0, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static int call(I0 const&, F)
{
return 0;
}
};

template <typename Sequence, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline int
count_if(Sequence const& seq, F f, random_access_traversal_tag)
{
Expand Down
14 changes: 7 additions & 7 deletions include/boost/fusion/algorithm/query/detail/find_if.hpp
Expand Up @@ -184,23 +184,23 @@ namespace detail
type;

template <typename Iterator>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
recursive_call(Iterator const& iter, mpl::true_)
{
return iter;
}

template <typename Iterator>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
recursive_call(Iterator const& iter, mpl::false_)
{
return recursive_call(fusion::next(iter));
}

template <typename Iterator>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
recursive_call(Iterator const& iter)
{
Expand All @@ -209,15 +209,15 @@ namespace detail
}

template <typename Iterator, typename Tag>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
choose_call(Iterator const& iter, Tag)
{
return recursive_call(iter);
}

template <typename Iterator>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
choose_call(Iterator const& iter, random_access_traversal_tag)
{
Expand All @@ -226,15 +226,15 @@ namespace detail
}

template <typename Iterator>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
iter_call(Iterator const& iter)
{
return choose_call(iter, typename traits::category_of<Iterator>::type());
}

template <typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(Sequence& seq)
{
Expand Down
Expand Up @@ -45,19 +45,19 @@ namespace boost { namespace fusion { namespace detail
>::type
type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type call(Sequence& seq, State const&state, Context const& context, segmented_find_fun)
{
return call_impl(seq, state, context, continue_type());
}

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type call_impl(Sequence&, State const&state, Context const&, mpl::true_)
{
return state;
}

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type call_impl(Sequence& seq, State const&, Context const& context, mpl::false_)
{
return fusion::make_segmented_iterator(fusion::find<T>(seq), context);
Expand All @@ -78,7 +78,7 @@ namespace boost { namespace fusion { namespace detail
>::type
type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type call(Sequence& seq)
{
return fusion::segmented_fold_until(
Expand Down
Expand Up @@ -45,19 +45,19 @@ namespace boost { namespace fusion { namespace detail
>::type
type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type call(Sequence& seq, State const&state, Context const& context, segmented_find_if_fun)
{
return call_impl(seq, state, context, continue_type());
}

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type call_impl(Sequence&, State const&state, Context const&, mpl::true_)
{
return state;
}

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type call_impl(Sequence& seq, State const&, Context const& context, mpl::false_)
{
return fusion::make_segmented_iterator(fusion::find_if<Pred>(seq), context);
Expand All @@ -78,7 +78,7 @@ namespace boost { namespace fusion { namespace detail
>::type
type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type call(Sequence& seq)
{
return fusion::segmented_fold_until(
Expand Down
6 changes: 3 additions & 3 deletions include/boost/fusion/algorithm/query/find.hpp
Expand Up @@ -47,8 +47,8 @@ namespace boost { namespace fusion
}

template <typename T, typename Sequence>
BOOST_FUSION_GPU_ENABLED
inline typename
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
lazy_disable_if<
is_const<Sequence>
, result_of::find<Sequence, T>
Expand All @@ -60,7 +60,7 @@ namespace boost { namespace fusion
}

template <typename T, typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::find<Sequence const, T>::type const
find(Sequence const& seq)
{
Expand Down
6 changes: 3 additions & 3 deletions include/boost/fusion/algorithm/query/find_fwd.hpp
Expand Up @@ -20,16 +20,16 @@ namespace boost { namespace fusion
}

template <typename T, typename Sequence>
BOOST_FUSION_GPU_ENABLED
inline typename
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
lazy_disable_if<
is_const<Sequence>
, result_of::find<Sequence, T>
>::type const
find(Sequence& seq);

template <typename T, typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::find<Sequence const, T>::type const
find(Sequence const& seq);
}}
Expand Down
6 changes: 3 additions & 3 deletions include/boost/fusion/algorithm/query/find_if.hpp
Expand Up @@ -42,8 +42,8 @@ namespace boost { namespace fusion
}

template <typename Pred, typename Sequence>
BOOST_FUSION_GPU_ENABLED
inline typename
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
lazy_disable_if<
is_const<Sequence>
, result_of::find_if<Sequence, Pred>
Expand All @@ -55,7 +55,7 @@ namespace boost { namespace fusion
}

template <typename Pred, typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::find_if<Sequence const, Pred>::type const
find_if(Sequence const& seq)
{
Expand Down
4 changes: 2 additions & 2 deletions include/boost/fusion/algorithm/query/find_if_fwd.hpp
Expand Up @@ -21,7 +21,7 @@ namespace boost { namespace fusion
}

template <typename Pred, typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
lazy_disable_if<
is_const<Sequence>
Expand All @@ -30,7 +30,7 @@ namespace boost { namespace fusion
find_if(Sequence& seq);

template <typename Pred, typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::find_if<Sequence const, Pred>::type const
find_if(Sequence const& seq);
}}
Expand Down
2 changes: 1 addition & 1 deletion include/boost/fusion/algorithm/query/none.hpp
Expand Up @@ -23,7 +23,7 @@ namespace boost { namespace fusion
}

template <typename Sequence, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline bool
none(Sequence const& seq, F f)
{
Expand Down
2 changes: 1 addition & 1 deletion include/boost/fusion/algorithm/transformation/clear.hpp
Expand Up @@ -22,7 +22,7 @@ namespace boost { namespace fusion
}

template <typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::clear<Sequence const>::type
clear(Sequence const& /*seq*/)
{
Expand Down
10 changes: 5 additions & 5 deletions include/boost/fusion/algorithm/transformation/detail/replace.hpp
Expand Up @@ -21,7 +21,7 @@ namespace boost { namespace fusion { namespace detail
struct replacer_helper<false>
{
template <typename U, typename T>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static U&
call(U& x, T const&, T const&)
{
Expand All @@ -33,7 +33,7 @@ namespace boost { namespace fusion { namespace detail
struct replacer_helper<true>
{
template <typename U, typename T>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static U
call(U& x, T const& old_value, T const& new_value)
{
Expand All @@ -44,7 +44,7 @@ namespace boost { namespace fusion { namespace detail
template <typename T>
struct replacer
{
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
replacer(T const& in_old_value, T const& in_new_value)
: old_value(in_old_value), new_value(in_new_value) {}

Expand All @@ -59,9 +59,9 @@ namespace boost { namespace fusion { namespace detail
mpl::if_<is_convertible<T, value>, value, value const&>::type
type;
};

template <typename U>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
typename result<replacer(U)>::type
operator()(U const& x) const
{
Expand Down
Expand Up @@ -21,7 +21,7 @@ namespace boost { namespace fusion { namespace detail
struct replacer_if_helper<false>
{
template <typename U, typename F, typename T>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static U&
call(U& x, F&, T const&)
{
Expand All @@ -33,7 +33,7 @@ namespace boost { namespace fusion { namespace detail
struct replacer_if_helper<true>
{
template <typename U, typename F, typename T>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static U
call(U& x, F& f, T const& new_value)
{
Expand All @@ -44,7 +44,7 @@ namespace boost { namespace fusion { namespace detail
template <typename F, typename T>
struct replacer_if
{
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
replacer_if(F in_f, T const& in_new_value)
: f(in_f), new_value(in_new_value) {}

Expand All @@ -59,9 +59,9 @@ namespace boost { namespace fusion { namespace detail
mpl::if_<is_convertible<T, value>, value, value const&>::type
type;
};

template <typename U>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
typename result<replacer_if(U)>::type
operator()(U const& x) const
{
Expand Down
16 changes: 8 additions & 8 deletions include/boost/fusion/algorithm/transformation/erase.hpp
Expand Up @@ -38,21 +38,21 @@ namespace boost { namespace fusion
>::type
type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(First const& first, mpl::false_)
{
return fusion::next(convert_iterator<First>::call(first));
}

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(First const& first, mpl::true_)
{
return convert_iterator<First>::call(first);
}

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(First const& first)
{
Expand All @@ -61,7 +61,7 @@ namespace boost { namespace fusion
};

struct use_default;

template <class T, class Default>
struct fusion_default_help
: mpl::if_<
Expand All @@ -71,7 +71,7 @@ namespace boost { namespace fusion
>
{
};

template <
typename Sequence
, typename First
Expand All @@ -89,7 +89,7 @@ namespace boost { namespace fusion
, typename compute_erase_last<Sequence, First>::type
>::type
LastType;

typedef typename convert_iterator<FirstType>::type first_type;
typedef typename convert_iterator<LastType>::type last_type;
typedef iterator_range<seq_first_type, first_type> left_type;
Expand All @@ -99,7 +99,7 @@ namespace boost { namespace fusion
}

template <typename Sequence, typename First>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
lazy_enable_if<
traits::is_sequence<Sequence>
Expand All @@ -122,7 +122,7 @@ namespace boost { namespace fusion
}

template <typename Sequence, typename First, typename Last>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::erase<Sequence const, First, Last>::type
erase(Sequence const& seq, First const& first, Last const& last)
{
Expand Down
Expand Up @@ -24,7 +24,7 @@ namespace boost { namespace fusion
}

template <typename Key, typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::erase_key<Sequence const, Key>::type
erase_key(Sequence const& seq)
{
Expand Down
4 changes: 2 additions & 2 deletions include/boost/fusion/algorithm/transformation/filter.hpp
Expand Up @@ -22,9 +22,9 @@ namespace boost { namespace fusion
typedef filter_view<Sequence, is_same<mpl::_, T> > type;
};
}

template <typename T, typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::filter<Sequence const, T>::type
filter(Sequence const& seq)
{
Expand Down
4 changes: 2 additions & 2 deletions include/boost/fusion/algorithm/transformation/filter_if.hpp
Expand Up @@ -20,9 +20,9 @@ namespace boost { namespace fusion
typedef filter_view<Sequence, Pred> type;
};
}

template <typename Pred, typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::filter_if<Sequence const, Pred>::type
filter_if(Sequence const& seq)
{
Expand Down
4 changes: 3 additions & 1 deletion include/boost/fusion/algorithm/transformation/flatten.hpp
Expand Up @@ -25,13 +25,15 @@ namespace boost { namespace fusion { namespace result_of
namespace boost { namespace fusion
{
template <typename Sequence>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::flatten<Sequence>::type
flatten(Sequence& view)
{
return flatten_view<Sequence>(view);
}

template <typename Sequence>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::flatten<Sequence const>::type
flatten(Sequence const& view)
{
Expand Down
5 changes: 2 additions & 3 deletions include/boost/fusion/algorithm/transformation/insert.hpp
Expand Up @@ -41,9 +41,8 @@ namespace boost { namespace fusion
}

template <typename Sequence, typename Position, typename T>
BOOST_FUSION_GPU_ENABLED
inline
typename
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
lazy_enable_if<
traits::is_sequence<Sequence>
, result_of::insert<Sequence const, Position, T>
Expand Down
Expand Up @@ -36,7 +36,7 @@ namespace boost { namespace fusion
}

template <typename Sequence, typename Position, typename Range>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::insert_range<Sequence const, Position, Range const>::type
insert_range(Sequence const& seq, Position const& pos, Range const& range)
{
Expand Down
2 changes: 1 addition & 1 deletion include/boost/fusion/algorithm/transformation/join.hpp
Expand Up @@ -23,7 +23,7 @@ namespace boost { namespace fusion {
}

template<typename LhSequence, typename RhSequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::join<LhSequence const, RhSequence const>::type
join(LhSequence const& lhs, RhSequence const& rhs)
{
Expand Down
10 changes: 5 additions & 5 deletions include/boost/fusion/algorithm/transformation/pop_back.hpp
Expand Up @@ -33,7 +33,7 @@ namespace boost { namespace fusion

static bool const is_last = IsLast;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
pop_back_iterator(Iterator_ const& iterator_base)
: base_type(iterator_base) {}

Expand All @@ -42,7 +42,7 @@ namespace boost { namespace fusion
{
typedef pop_back_iterator<BaseIterator, is_last> type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(BaseIterator const& i)
{
Expand Down Expand Up @@ -94,7 +94,7 @@ namespace boost { namespace fusion

typedef pop_back_iterator<base_prior, false> type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(Iterator const& i)
{
Expand All @@ -116,7 +116,7 @@ namespace boost { namespace fusion

typedef pop_back_iterator<base_prior, false> type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(Iterator const& i)
{
Expand Down Expand Up @@ -152,7 +152,7 @@ namespace boost { namespace fusion
}

template <typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::pop_back<Sequence const>::type
pop_back(Sequence const& seq)
{
Expand Down
6 changes: 3 additions & 3 deletions include/boost/fusion/algorithm/transformation/pop_front.hpp
Expand Up @@ -20,19 +20,19 @@ namespace boost { namespace fusion
template <typename Sequence>
struct pop_front
{
typedef
typedef
iterator_range<
typename next<
typename begin<Sequence>::type
>::type
, typename end<Sequence>::type
>
>
type;
};
}

template <typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::pop_front<Sequence const>::type
pop_front(Sequence const& seq)
{
Expand Down
5 changes: 2 additions & 3 deletions include/boost/fusion/algorithm/transformation/push_back.hpp
Expand Up @@ -27,9 +27,8 @@ namespace boost { namespace fusion
}

template <typename Sequence, typename T>
BOOST_FUSION_GPU_ENABLED
inline
typename
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
lazy_enable_if<
traits::is_sequence<Sequence>
, result_of::push_back<Sequence const, T>
Expand Down
5 changes: 2 additions & 3 deletions include/boost/fusion/algorithm/transformation/push_front.hpp
Expand Up @@ -27,9 +27,8 @@ namespace boost { namespace fusion
}

template <typename Sequence, typename T>
BOOST_FUSION_GPU_ENABLED
inline
typename
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
lazy_enable_if<
traits::is_sequence<Sequence>
, result_of::push_front<Sequence const, T>
Expand Down
2 changes: 1 addition & 1 deletion include/boost/fusion/algorithm/transformation/remove.hpp
Expand Up @@ -24,7 +24,7 @@ namespace boost { namespace fusion
}

template <typename T, typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::remove<Sequence const, T>::type
remove(Sequence const& seq)
{
Expand Down
Expand Up @@ -24,7 +24,7 @@ namespace boost { namespace fusion
}

template <typename Pred, typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::remove_if<Sequence const, Pred>::type
remove_if(Sequence const& seq)
{
Expand Down
5 changes: 2 additions & 3 deletions include/boost/fusion/algorithm/transformation/replace.hpp
Expand Up @@ -25,9 +25,8 @@ namespace boost { namespace fusion
}

template <typename Sequence, typename T>
BOOST_FUSION_GPU_ENABLED
inline
typename
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
enable_if<
traits::is_sequence<Sequence>
, typename result_of::replace<Sequence const, T>::type
Expand Down
5 changes: 2 additions & 3 deletions include/boost/fusion/algorithm/transformation/replace_if.hpp
Expand Up @@ -26,9 +26,8 @@ namespace boost { namespace fusion
}

template <typename Sequence, typename F, typename T>
BOOST_FUSION_GPU_ENABLED
inline
typename
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
enable_if<
traits::is_sequence<Sequence>
, typename result_of::replace_if<Sequence const, F, T>::type
Expand Down
5 changes: 2 additions & 3 deletions include/boost/fusion/algorithm/transformation/reverse.hpp
Expand Up @@ -24,9 +24,8 @@ namespace boost { namespace fusion
}

template <typename Sequence>
BOOST_FUSION_GPU_ENABLED
inline
typename
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
enable_if<
traits::is_sequence<Sequence>
, reverse_view<Sequence const>
Expand Down
4 changes: 2 additions & 2 deletions include/boost/fusion/algorithm/transformation/transform.hpp
Expand Up @@ -34,15 +34,15 @@ namespace boost { namespace fusion
}

template <typename Sequence, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::transform<Sequence const, F>::type
transform(Sequence const& seq, F f)
{
return transform_view<Sequence const, F>(seq, f);
}

template <typename Sequence1, typename Sequence2, typename F>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::transform<Sequence1 const, Sequence2 const, F>::type
transform(Sequence1 const& seq1, Sequence2 const& seq2, F f)
{
Expand Down
2 changes: 1 addition & 1 deletion include/boost/fusion/algorithm/transformation/zip.hpp
Expand Up @@ -101,7 +101,7 @@ namespace boost { namespace fusion
#define FUSION_REF_PARAM(z, n, data) const T ## n&

template<BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, typename T)>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::zip<BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, const T)>::type
zip(BOOST_PP_ENUM_BINARY_PARAMS(ZIP_ITERATION, T, const& t))
{
Expand Down
7 changes: 4 additions & 3 deletions include/boost/fusion/container/deque/back_extended_deque.hpp
Expand Up @@ -8,6 +8,7 @@
#if !defined(BOOST_FUSION_BACK_EXTENDED_DEQUE_26112006_2209)
#define BOOST_FUSION_BACK_EXTENDED_DEQUE_26112006_2209

#include <boost/config.hpp>
#include <boost/fusion/support/config.hpp>
#include <boost/mpl/int.hpp>

Expand All @@ -28,20 +29,20 @@ namespace boost { namespace fusion
typedef mpl::int_<(result_of::size<Deque>::value + 1)> size;

template <typename Arg>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
back_extended_deque(Deque const& deque, Arg const& val)
: base(val, deque)
{}

#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
template <typename Arg>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
back_extended_deque(Deque const& deque, Arg& val)
: base(val, deque)
{}
#else
template <typename Arg>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
back_extended_deque(Deque const& deque, Arg&& val)
: base(BOOST_FUSION_FWD_ELEM(Arg, val), deque)
{}
Expand Down
4 changes: 2 additions & 2 deletions include/boost/fusion/container/deque/convert.hpp
Expand Up @@ -39,7 +39,7 @@ namespace boost { namespace fusion
}

template <typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::as_deque<Sequence>::type
as_deque(Sequence& seq)
{
Expand All @@ -48,7 +48,7 @@ namespace boost { namespace fusion
}

template <typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::as_deque<Sequence const>::type
as_deque(Sequence const& seq)
{
Expand Down
34 changes: 17 additions & 17 deletions include/boost/fusion/container/deque/deque.hpp
Expand Up @@ -54,16 +54,16 @@ namespace boost { namespace fusion
typedef mpl::false_ is_view;

template <typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque(Sequence const&,
typename enable_if<
mpl::and_<
traits::is_sequence<Sequence>
, result_of::empty<Sequence>>>::type* /*dummy*/ = 0)
, result_of::empty<Sequence>>>::type* /*dummy*/ = 0) BOOST_NOEXCEPT
{}

BOOST_FUSION_GPU_ENABLED
deque() {}
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque() BOOST_NOEXCEPT {}
};

template <typename Head, typename ...Tail>
Expand All @@ -79,22 +79,22 @@ namespace boost { namespace fusion
typedef mpl::int_<-1> next_down;
typedef mpl::false_ is_view;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque()
{}

template <typename Head_, typename ...Tail_, typename =
typename enable_if<is_convertible<Head_, Head> >::type
>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque(deque<Head_, Tail_...> const& seq)
: base(seq)
{}

template <typename Head_, typename ...Tail_, typename =
typename enable_if<is_convertible<Head_, Head> >::type
>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque(deque<Head_, Tail_...>& seq)
: base(seq)
{}
Expand All @@ -103,25 +103,25 @@ namespace boost { namespace fusion
template <typename Head_, typename ...Tail_, typename =
typename enable_if<is_convertible<Head_, Head> >::type
>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque(deque<Head_, Tail_...>&& seq)
: base(std::forward<deque<Head_, Tail_...>>(seq))
{}
#endif

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque(deque const& seq)
: base(seq)
{}

#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque(deque&& seq)
: base(std::forward<deque>(seq))
{}
#endif

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
explicit deque(typename detail::call_param<Head>::type head
, typename detail::call_param<Tail>::type... tail)
: base(detail::deque_keyed_values<Head, Tail...>::construct(head, tail...))
Expand All @@ -131,7 +131,7 @@ namespace boost { namespace fusion
template <typename Head_, typename ...Tail_, typename =
typename enable_if<is_convertible<Head_, Head> >::type
>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
explicit deque(Head_&& head, Tail_&&... tail)
: base(detail::deque_keyed_values<Head, Tail...>
::forward_(BOOST_FUSION_FWD_ELEM(Head_, head), BOOST_FUSION_FWD_ELEM(Tail_, tail)...))
Expand All @@ -140,29 +140,29 @@ namespace boost { namespace fusion
template <typename Head_, typename ...Tail_, typename =
typename enable_if<is_convertible<Head_, Head> >::type
>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR 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>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
explicit deque(Sequence const& seq
, typename disable_if<is_convertible<Sequence, Head> >::type* /*dummy*/ = 0)
: base(base::from_iterator(fusion::begin(seq)))
{}

template <typename ...Elements>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque& operator=(deque<Elements...> const& rhs)
{
base::operator=(rhs);
return *this;
}

template <typename T>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque& operator=(T const& rhs)
{
base::operator=(rhs);
Expand All @@ -171,7 +171,7 @@ namespace boost { namespace fusion

#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
template <typename T>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque& operator=(T&& rhs)
{
base::operator=(BOOST_FUSION_FWD_ELEM(T, rhs));
Expand Down
8 changes: 4 additions & 4 deletions include/boost/fusion/container/deque/deque_iterator.hpp
Expand Up @@ -31,7 +31,7 @@ namespace boost { namespace fusion {
typedef Seq sequence;
typedef mpl::int_<Pos> index;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque_iterator(Seq& seq)
: seq_(seq)
{}
Expand All @@ -54,7 +54,7 @@ namespace boost { namespace fusion {
add_const<element_type>,
mpl::identity<element_type> >::type>::type type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(Iterator const& it)
{
Expand All @@ -69,7 +69,7 @@ namespace boost { namespace fusion {
typedef typename Iterator::sequence sequence;
typedef deque_iterator<sequence, index::value + N::value> type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(Iterator const& i)
{
Expand All @@ -96,7 +96,7 @@ namespace boost { namespace fusion {
>::type
type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(I1 const&, I2 const&)
{
Expand Down
2 changes: 1 addition & 1 deletion include/boost/fusion/container/deque/detail/at_impl.hpp
Expand Up @@ -54,7 +54,7 @@ namespace boost { namespace fusion
>::type
type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type call(Sequence& seq)
{
return seq.get(adjusted_index());
Expand Down
2 changes: 1 addition & 1 deletion include/boost/fusion/container/deque/detail/begin_impl.hpp
Expand Up @@ -30,7 +30,7 @@ namespace boost { namespace fusion
deque_iterator<Sequence, (Sequence::next_down::value + 1)>
type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type call(Sequence& seq)
{
return type(seq);
Expand Down
6 changes: 3 additions & 3 deletions include/boost/fusion/container/deque/detail/build_deque.hpp
Expand Up @@ -26,7 +26,7 @@ namespace boost { namespace fusion { namespace detail
struct build_deque<First, Last, true>
{
typedef deque<> type;
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(First const&, Last const&)
{
Expand All @@ -42,7 +42,7 @@ namespace boost { namespace fusion { namespace detail
{
typedef deque<T, Rest...> type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(T const& first, deque<Rest...> const& rest)
{
Expand All @@ -64,7 +64,7 @@ namespace boost { namespace fusion { namespace detail

typedef typename push_front::type type;

BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(First const& f, Last const& l)
{
Expand Down
3 changes: 2 additions & 1 deletion include/boost/fusion/container/deque/detail/convert_impl.hpp
Expand Up @@ -37,7 +37,8 @@ namespace boost { namespace fusion
{
typedef result_of::as_deque<Sequence> gen;
typedef typename gen::type type;
BOOST_FUSION_GPU_ENABLED

BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type call(Sequence& seq)
{
return gen::call(seq);
Expand Down
Expand Up @@ -38,7 +38,7 @@ BOOST_FUSION_BARRIER_BEGIN
};

template <typename Iterator>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static typename apply<Iterator>::type
call(Iterator)
{
Expand Down Expand Up @@ -124,7 +124,7 @@ BOOST_FUSION_BARRIER_END
};

template <typename Iterator>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static typename apply<Iterator>::type
call(Iterator const& i0)
{
Expand Down
Expand Up @@ -33,7 +33,7 @@ namespace boost { namespace fusion
}

template <typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::as_deque<Sequence>::type
as_deque(Sequence& seq)
{
Expand All @@ -42,7 +42,7 @@ namespace boost { namespace fusion
}

template <typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::as_deque<Sequence const>::type
as_deque(Sequence const& seq)
{
Expand Down
30 changes: 15 additions & 15 deletions include/boost/fusion/container/deque/detail/cpp03/deque.hpp
Expand Up @@ -79,34 +79,34 @@ namespace boost { namespace fusion {

#include <boost/fusion/container/deque/detail/cpp03/deque_forward_ctor.hpp>

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque()
{}

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
explicit deque(typename detail::call_param<T0>::type t0)
: base(t0, detail::nil_keyed_element())
{}

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
explicit deque(deque const& rhs)
: base(rhs)
{}

template<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, typename U)>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque(deque<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, U)> const& seq)
: base(seq)
{}

template<typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque(Sequence const& seq, typename disable_if<is_convertible<Sequence, T0> >::type* /*dummy*/ = 0)
: base(base::from_iterator(fusion::begin(seq)))
{}

template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, typename U)>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque&
operator=(deque<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, U)> const& rhs)
{
Expand All @@ -115,7 +115,7 @@ namespace boost { namespace fusion {
}

template <typename T>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque&
operator=(T const& rhs)
{
Expand All @@ -129,23 +129,23 @@ FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \
(defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES))
template <typename T0_>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
explicit deque(T0_&& t0
, typename enable_if<is_convertible<T0_, T0> >::type* /*dummy*/ = 0
)
: base(BOOST_FUSION_FWD_ELEM(T0_, t0), detail::nil_keyed_element())
{}
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
explicit deque(deque&& rhs)
: base(std::forward<deque>(rhs))
{}
template<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, typename U)>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque(deque<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, U)>&& seq)
: base(std::forward<deque<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, U)>>(seq))
{}
template <typename T>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque&
operator=(T&& rhs)
{
Expand All @@ -170,16 +170,16 @@ FUSION_HASH endif
typedef mpl::false_ is_view;

template <typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque(Sequence const&,
typename enable_if<
mpl::and_<
traits::is_sequence<Sequence>
, result_of::empty<Sequence> > >::type* /*dummy*/ = 0)
, result_of::empty<Sequence> > >::type* /*dummy*/ = 0) BOOST_NOEXCEPT
{}

BOOST_FUSION_GPU_ENABLED
deque() {}
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque() BOOST_NOEXCEPT {}
};

}}
Expand Down
Expand Up @@ -35,7 +35,7 @@ FUSION_HASH if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
#endif
#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \
(defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES))
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque(BOOST_PP_ENUM_BINARY_PARAMS(N, typename detail::call_param<T, >::type t))
: base(detail::deque_keyed_values<BOOST_PP_ENUM_PARAMS(N, T)>::construct(BOOST_PP_ENUM_PARAMS(N, t)))
{}
Expand All @@ -49,13 +49,13 @@ FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
#endif
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \
(defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES))
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& t))
: base(detail::deque_keyed_values<BOOST_PP_ENUM_PARAMS(N, T)>::construct(BOOST_PP_ENUM_PARAMS(N, t)))
{}

template <BOOST_PP_ENUM_PARAMS(N, typename T_)>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T_, && t))
: base(detail::deque_keyed_values<BOOST_PP_ENUM_PARAMS(N, T)>::
forward_(BOOST_PP_ENUM(N, FUSION_DEQUE_FORWARD_CTOR_FORWARD, _)))
Expand Down
Expand Up @@ -68,13 +68,13 @@ namespace boost { namespace fusion { namespace detail
{
typedef nil_keyed_element type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type construct()
{
return type();
}

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type forward_()
{
return type();
Expand Down
Expand Up @@ -34,7 +34,7 @@

#define N BOOST_PP_ITERATION()

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type construct(BOOST_PP_ENUM_BINARY_PARAMS(N, typename detail::call_param<T, >::type t))
{
return type(t0,
Expand All @@ -52,7 +52,7 @@ FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \
(defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES))
template <BOOST_PP_ENUM_PARAMS(N, typename T_)>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type forward_(BOOST_PP_ENUM_BINARY_PARAMS(N, T_, && t))
{
return type(BOOST_FUSION_FWD_ELEM(T_0, t0),
Expand Down
Expand Up @@ -28,7 +28,7 @@ namespace boost { namespace fusion { namespace detail
typedef typename deque_keyed_values_impl<next_index, Tail...>::type tail;
typedef keyed_element<N, Head, tail> type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type construct(
typename detail::call_param<Head>::type head
, typename detail::call_param<Tail>::type... tail)
Expand All @@ -40,7 +40,7 @@ namespace boost { namespace fusion { namespace detail
}
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
template <typename Head_, typename ...Tail_>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type forward_(Head_&& head, Tail_&&... tail)
{
return type(
Expand All @@ -59,11 +59,11 @@ namespace boost { namespace fusion { namespace detail
{
typedef nil_keyed_element type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type construct() { return type(); }

#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type forward_() { return type(); }
#endif
};
Expand Down
2 changes: 1 addition & 1 deletion include/boost/fusion/container/deque/detail/end_impl.hpp
Expand Up @@ -30,7 +30,7 @@ namespace boost { namespace fusion
deque_iterator<Sequence, Sequence::next_up::value>
type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type call(Sequence& seq)
{
return type(seq);
Expand Down
38 changes: 19 additions & 19 deletions include/boost/fusion/container/deque/detail/keyed_element.hpp
Expand Up @@ -27,7 +27,7 @@ namespace boost { namespace fusion { namespace detail
void get();

template<typename It>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static nil_keyed_element
from_iterator(It const&)
{
Expand All @@ -43,98 +43,98 @@ namespace boost { namespace fusion { namespace detail
using Rest::get;

template <typename It>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static keyed_element
from_iterator(It const& it)
{
return keyed_element(
*it, base::from_iterator(fusion::next(it)));
}

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
keyed_element(keyed_element const& rhs)
: Rest(rhs.get_base()), value_(rhs.value_)
{}

#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
keyed_element(keyed_element&& rhs)
: Rest(BOOST_FUSION_FWD_ELEM(Rest, rhs.forward_base()))
, value_(BOOST_FUSION_FWD_ELEM(Value, rhs.value_))
{}
#endif

template <typename U, typename Rst>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
keyed_element(keyed_element<Key, U, Rst> const& rhs)
: Rest(rhs.get_base()), value_(rhs.value_)
{}

#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
#endif

BOOST_FUSION_GPU_ENABLED
Rest& get_base()
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
Rest& get_base() BOOST_NOEXCEPT
{
return *this;
}

BOOST_FUSION_GPU_ENABLED
Rest const& get_base() const
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
Rest const& get_base() const BOOST_NOEXCEPT
{
return *this;
}

#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
BOOST_FUSION_GPU_ENABLED
Rest&& forward_base()
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
Rest&& forward_base() BOOST_NOEXCEPT
{
return BOOST_FUSION_FWD_ELEM(Rest, *static_cast<Rest*>(this));
}
#endif

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
typename cref_result<Value>::type get(Key) const
{
return value_;
}

BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
typename ref_result<Value>::type get(Key)
{
return value_;
}

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
keyed_element(
typename detail::call_param<Value>::type value
, Rest const& rest)
: Rest(rest), value_(value)
{}

#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
keyed_element(Value&& value, Rest&& rest)
: Rest(BOOST_FUSION_FWD_ELEM(Rest, rest))
, value_(BOOST_FUSION_FWD_ELEM(Value, value))
{}
#endif

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
keyed_element()
: Rest(), value_()
{}

template<typename U, typename Rst>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
keyed_element& operator=(keyed_element<Key, U, Rst> const& rhs)
{
base::operator=(static_cast<Rst const&>(rhs)); // cast for msvc-7.1
value_ = rhs.value_;
return *this;
}

BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
keyed_element& operator=(keyed_element const& rhs)
{
base::operator=(rhs);
Expand All @@ -143,7 +143,7 @@ namespace boost { namespace fusion { namespace detail
}

#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
keyed_element& operator=(keyed_element&& rhs)
{
base::operator=(std::forward<keyed_element>(rhs));
Expand Down
6 changes: 3 additions & 3 deletions include/boost/fusion/container/deque/front_extended_deque.hpp
Expand Up @@ -27,20 +27,20 @@ namespace boost { namespace fusion
typedef mpl::int_<(result_of::size<Deque>::value + 1)> size;

template <typename Arg>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
front_extended_deque(Deque const& deque, Arg const& val)
: base(val, deque)
{}

#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
template <typename Arg>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
front_extended_deque(Deque const& deque, Arg& val)
: base(val, deque)
{}
#else
template <typename Arg>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
front_extended_deque(Deque const& deque, Arg&& val)
: base(BOOST_FUSION_FWD_ELEM(Arg, val), deque)
{}
Expand Down
4 changes: 2 additions & 2 deletions include/boost/fusion/container/generation/cons_tie.hpp
Expand Up @@ -25,7 +25,7 @@ namespace boost { namespace fusion

// $$$ do we really want a cons_tie? $$$
template <typename Car>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline cons<Car&>
cons_tie(Car& car)
{
Expand All @@ -34,7 +34,7 @@ namespace boost { namespace fusion

// $$$ do we really want a cons_tie? $$$
template <typename Car, typename Cdr>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline cons<Car&, Cdr>
cons_tie(Car& car, Cdr const& cdr)
{
Expand Down
2 changes: 1 addition & 1 deletion include/boost/fusion/container/generation/deque_tie.hpp
Expand Up @@ -34,7 +34,7 @@ namespace boost { namespace fusion
}

template <typename ...T>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline deque<T&...>
deque_tie(T&... arg)
{
Expand Down
Expand Up @@ -89,7 +89,7 @@ namespace boost { namespace fusion
}

template <BOOST_PP_ENUM_PARAMS(N, typename T)>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>
deque_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & arg))
{
Expand Down
Expand Up @@ -57,7 +57,8 @@ namespace boost { namespace fusion
};
}

BOOST_FUSION_GPU_ENABLED inline deque<>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline deque<>
make_deque()
{
return deque<>();
Expand Down Expand Up @@ -102,7 +103,7 @@ namespace boost { namespace fusion
}

template <BOOST_PP_ENUM_PARAMS(N, typename T)>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
make_deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& arg))
{
Expand Down
Expand Up @@ -59,7 +59,8 @@ namespace boost { namespace fusion
};
}

BOOST_FUSION_GPU_ENABLED inline map<>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline map<>
make_map()
{
return map<>();
Expand Down Expand Up @@ -116,7 +117,7 @@ namespace boost { namespace fusion
BOOST_PP_ENUM_PARAMS(N, typename K)
, BOOST_PP_ENUM_PARAMS(N, typename D)
>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)>
make_map(BOOST_PP_ENUM_BINARY_PARAMS(N, D, const& arg))
{
Expand Down
Expand Up @@ -62,7 +62,8 @@ namespace boost { namespace fusion
};
}

BOOST_FUSION_GPU_ENABLED inline map<>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline map<>
map_tie()
{
return map<>();
Expand Down Expand Up @@ -119,7 +120,7 @@ namespace boost { namespace fusion
BOOST_PP_ENUM_PARAMS(N, typename K)
, BOOST_PP_ENUM_PARAMS(N, typename D)
>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)>
map_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, D, & arg))
{
Expand Down
4 changes: 2 additions & 2 deletions include/boost/fusion/container/generation/ignore.hpp
Expand Up @@ -17,7 +17,7 @@ namespace boost { namespace fusion
struct swallow_assign
{
template<typename T>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
swallow_assign const&
operator=(const T&) const
{
Expand All @@ -27,7 +27,7 @@ namespace boost { namespace fusion
}

// "ignore" allows tuple positions to be ignored when using "tie".
detail::swallow_assign const ignore = detail::swallow_assign();
BOOST_CONSTEXPR detail::swallow_assign const ignore = detail::swallow_assign();
}}

#endif
2 changes: 1 addition & 1 deletion include/boost/fusion/container/generation/list_tie.hpp
Expand Up @@ -89,7 +89,7 @@ namespace boost { namespace fusion
}

template <BOOST_PP_ENUM_PARAMS(N, typename T)>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline list<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>
list_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & arg))
{
Expand Down
4 changes: 2 additions & 2 deletions include/boost/fusion/container/generation/make_cons.hpp
Expand Up @@ -26,15 +26,15 @@ namespace boost { namespace fusion
}

template <typename Car>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline cons<typename detail::as_fusion_element<Car>::type>
make_cons(Car const& car)
{
return cons<typename detail::as_fusion_element<Car>::type>(car);
}

template <typename Car, typename Cdr>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline cons<typename detail::as_fusion_element<Car>::type, Cdr>
make_cons(Car const& car, Cdr const& cdr)
{
Expand Down
2 changes: 1 addition & 1 deletion include/boost/fusion/container/generation/make_deque.hpp
Expand Up @@ -32,7 +32,7 @@ namespace boost { namespace fusion
}

template <typename ...T>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline deque<typename detail::as_fusion_element<T>::type...>
make_deque(T const&... arg)
{
Expand Down
5 changes: 3 additions & 2 deletions include/boost/fusion/container/generation/make_list.hpp
Expand Up @@ -56,7 +56,8 @@ namespace boost { namespace fusion
};
}

BOOST_FUSION_GPU_ENABLED inline list<>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline list<>
make_list()
{
return list<>();
Expand Down Expand Up @@ -101,7 +102,7 @@ namespace boost { namespace fusion
}

template <BOOST_PP_ENUM_PARAMS(N, typename T)>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline list<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
make_list(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& arg))
{
Expand Down
2 changes: 1 addition & 1 deletion include/boost/fusion/container/generation/make_map.hpp
Expand Up @@ -41,7 +41,7 @@ namespace boost { namespace fusion
}

template <typename ...Key, typename ...T>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline map<
fusion::pair<
Key
Expand Down
22 changes: 20 additions & 2 deletions include/boost/fusion/container/generation/make_set.hpp
Expand Up @@ -13,6 +13,7 @@
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
#include <boost/preprocessor/repetition/repeat_from_to.hpp>
#include <boost/fusion/support/config.hpp>
#include <boost/fusion/container/set/set.hpp>
#include <boost/fusion/support/detail/as_fusion_element.hpp>
#include <boost/fusion/support/pair.hpp>
Expand All @@ -35,6 +36,7 @@

#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 1)
#define FUSION_HASH #
#endif

namespace boost { namespace fusion
Expand All @@ -57,7 +59,22 @@ namespace boost { namespace fusion
};
}

BOOST_FUSION_GPU_ENABLED inline set<>
// XXX:
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
FUSION_HASH if defined(BOOST_CLANG)
BOOST_CXX14_CONSTEXPR
FUSION_HASH else
BOOST_CONSTEXPR
FUSION_HASH endif
#else
#if defined(BOOST_CLANG)
BOOST_CXX14_CONSTEXPR
#else
BOOST_CONSTEXPR
#endif
#endif
BOOST_FUSION_GPU_ENABLED
inline set<>
make_set()
{
return set<>();
Expand All @@ -76,6 +93,7 @@ namespace boost { namespace fusion
}}

#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
#undef FUSION_HASH
#pragma wave option(output: null)
#endif

Expand Down Expand Up @@ -103,7 +121,7 @@ namespace boost { namespace fusion
}

template <BOOST_PP_ENUM_PARAMS(N, typename T)>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline set<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
make_set(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& arg))
{
Expand Down
5 changes: 3 additions & 2 deletions include/boost/fusion/container/generation/make_vector.hpp
Expand Up @@ -56,7 +56,8 @@ namespace boost { namespace fusion
};
}

BOOST_FUSION_GPU_ENABLED inline vector0<>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline vector0<>
make_vector()
{
return vector0<>();
Expand Down Expand Up @@ -101,7 +102,7 @@ namespace boost { namespace fusion
}

template <BOOST_PP_ENUM_PARAMS(N, typename T)>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
make_vector(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& arg))
{
Expand Down
2 changes: 1 addition & 1 deletion include/boost/fusion/container/generation/map_tie.hpp
Expand Up @@ -35,7 +35,7 @@ namespace boost { namespace fusion
}

template <typename ...Key, typename ...T>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline map<fusion::pair<Key, T&>...>
map_tie(T&... arg)
{
Expand Down
4 changes: 2 additions & 2 deletions include/boost/fusion/container/generation/pair_tie.hpp
Expand Up @@ -27,15 +27,15 @@ namespace boost { namespace fusion {
}

template<typename Key, typename T>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
typename disable_if<is_const<T>, typename result_of::pair_tie<Key, T>::type>::type
pair_tie(T& t)
{
return typename result_of::pair_tie<Key, T>::type(t);
}

template<typename Key, typename T>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
typename result_of::pair_tie<Key, T const>::type
pair_tie(T const& t)
{
Expand Down
2 changes: 1 addition & 1 deletion include/boost/fusion/container/generation/vector_tie.hpp
Expand Up @@ -87,7 +87,7 @@ namespace boost { namespace fusion
}

template <BOOST_PP_ENUM_PARAMS(N, typename T)>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline vector<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>
vector_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & arg))
{
Expand Down
22 changes: 11 additions & 11 deletions include/boost/fusion/container/list/cons.hpp
Expand Up @@ -49,31 +49,31 @@ namespace boost { namespace fusion
typedef Car car_type;
typedef Cdr cdr_type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
cons()
: car(), cdr() {}

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
explicit cons(typename detail::call_param<Car>::type in_car)
: car(in_car), cdr() {}

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
cons(
typename detail::call_param<Car>::type in_car
, typename detail::call_param<Cdr>::type in_cdr)
: car(in_car), cdr(in_cdr) {}

template <typename Car2, typename Cdr2>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
cons(cons<Car2, Cdr2> const& rhs)
: car(rhs.car), cdr(rhs.cdr) {}

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
cons(cons const& rhs)
: car(rhs.car), cdr(rhs.cdr) {}

template <typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
cons(
Sequence const& seq
, typename boost::enable_if<
Expand All @@ -86,21 +86,21 @@ namespace boost { namespace fusion
, cdr(fusion::next(fusion::begin(seq)), mpl::true_()) {}

template <typename Iterator>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
cons(Iterator const& iter, mpl::true_ /*this_is_an_iterator*/)
: car(*iter)
, cdr(fusion::next(iter), mpl::true_()) {}

template <typename Car2, typename Cdr2>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
cons& operator=(cons<Car2, Cdr2> const& rhs)
{
car = rhs.car;
cdr = rhs.cdr;
return *this;
}

BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
cons& operator=(cons const& rhs)
{
car = rhs.car;
Expand All @@ -109,7 +109,7 @@ namespace boost { namespace fusion
}

template <typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
typename boost::enable_if<
mpl::and_<
traits::is_sequence<Sequence>
Expand All @@ -124,7 +124,7 @@ namespace boost { namespace fusion
}

template <typename Iterator>
BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
void assign_from_iter(Iterator const& iter)
{
car = *iter;
Expand Down
25 changes: 13 additions & 12 deletions include/boost/fusion/container/list/cons_iterator.hpp
Expand Up @@ -36,8 +36,8 @@ namespace boost { namespace fusion
typename add_const<Cons>::type>
identity;

BOOST_FUSION_GPU_ENABLED
explicit cons_iterator(cons_type& in_cons)
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
explicit cons_iterator(cons_type& in_cons) BOOST_NOEXCEPT
: cons(in_cons) {}

cons_type& cons;
Expand All @@ -55,46 +55,47 @@ namespace boost { namespace fusion
typedef cons_iterator_identity<
add_const<nil_>::type>
identity;

BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
nil_iterator() {}
nil_iterator() BOOST_NOEXCEPT {}
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
explicit nil_iterator(nil_ const&) {}
explicit nil_iterator(nil_ const&) BOOST_NOEXCEPT {}
};

template <>
struct cons_iterator<nil_> : nil_iterator
{
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
cons_iterator() {}
cons_iterator() BOOST_NOEXCEPT {}
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
explicit cons_iterator(nil_ const&) {}
explicit cons_iterator(nil_ const&) BOOST_NOEXCEPT {}
};

template <>
struct cons_iterator<nil_ const> : nil_iterator
{
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
cons_iterator() {}
cons_iterator() BOOST_NOEXCEPT {}
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
explicit cons_iterator(nil_ const&) {}
explicit cons_iterator(nil_ const&) BOOST_NOEXCEPT {}
};

template <>
struct cons_iterator<list<> > : nil_iterator
{
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
cons_iterator() {}
cons_iterator() BOOST_NOEXCEPT {}
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
explicit cons_iterator(nil_ const&) {}
explicit cons_iterator(nil_ const&) BOOST_NOEXCEPT {}
};

template <>
struct cons_iterator<list<> const> : nil_iterator
{
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
cons_iterator() {}
cons_iterator() BOOST_NOEXCEPT {}
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
explicit cons_iterator(nil_ const&) {}
explicit cons_iterator(nil_ const&) BOOST_NOEXCEPT {}
};
}}

Expand Down
6 changes: 3 additions & 3 deletions include/boost/fusion/container/list/convert.hpp
Expand Up @@ -31,7 +31,7 @@ namespace boost { namespace fusion

typedef typename build_cons::type type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(Sequence& seq)
{
Expand All @@ -41,15 +41,15 @@ namespace boost { namespace fusion
}

template <typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::as_list<Sequence>::type
as_list(Sequence& seq)
{
return result_of::as_list<Sequence>::call(seq);
}

template <typename Sequence>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::as_list<Sequence const>::type
as_list(Sequence const& seq)
{
Expand Down
6 changes: 3 additions & 3 deletions include/boost/fusion/container/list/detail/at_impl.hpp
Expand Up @@ -107,22 +107,22 @@ namespace boost { namespace fusion
type;

template <typename Cons, int N2>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(Cons& s, mpl::int_<N2>)
{
return call(s.cdr, mpl::int_<N2-1>());
}

template <typename Cons>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(Cons& s, mpl::int_<0>)
{
return s.car;
}

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(Sequence& s)
{
Expand Down
4 changes: 2 additions & 2 deletions include/boost/fusion/container/list/detail/begin_impl.hpp
Expand Up @@ -36,8 +36,8 @@ namespace boost { namespace fusion
struct apply
{
typedef cons_iterator<Sequence> type;
BOOST_FUSION_GPU_ENABLED

BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(Sequence& t)
{
Expand Down
8 changes: 4 additions & 4 deletions include/boost/fusion/container/list/detail/build_cons.hpp
Expand Up @@ -26,8 +26,8 @@ namespace boost { namespace fusion { namespace detail
struct build_cons<First, Last, true>
{
typedef nil_ type;
BOOST_FUSION_GPU_ENABLED

BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static nil_
call(First const&, Last const&)
{
Expand All @@ -38,7 +38,7 @@ namespace boost { namespace fusion { namespace detail
template <typename First, typename Last>
struct build_cons<First, Last, false>
{
typedef
typedef
build_cons<typename result_of::next<First>::type, Last>
next_build_cons;

Expand All @@ -47,7 +47,7 @@ namespace boost { namespace fusion { namespace detail
, typename next_build_cons::type>
type;

BOOST_FUSION_GPU_ENABLED
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(First const& f, Last const& l)
{
Expand Down
Expand Up @@ -39,7 +39,7 @@ namespace boost { namespace fusion

typedef typename build_cons::type type;

BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(Sequence& seq)
{
Expand Down
8 changes: 4 additions & 4 deletions include/boost/fusion/container/list/detail/deref_impl.hpp
Expand Up @@ -27,18 +27,18 @@ namespace boost { namespace fusion
struct deref_impl<cons_iterator_tag>
{
template <typename Iterator>
struct apply
struct apply
{
typedef typename Iterator::cons_type cons_type;
typedef typename cons_type::car_type value_type;

typedef typename mpl::eval_if<
is_const<cons_type>
, add_reference<typename add_const<value_type>::type>
, add_reference<value_type> >::type
type;
BOOST_FUSION_GPU_ENABLED

BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(Iterator const& i)
{
Expand Down
6 changes: 3 additions & 3 deletions include/boost/fusion/container/list/detail/end_impl.hpp
Expand Up @@ -33,13 +33,13 @@ namespace boost { namespace fusion
struct end_impl<cons_tag>
{
template <typename Sequence>
struct apply
struct apply
{
typedef cons_iterator<
typename mpl::if_<is_const<Sequence>, nil_ const, nil_>::type>
type;
BOOST_FUSION_GPU_ENABLED

BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(Sequence&)
{
Expand Down
Expand Up @@ -25,7 +25,7 @@ namespace boost { namespace fusion
struct equal_to_impl<cons_iterator_tag>
{
template <typename I1, typename I2>
struct apply
struct apply
: is_same<
typename I1::identity
, typename I2::identity
Expand Down