diff options
author | Chanho Park <chanho61.park@samsung.com> | 2014-12-11 18:55:56 +0900 |
---|---|---|
committer | Chanho Park <chanho61.park@samsung.com> | 2014-12-11 18:55:56 +0900 |
commit | 08c1e93fa36a49f49325a07fe91ff92c964c2b6c (patch) | |
tree | 7a7053ceb8874b28ec4b868d4c49b500008a102e /boost/fusion/adapted | |
parent | bb4dd8289b351fae6b55e303f189127a394a1edd (diff) | |
download | boost-08c1e93fa36a49f49325a07fe91ff92c964c2b6c.tar.gz boost-08c1e93fa36a49f49325a07fe91ff92c964c2b6c.tar.bz2 boost-08c1e93fa36a49f49325a07fe91ff92c964c2b6c.zip |
Imported Upstream version 1.57.0upstream/1.57.0
Diffstat (limited to 'boost/fusion/adapted')
79 files changed, 419 insertions, 116 deletions
diff --git a/boost/fusion/adapted/adt.hpp b/boost/fusion/adapted/adt.hpp index a8293caaf8..d70cf82386 100644 --- a/boost/fusion/adapted/adt.hpp +++ b/boost/fusion/adapted/adt.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_ADT_HPP #define BOOST_FUSION_ADAPTED_ADT_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/adapted/adt/adapt_assoc_adt_named.hpp> #include <boost/fusion/adapted/adt/adapt_assoc_adt.hpp> #include <boost/fusion/adapted/adt/adapt_adt_named.hpp> diff --git a/boost/fusion/adapted/adt/adapt_adt.hpp b/boost/fusion/adapted/adt/adapt_adt.hpp index 454ac922e5..3be25b1efc 100644 --- a/boost/fusion/adapted/adt/adapt_adt.hpp +++ b/boost/fusion/adapted/adt/adapt_adt.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_ADT_ADAPT_ADT_HPP #define BOOST_FUSION_ADAPTED_ADT_ADAPT_ADT_HPP +#include <boost/fusion/support/config.hpp> #include <boost/preprocessor/cat.hpp> #include <boost/preprocessor/empty.hpp> #include <boost/type_traits/add_reference.hpp> diff --git a/boost/fusion/adapted/adt/adapt_adt_named.hpp b/boost/fusion/adapted/adt/adapt_adt_named.hpp index c2ace0130c..617e2f184a 100644 --- a/boost/fusion/adapted/adt/adapt_adt_named.hpp +++ b/boost/fusion/adapted/adt/adapt_adt_named.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_ADT_ADAPT_ADT_NAMED_HPP #define BOOST_FUSION_ADAPTED_ADT_ADAPT_ADT_NAMED_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/adapted/adt/adapt_adt.hpp> #include <boost/fusion/adapted/struct/detail/proxy_type.hpp> diff --git a/boost/fusion/adapted/adt/adapt_assoc_adt.hpp b/boost/fusion/adapted/adt/adapt_assoc_adt.hpp index cce1dfb081..12bf6aa24f 100644 --- a/boost/fusion/adapted/adt/adapt_assoc_adt.hpp +++ b/boost/fusion/adapted/adt/adapt_assoc_adt.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_ADT_ADAPT_ASSOC_ADT_HPP #define BOOST_FUSION_ADAPTED_ADT_ADAPT_ASSOC_ADT_HPP +#include <boost/fusion/support/config.hpp> #include <boost/preprocessor/cat.hpp> #include <boost/preprocessor/empty.hpp> #include <boost/preprocessor/tuple/elem.hpp> diff --git a/boost/fusion/adapted/adt/adapt_assoc_adt_named.hpp b/boost/fusion/adapted/adt/adapt_assoc_adt_named.hpp index b875982533..a420e5d3cb 100644 --- a/boost/fusion/adapted/adt/adapt_assoc_adt_named.hpp +++ b/boost/fusion/adapted/adt/adapt_assoc_adt_named.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_ADT_ADAPT_ASSOC_ADT_NAMED_HPP #define BOOST_FUSION_ADAPTED_ADT_ADAPT_ASSOC_ADT_NAMED_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/adapted/adt/adapt_assoc_adt.hpp> #include <boost/fusion/adapted/struct/detail/proxy_type.hpp> diff --git a/boost/fusion/adapted/adt/detail/adapt_base.hpp b/boost/fusion/adapted/adt/detail/adapt_base.hpp index bddc79de7e..3de396dd6b 100644 --- a/boost/fusion/adapted/adt/detail/adapt_base.hpp +++ b/boost/fusion/adapted/adt/detail/adapt_base.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_ADT_DETAIL_ADAPT_BASE_HPP #define BOOST_FUSION_ADAPTED_ADT_DETAIL_ADAPT_BASE_HPP +#include <boost/fusion/support/config.hpp> #include <boost/preprocessor/control/if.hpp> #include <boost/preprocessor/seq/seq.hpp> #include <boost/preprocessor/seq/elem.hpp> @@ -39,6 +40,7 @@ > \ { \ template<class Val> \ + BOOST_FUSION_GPU_ENABLED \ static void \ boost_fusion_adapt_adt_impl_set( \ BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& obj, \ @@ -47,6 +49,7 @@ BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 3, ATTRIBUTE); \ } \ \ + BOOST_FUSION_GPU_ENABLED \ static BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) \ boost_fusion_adapt_adt_impl_get( \ BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& obj) \ @@ -54,6 +57,7 @@ return BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 2, ATTRIBUTE); \ } \ \ + BOOST_FUSION_GPU_ENABLED \ static BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 1, ATTRIBUTE) \ boost_fusion_adapt_adt_impl_get( \ BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) const& obj) \ @@ -73,12 +77,14 @@ { \ typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 1, ATTRIBUTE) type; \ \ + BOOST_FUSION_GPU_ENABLED \ explicit \ adt_attribute_proxy( \ BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) const& o) \ : obj(&o) \ {} \ \ + BOOST_FUSION_GPU_ENABLED \ type get() const \ { \ return access::adt_attribute_access< \ @@ -87,6 +93,7 @@ >::boost_fusion_adapt_adt_impl_get(*obj); \ } \ \ + BOOST_FUSION_GPU_ENABLED \ operator type() const \ { \ return get(); \ @@ -106,6 +113,7 @@ { \ typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) type; \ \ + BOOST_FUSION_GPU_ENABLED \ explicit \ adt_attribute_proxy( \ BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& o) \ @@ -113,6 +121,7 @@ {} \ \ template<class Val> \ + BOOST_FUSION_GPU_ENABLED \ adt_attribute_proxy& \ operator=(Val const& val) \ { \ @@ -123,6 +132,7 @@ return *this; \ } \ \ + BOOST_FUSION_GPU_ENABLED \ type get() const \ { \ return access::adt_attribute_access< \ @@ -131,6 +141,7 @@ >::boost_fusion_adapt_adt_impl_get(*obj); \ } \ \ + BOOST_FUSION_GPU_ENABLED \ operator type() const \ { \ return get(); \ @@ -170,6 +181,7 @@ > \ type; \ \ + BOOST_FUSION_GPU_ENABLED \ static type \ call(Seq& obj) \ { \ diff --git a/boost/fusion/adapted/adt/detail/extension.hpp b/boost/fusion/adapted/adt/detail/extension.hpp index 2f4db4dd09..6349118053 100644 --- a/boost/fusion/adapted/adt/detail/extension.hpp +++ b/boost/fusion/adapted/adt/detail/extension.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_ADT_DETAIL_EXTENSION_HPP #define BOOST_FUSION_ADAPTED_ADT_DETAIL_EXTENSION_HPP +#include <boost/fusion/support/config.hpp> #include <boost/type_traits/remove_const.hpp> #include <boost/type_traits/remove_reference.hpp> #include <boost/fusion/support/as_const.hpp> @@ -19,16 +20,17 @@ namespace boost { namespace fusion { namespace detail { - template <typename T, typename Dummy> - struct get_identity - : remove_const<typename remove_reference<T>::type> - {}; + template <typename T, typename Dummy> + struct get_identity + : remove_const<typename remove_reference<T>::type> + {}; } namespace extension { // Overload as_const() to unwrap adt_attribute_proxy. template <typename T, int N, bool Const> + BOOST_FUSION_GPU_ENABLED typename adt_attribute_proxy<T, N, Const>::type as_const(const adt_attribute_proxy<T, N, Const>& proxy) { return proxy.get(); diff --git a/boost/fusion/adapted/array/at_impl.hpp b/boost/fusion/adapted/array/at_impl.hpp index 12f0372670..084fffc208 100644 --- a/boost/fusion/adapted/array/at_impl.hpp +++ b/boost/fusion/adapted/array/at_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_ARRAY_AT_IMPL_HPP #define BOOST_FUSION_ADAPTED_ARRAY_AT_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/type_traits/add_reference.hpp> #include <boost/type_traits/remove_extent.hpp> @@ -26,6 +27,7 @@ namespace boost { namespace fusion { namespace extension add_reference<typename remove_extent<Seq>::type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { diff --git a/boost/fusion/adapted/array/begin_impl.hpp b/boost/fusion/adapted/array/begin_impl.hpp index 2ee4d707b1..4ffaba01f1 100644 --- a/boost/fusion/adapted/array/begin_impl.hpp +++ b/boost/fusion/adapted/array/begin_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_ARRAY_BEGIN_IMPL_HPP #define BOOST_FUSION_ADAPTED_ARRAY_BEGIN_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/basic_iterator.hpp> namespace boost { namespace fusion { namespace extension @@ -30,6 +31,7 @@ namespace boost { namespace fusion { namespace extension > type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { diff --git a/boost/fusion/adapted/array/deref_impl.hpp b/boost/fusion/adapted/array/deref_impl.hpp index a58cf99001..a7dc7cb9ca 100644 --- a/boost/fusion/adapted/array/deref_impl.hpp +++ b/boost/fusion/adapted/array/deref_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_ARRAY_DEREF_IMPL_HPP #define BOOST_FUSION_ADAPTED_ARRAY_DEREF_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/type_traits/add_reference.hpp> #include <boost/type_traits/remove_extent.hpp> @@ -28,6 +29,7 @@ namespace boost { namespace fusion { namespace extension >::type type; + BOOST_FUSION_GPU_ENABLED static type call(It const& it) { diff --git a/boost/fusion/adapted/array/end_impl.hpp b/boost/fusion/adapted/array/end_impl.hpp index 5b367f9c00..d36c6b81b3 100644 --- a/boost/fusion/adapted/array/end_impl.hpp +++ b/boost/fusion/adapted/array/end_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_ARRAY_END_IMPL_HPP #define BOOST_FUSION_ADAPTED_ARRAY_END_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/basic_iterator.hpp> #include <boost/type_traits/rank.hpp> #include <boost/type_traits/extent.hpp> @@ -32,6 +33,7 @@ namespace boost { namespace fusion { namespace extension > type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { diff --git a/boost/fusion/adapted/array/is_sequence_impl.hpp b/boost/fusion/adapted/array/is_sequence_impl.hpp index d6de858561..0f5d31fad3 100644 --- a/boost/fusion/adapted/array/is_sequence_impl.hpp +++ b/boost/fusion/adapted/array/is_sequence_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_ARRAY_IS_SEQUENCE_IMPL_HPP #define BOOST_FUSION_ADAPTED_ARRAY_IS_SEQUENCE_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/mpl/bool.hpp> namespace boost { namespace fusion { namespace extension diff --git a/boost/fusion/adapted/array/is_view_impl.hpp b/boost/fusion/adapted/array/is_view_impl.hpp index 238eac0e58..7cf69d8a01 100644 --- a/boost/fusion/adapted/array/is_view_impl.hpp +++ b/boost/fusion/adapted/array/is_view_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_ARRAY_IS_VIEW_IMPL_HPP #define BOOST_FUSION_ADAPTED_ARRAY_IS_VIEW_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/mpl/bool.hpp> namespace boost { namespace fusion { namespace extension diff --git a/boost/fusion/adapted/array/size_impl.hpp b/boost/fusion/adapted/array/size_impl.hpp index 8be5a29d81..d208da1472 100644 --- a/boost/fusion/adapted/array/size_impl.hpp +++ b/boost/fusion/adapted/array/size_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_ARRAY_SIZE_IMPL_HPP #define BOOST_FUSION_ADAPTED_ARRAY_SIZE_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/type_traits/rank.hpp> #include <boost/type_traits/extent.hpp> diff --git a/boost/fusion/adapted/array/tag_of.hpp b/boost/fusion/adapted/array/tag_of.hpp index 7c732a7021..d62fe65b84 100644 --- a/boost/fusion/adapted/array/tag_of.hpp +++ b/boost/fusion/adapted/array/tag_of.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_ARRAY_TAG_OF_HPP #define BOOST_FUSION_ADAPTED_ARRAY_TAG_OF_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/support/tag_of_fwd.hpp> #include <cstddef> diff --git a/boost/fusion/adapted/array/value_at_impl.hpp b/boost/fusion/adapted/array/value_at_impl.hpp index 4e04c37a8f..9aab11b528 100644 --- a/boost/fusion/adapted/array/value_at_impl.hpp +++ b/boost/fusion/adapted/array/value_at_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_ARRAY_VALUE_AT_IMPL_HPP #define BOOST_FUSION_ADAPTED_ARRAY_VALUE_AT_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/type_traits/remove_extent.hpp> namespace boost { namespace fusion { namespace extension diff --git a/boost/fusion/adapted/array/value_of_impl.hpp b/boost/fusion/adapted/array/value_of_impl.hpp index 2bbddf235e..3f91e80133 100644 --- a/boost/fusion/adapted/array/value_of_impl.hpp +++ b/boost/fusion/adapted/array/value_of_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_ARRAY_VALUE_OF_IMPL_HPP #define BOOST_FUSION_ADAPTED_ARRAY_VALUE_OF_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/type_traits/remove_extent.hpp> namespace boost { namespace fusion { namespace extension diff --git a/boost/fusion/adapted/boost_array.hpp b/boost/fusion/adapted/boost_array.hpp index ed9fd9b3ad..eb6c0af37a 100644 --- a/boost/fusion/adapted/boost_array.hpp +++ b/boost/fusion/adapted/boost_array.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_BOOST_ARRAY_27122005_1035) #define BOOST_FUSION_BOOST_ARRAY_27122005_1035 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/adapted/boost_array/array_iterator.hpp> #include <boost/fusion/adapted/boost_array/tag_of.hpp> #include <boost/fusion/adapted/boost_array/detail/is_view_impl.hpp> diff --git a/boost/fusion/adapted/boost_array/array_iterator.hpp b/boost/fusion/adapted/boost_array/array_iterator.hpp index 1246144980..0e39d45709 100644 --- a/boost/fusion/adapted/boost_array/array_iterator.hpp +++ b/boost/fusion/adapted/boost_array/array_iterator.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_ARRAY_ITERATOR_26122005_2250) #define BOOST_FUSION_ARRAY_ITERATOR_26122005_2250 +#include <boost/fusion/support/config.hpp> #include <cstddef> #include <boost/config.hpp> #include <boost/mpl/int.hpp> @@ -31,6 +32,7 @@ namespace boost { namespace fusion typedef mpl::int_<Pos> index; typedef Array array_type; + BOOST_FUSION_GPU_ENABLED array_iterator(Array& a) : array(a) {} @@ -55,6 +57,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const & it) { @@ -69,6 +72,7 @@ namespace boost { namespace fusion typedef typename Iterator::array_type array_type; typedef array_iterator<array_type, index::value + N::value> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { @@ -91,6 +95,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(I1 const&, I2 const&) { diff --git a/boost/fusion/adapted/boost_array/detail/at_impl.hpp b/boost/fusion/adapted/boost_array/detail/at_impl.hpp index 6df8858663..15235e8e57 100644 --- a/boost/fusion/adapted/boost_array/detail/at_impl.hpp +++ b/boost/fusion/adapted/boost_array/detail/at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_AT_IMPL_27122005_1241) #define BOOST_FUSION_AT_IMPL_27122005_1241 +#include <boost/fusion/support/config.hpp> #include <boost/type_traits/is_const.hpp> #include <boost/mpl/if.hpp> @@ -32,6 +33,7 @@ namespace boost { namespace fusion { typename Sequence::const_reference, typename Sequence::reference>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { diff --git a/boost/fusion/adapted/boost_array/detail/begin_impl.hpp b/boost/fusion/adapted/boost_array/detail/begin_impl.hpp index c8bce9ffe7..5e0752c145 100644 --- a/boost/fusion/adapted/boost_array/detail/begin_impl.hpp +++ b/boost/fusion/adapted/boost_array/detail/begin_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_BEGIN_IMPL_27122005_1117) #define BOOST_FUSION_BEGIN_IMPL_27122005_1117 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/adapted/boost_array/array_iterator.hpp> namespace boost { namespace fusion { @@ -27,6 +28,7 @@ namespace boost { namespace fusion { { typedef array_iterator<Sequence, 0> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& v) { diff --git a/boost/fusion/adapted/boost_array/detail/category_of_impl.hpp b/boost/fusion/adapted/boost_array/detail/category_of_impl.hpp index 8e92efd7c3..038f6db9de 100644 --- a/boost/fusion/adapted/boost_array/detail/category_of_impl.hpp +++ b/boost/fusion/adapted/boost_array/detail/category_of_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_27122005_1044) #define BOOST_FUSION_CATEGORY_OF_IMPL_27122005_1044 +#include <boost/fusion/support/config.hpp> #include <boost/config/no_tr1/utility.hpp> namespace boost { namespace fusion { diff --git a/boost/fusion/adapted/boost_array/detail/end_impl.hpp b/boost/fusion/adapted/boost_array/detail/end_impl.hpp index 38b5a82cb4..13ed1e3e3d 100644 --- a/boost/fusion/adapted/boost_array/detail/end_impl.hpp +++ b/boost/fusion/adapted/boost_array/detail/end_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_END_IMPL_27122005_1120) #define BOOST_FUSION_END_IMPL_27122005_1120 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/adapted/boost_array/array_iterator.hpp> namespace boost { namespace fusion { @@ -27,6 +28,7 @@ namespace boost { namespace fusion { { typedef array_iterator<Sequence, Sequence::static_size> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& v) { diff --git a/boost/fusion/adapted/boost_array/detail/is_sequence_impl.hpp b/boost/fusion/adapted/boost_array/detail/is_sequence_impl.hpp index cdbe6c8382..ac52e720eb 100644 --- a/boost/fusion/adapted/boost_array/detail/is_sequence_impl.hpp +++ b/boost/fusion/adapted/boost_array/detail/is_sequence_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1648) #define BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1648 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/bool.hpp> namespace boost { namespace fusion { diff --git a/boost/fusion/adapted/boost_array/detail/is_view_impl.hpp b/boost/fusion/adapted/boost_array/detail/is_view_impl.hpp index cf63c6a667..0a84aa0ae1 100644 --- a/boost/fusion/adapted/boost_array/detail/is_view_impl.hpp +++ b/boost/fusion/adapted/boost_array/detail/is_view_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_IS_VIEW_IMPL_27042006_2221) #define BOOST_FUSION_IS_VIEW_IMPL_27042006_2221 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/bool.hpp> namespace boost { namespace fusion diff --git a/boost/fusion/adapted/boost_array/tag_of.hpp b/boost/fusion/adapted/boost_array/tag_of.hpp index f33c93fc70..d93fed1d30 100644 --- a/boost/fusion/adapted/boost_array/tag_of.hpp +++ b/boost/fusion/adapted/boost_array/tag_of.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_SEQUENCE_TAG_OF_27122005_1030) #define FUSION_SEQUENCE_TAG_OF_27122005_1030 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/support/tag_of_fwd.hpp> #include <cstddef> diff --git a/boost/fusion/adapted/boost_tuple.hpp b/boost/fusion/adapted/boost_tuple.hpp index 6149478f3a..85af576461 100644 --- a/boost/fusion/adapted/boost_tuple.hpp +++ b/boost/fusion/adapted/boost_tuple.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_BOOST_TUPLE_09272006_0732) #define BOOST_FUSION_BOOST_TUPLE_09272006_0732 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/adapted/boost_tuple/tag_of.hpp> #include <boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp> #include <boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp> diff --git a/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp b/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp index 551f0fd900..416880b4e9 100644 --- a/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp +++ b/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_BOOST_TUPLE_ITERATOR_09262006_1851) #define FUSION_BOOST_TUPLE_ITERATOR_09262006_1851 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/iterator_facade.hpp> #include <boost/type_traits/is_const.hpp> #include <boost/type_traits/add_const.hpp> @@ -47,6 +48,7 @@ namespace boost { namespace fusion { typedef Cons cons_type; + BOOST_FUSION_GPU_ENABLED explicit boost_tuple_iterator(Cons& in_cons) : cons(in_cons) {} Cons& cons; @@ -67,6 +69,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& iter) { @@ -88,6 +91,7 @@ namespace boost { namespace fusion >::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& iter) { @@ -121,6 +125,7 @@ namespace boost { namespace fusion lazy_next_distance<I1, I2> >::type type; + BOOST_FUSION_GPU_ENABLED static type call(I1 const&, I2 const&) { @@ -156,6 +161,7 @@ namespace boost { namespace fusion : boost_tuple_null_iterator<tuples::null_type> { template <typename Cons> + BOOST_FUSION_GPU_ENABLED explicit boost_tuple_iterator(Cons const&) {} }; @@ -164,6 +170,7 @@ namespace boost { namespace fusion : boost_tuple_null_iterator<tuples::null_type const> { template <typename Cons> + BOOST_FUSION_GPU_ENABLED explicit boost_tuple_iterator(Cons const&) {} }; @@ -172,6 +179,7 @@ namespace boost { namespace fusion : boost_tuple_null_iterator<tuples::tuple<> > { template <typename Cons> + BOOST_FUSION_GPU_ENABLED explicit boost_tuple_iterator(Cons const&) {} }; @@ -180,6 +188,7 @@ namespace boost { namespace fusion : boost_tuple_null_iterator<tuples::tuple<> const> { template <typename Cons> + BOOST_FUSION_GPU_ENABLED explicit boost_tuple_iterator(Cons const&) {} }; }} diff --git a/boost/fusion/adapted/boost_tuple/detail/at_impl.hpp b/boost/fusion/adapted/boost_tuple/detail/at_impl.hpp index 8e2312500b..32ca5bec55 100644 --- a/boost/fusion/adapted/boost_tuple/detail/at_impl.hpp +++ b/boost/fusion/adapted/boost_tuple/detail/at_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_AT_IMPL_09262006_1920) #define BOOST_FUSION_AT_IMPL_09262006_1920 +#include <boost/fusion/support/config.hpp> #include <boost/tuple/tuple.hpp> #include <boost/mpl/if.hpp> @@ -37,6 +38,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { diff --git a/boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp b/boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp index 010c442750..1fbbb19c14 100644 --- a/boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp +++ b/boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_BEGIN_IMPL_09272006_0719) #define BOOST_FUSION_BEGIN_IMPL_09272006_0719 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp> namespace boost { namespace fusion @@ -26,6 +27,7 @@ namespace boost { namespace fusion { typedef boost_tuple_iterator<Sequence> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& v) { diff --git a/boost/fusion/adapted/boost_tuple/detail/end_impl.hpp b/boost/fusion/adapted/boost_tuple/detail/end_impl.hpp index e54702bf74..9f7f07c3a1 100644 --- a/boost/fusion/adapted/boost_tuple/detail/end_impl.hpp +++ b/boost/fusion/adapted/boost_tuple/detail/end_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_END_IMPL_09272006_0721) #define BOOST_FUSION_END_IMPL_09272006_0721 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp> #include <boost/mpl/if.hpp> #include <boost/type_traits/is_const.hpp> @@ -41,6 +42,7 @@ namespace boost { namespace fusion > type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { diff --git a/boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp b/boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp index c74fb4dfea..eb4a1185e0 100644 --- a/boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp +++ b/boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_09272006_0726) #define BOOST_FUSION_IS_SEQUENCE_IMPL_09272006_0726 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/bool.hpp> namespace boost { namespace fusion diff --git a/boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp b/boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp index 5d639d2b23..6384411034 100644 --- a/boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp +++ b/boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_IS_VIEW_IMPL_09272006_0725) #define BOOST_FUSION_IS_VIEW_IMPL_09272006_0725 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/bool.hpp> namespace boost { namespace fusion diff --git a/boost/fusion/adapted/boost_tuple/detail/size_impl.hpp b/boost/fusion/adapted/boost_tuple/detail/size_impl.hpp index 1dad42030f..371627867b 100644 --- a/boost/fusion/adapted/boost_tuple/detail/size_impl.hpp +++ b/boost/fusion/adapted/boost_tuple/detail/size_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SIZE_IMPL_09272006_0724) #define BOOST_FUSION_SIZE_IMPL_09272006_0724 +#include <boost/fusion/support/config.hpp> #include <boost/tuple/tuple.hpp> #include <boost/mpl/int.hpp> diff --git a/boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp b/boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp index 4f5fc6a656..3999271368 100644 --- a/boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp +++ b/boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_VALUE_AT_IMPL_09262006_1926) #define BOOST_FUSION_VALUE_AT_IMPL_09262006_1926 +#include <boost/fusion/support/config.hpp> #include <boost/tuple/tuple.hpp> namespace boost { namespace fusion diff --git a/boost/fusion/adapted/boost_tuple/tag_of.hpp b/boost/fusion/adapted/boost_tuple/tag_of.hpp index 18356de2af..cf24ffbf80 100644 --- a/boost/fusion/adapted/boost_tuple/tag_of.hpp +++ b/boost/fusion/adapted/boost_tuple/tag_of.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_TAG_OF_09262006_1900) #define BOOST_FUSION_TAG_OF_09262006_1900 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/support/tag_of_fwd.hpp> namespace boost { namespace tuples diff --git a/boost/fusion/adapted/mpl.hpp b/boost/fusion/adapted/mpl.hpp index 739ff93826..3eca0320ad 100644 --- a/boost/fusion/adapted/mpl.hpp +++ b/boost/fusion/adapted/mpl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_MPL_31122005_1152) #define BOOST_FUSION_MPL_31122005_1152 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/adapted/mpl/detail/begin_impl.hpp> #include <boost/fusion/adapted/mpl/detail/end_impl.hpp> #include <boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp> diff --git a/boost/fusion/adapted/mpl/detail/at_impl.hpp b/boost/fusion/adapted/mpl/detail/at_impl.hpp index 99342d7b3c..3fcafaac1d 100644 --- a/boost/fusion/adapted/mpl/detail/at_impl.hpp +++ b/boost/fusion/adapted/mpl/detail/at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_AT_IMPL_31122005_1642) #define BOOST_FUSION_AT_IMPL_31122005_1642 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/at.hpp> namespace boost { namespace fusion @@ -27,6 +28,7 @@ namespace boost { namespace fusion { typedef typename mpl::at<Sequence, N>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence) { diff --git a/boost/fusion/adapted/mpl/detail/begin_impl.hpp b/boost/fusion/adapted/mpl/detail/begin_impl.hpp index ef274ba0a6..c64e2828f4 100644 --- a/boost/fusion/adapted/mpl/detail/begin_impl.hpp +++ b/boost/fusion/adapted/mpl/detail/begin_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_BEGIN_IMPL_31122005_1209) #define BOOST_FUSION_BEGIN_IMPL_31122005_1209 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/adapted/mpl/mpl_iterator.hpp> #include <boost/mpl/begin.hpp> #include <boost/type_traits/remove_const.hpp> @@ -32,6 +33,7 @@ namespace boost { namespace fusion { >::type iterator; typedef mpl_iterator<iterator> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence) { diff --git a/boost/fusion/adapted/mpl/detail/category_of_impl.hpp b/boost/fusion/adapted/mpl/detail/category_of_impl.hpp index be43a56194..8cf2f88bfe 100644 --- a/boost/fusion/adapted/mpl/detail/category_of_impl.hpp +++ b/boost/fusion/adapted/mpl/detail/category_of_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141) #define BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/support/detail/mpl_iterator_category.hpp> #include <boost/mpl/begin_end.hpp> #include <boost/mpl/is_sequence.hpp> diff --git a/boost/fusion/adapted/mpl/detail/empty_impl.hpp b/boost/fusion/adapted/mpl/detail/empty_impl.hpp index f2eb22a0d9..4e385ff513 100644 --- a/boost/fusion/adapted/mpl/detail/empty_impl.hpp +++ b/boost/fusion/adapted/mpl/detail/empty_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_EMPTY_IMPL_31122005_1554) #define BOOST_FUSION_EMPTY_IMPL_31122005_1554 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/empty.hpp> namespace boost { namespace fusion diff --git a/boost/fusion/adapted/mpl/detail/end_impl.hpp b/boost/fusion/adapted/mpl/detail/end_impl.hpp index 613ab63cc0..579e5a69e0 100644 --- a/boost/fusion/adapted/mpl/detail/end_impl.hpp +++ b/boost/fusion/adapted/mpl/detail/end_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_END_IMPL_31122005_1237) #define BOOST_FUSION_END_IMPL_31122005_1237 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/adapted/mpl/mpl_iterator.hpp> #include <boost/mpl/end.hpp> #include <boost/type_traits/add_const.hpp> @@ -32,6 +33,7 @@ namespace boost { namespace fusion >::type iterator; typedef mpl_iterator<iterator> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence) { diff --git a/boost/fusion/adapted/mpl/detail/has_key_impl.hpp b/boost/fusion/adapted/mpl/detail/has_key_impl.hpp index b2b3253a8e..9e5a1dc4d2 100644 --- a/boost/fusion/adapted/mpl/detail/has_key_impl.hpp +++ b/boost/fusion/adapted/mpl/detail/has_key_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_HAS_KEY_IMPL_31122005_1647) #define BOOST_FUSION_HAS_KEY_IMPL_31122005_1647 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/has_key.hpp> namespace boost { namespace fusion diff --git a/boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp b/boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp index 2c6c5f988b..caed9e62de 100644 --- a/boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp +++ b/boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_31122005_1505) #define BOOST_FUSION_IS_SEQUENCE_IMPL_31122005_1505 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/bool.hpp> namespace boost { namespace fusion diff --git a/boost/fusion/adapted/mpl/detail/is_view_impl.hpp b/boost/fusion/adapted/mpl/detail/is_view_impl.hpp index bd9b7a4211..b494248972 100644 --- a/boost/fusion/adapted/mpl/detail/is_view_impl.hpp +++ b/boost/fusion/adapted/mpl/detail/is_view_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_IS_VIEW_IMPL_03202006_0048) #define BOOST_FUSION_IS_VIEW_IMPL_03202006_0048 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/bool.hpp> namespace boost { namespace fusion diff --git a/boost/fusion/adapted/mpl/detail/size_impl.hpp b/boost/fusion/adapted/mpl/detail/size_impl.hpp index 38168724d4..379b97dca8 100644 --- a/boost/fusion/adapted/mpl/detail/size_impl.hpp +++ b/boost/fusion/adapted/mpl/detail/size_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SIZE_IMPL_31122005_1508) #define BOOST_FUSION_SIZE_IMPL_31122005_1508 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/size.hpp> namespace boost { namespace fusion diff --git a/boost/fusion/adapted/mpl/detail/value_at_impl.hpp b/boost/fusion/adapted/mpl/detail/value_at_impl.hpp index 5560b82717..0d3eb6524b 100644 --- a/boost/fusion/adapted/mpl/detail/value_at_impl.hpp +++ b/boost/fusion/adapted/mpl/detail/value_at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_VALUE_AT_IMPL_31122005_1621) #define BOOST_FUSION_VALUE_AT_IMPL_31122005_1621 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/at.hpp> namespace boost { namespace fusion diff --git a/boost/fusion/adapted/mpl/mpl_iterator.hpp b/boost/fusion/adapted/mpl/mpl_iterator.hpp index 7caa8ea728..cc03767293 100644 --- a/boost/fusion/adapted/mpl/mpl_iterator.hpp +++ b/boost/fusion/adapted/mpl/mpl_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_MPL_ITERATOR_05052005_0731) #define FUSION_MPL_ITERATOR_05052005_0731 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/support/detail/mpl_iterator_category.hpp> #include <boost/fusion/iterator/iterator_facade.hpp> #include <boost/type_traits/remove_const.hpp> @@ -37,6 +38,7 @@ namespace boost { namespace fusion typename Iterator::iterator_type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator) { @@ -51,6 +53,7 @@ namespace boost { namespace fusion typename mpl::next<typename Iterator::iterator_type>::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator) { @@ -65,6 +68,7 @@ namespace boost { namespace fusion typename mpl::prior<typename Iterator::iterator_type>::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator) { @@ -79,6 +83,7 @@ namespace boost { namespace fusion typename mpl::advance<typename Iterator::iterator_type, N>::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& /*i*/) { @@ -99,6 +104,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(I1 const&, I2 const&) { diff --git a/boost/fusion/adapted/std_pair.hpp b/boost/fusion/adapted/std_pair.hpp index 4263e00c98..79de3d44f3 100644 --- a/boost/fusion/adapted/std_pair.hpp +++ b/boost/fusion/adapted/std_pair.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_STD_PAIR_HPP #define BOOST_FUSION_ADAPTED_STD_PAIR_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/adapted/struct/adapt_struct.hpp> #include <utility> diff --git a/boost/fusion/adapted/std_tuple.hpp b/boost/fusion/adapted/std_tuple.hpp index a49b4807d4..984a4df478 100644 --- a/boost/fusion/adapted/std_tuple.hpp +++ b/boost/fusion/adapted/std_tuple.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_BOOST_TUPLE_09242011_1744) #define BOOST_FUSION_BOOST_TUPLE_09242011_1744 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/adapted/std_tuple/detail/is_view_impl.hpp> #include <boost/fusion/adapted/std_tuple/detail/is_sequence_impl.hpp> #include <boost/fusion/adapted/std_tuple/detail/category_of_impl.hpp> diff --git a/boost/fusion/adapted/std_tuple/detail/at_impl.hpp b/boost/fusion/adapted/std_tuple/detail/at_impl.hpp index 400f366e94..cffd442885 100644 --- a/boost/fusion/adapted/std_tuple/detail/at_impl.hpp +++ b/boost/fusion/adapted/std_tuple/detail/at_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_AT_IMPL_09242011_1744) #define BOOST_FUSION_AT_IMPL_09242011_1744 +#include <boost/fusion/support/config.hpp> #include <tuple> #include <utility> #include <boost/mpl/if.hpp> @@ -39,6 +40,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { diff --git a/boost/fusion/adapted/std_tuple/detail/begin_impl.hpp b/boost/fusion/adapted/std_tuple/detail/begin_impl.hpp index 8b219024b8..33613c20b1 100644 --- a/boost/fusion/adapted/std_tuple/detail/begin_impl.hpp +++ b/boost/fusion/adapted/std_tuple/detail/begin_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_BEGIN_IMPL_09242011_1744) #define BOOST_FUSION_BEGIN_IMPL_09242011_1744 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp> namespace boost { namespace fusion @@ -26,6 +27,7 @@ namespace boost { namespace fusion { typedef std_tuple_iterator<Sequence, 0> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& v) { diff --git a/boost/fusion/adapted/std_tuple/detail/category_of_impl.hpp b/boost/fusion/adapted/std_tuple/detail/category_of_impl.hpp index 96d567d5e9..b41e84181f 100644 --- a/boost/fusion/adapted/std_tuple/detail/category_of_impl.hpp +++ b/boost/fusion/adapted/std_tuple/detail/category_of_impl.hpp @@ -4,8 +4,8 @@ Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_09272006_0726) -#define BOOST_FUSION_CATEGORY_OF_IMPL_09272006_0726 +#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_04202013_0940) +#define BOOST_FUSION_CATEGORY_OF_IMPL_04202013_0940 namespace boost { namespace fusion { diff --git a/boost/fusion/adapted/std_tuple/detail/end_impl.hpp b/boost/fusion/adapted/std_tuple/detail/end_impl.hpp index 78782b7943..77048698a1 100644 --- a/boost/fusion/adapted/std_tuple/detail/end_impl.hpp +++ b/boost/fusion/adapted/std_tuple/detail/end_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_END_IMPL_09242011_1744) #define BOOST_FUSION_END_IMPL_09242011_1744 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp> #include <boost/type_traits/remove_const.hpp> #include <tuple> @@ -30,6 +31,7 @@ namespace boost { namespace fusion static int const size = std::tuple_size<seq_type>::value; typedef std_tuple_iterator<Sequence, size> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& v) { diff --git a/boost/fusion/adapted/std_tuple/detail/is_sequence_impl.hpp b/boost/fusion/adapted/std_tuple/detail/is_sequence_impl.hpp index 6da5bdc34d..672072654d 100644 --- a/boost/fusion/adapted/std_tuple/detail/is_sequence_impl.hpp +++ b/boost/fusion/adapted/std_tuple/detail/is_sequence_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_09242011_1744) #define BOOST_FUSION_IS_SEQUENCE_IMPL_09242011_1744 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/bool.hpp> namespace boost { namespace fusion diff --git a/boost/fusion/adapted/std_tuple/detail/is_view_impl.hpp b/boost/fusion/adapted/std_tuple/detail/is_view_impl.hpp index 9439431b5a..e161984f22 100644 --- a/boost/fusion/adapted/std_tuple/detail/is_view_impl.hpp +++ b/boost/fusion/adapted/std_tuple/detail/is_view_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_IS_VIEW_IMPL_09242011_1744) #define BOOST_FUSION_IS_VIEW_IMPL_09242011_1744 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/bool.hpp> namespace boost { namespace fusion diff --git a/boost/fusion/adapted/std_tuple/detail/size_impl.hpp b/boost/fusion/adapted/std_tuple/detail/size_impl.hpp index d8b10af1ef..11c294e574 100644 --- a/boost/fusion/adapted/std_tuple/detail/size_impl.hpp +++ b/boost/fusion/adapted/std_tuple/detail/size_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SIZE_IMPL_09242011_1744) #define BOOST_FUSION_SIZE_IMPL_09242011_1744 +#include <boost/fusion/support/config.hpp> #include <tuple> #include <boost/mpl/int.hpp> #include <boost/type_traits/remove_const.hpp> diff --git a/boost/fusion/adapted/std_tuple/detail/value_at_impl.hpp b/boost/fusion/adapted/std_tuple/detail/value_at_impl.hpp index fa9656e7b2..e3e853ca42 100644 --- a/boost/fusion/adapted/std_tuple/detail/value_at_impl.hpp +++ b/boost/fusion/adapted/std_tuple/detail/value_at_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_VALUE_AT_IMPL_09242011_1744) #define BOOST_FUSION_VALUE_AT_IMPL_09242011_1744 +#include <boost/fusion/support/config.hpp> #include <tuple> namespace boost { namespace fusion diff --git a/boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp b/boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp index 082018a449..c4d957ea0b 100644 --- a/boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp +++ b/boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_STD_TUPLE_ITERATOR_09112011_1905) #define FUSION_STD_TUPLE_ITERATOR_09112011_1905 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/iterator_facade.hpp> #include <boost/type_traits/is_const.hpp> #include <boost/type_traits/remove_const.hpp> @@ -35,7 +36,7 @@ namespace boost { namespace fusion typename add_const<Tuple>::type, Index> identity; - explicit std_tuple_iterator(Tuple& tuple) + BOOST_FUSION_GPU_ENABLED explicit std_tuple_iterator(Tuple& tuple) : tuple(tuple) {} Tuple& tuple; @@ -57,6 +58,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& iter) { @@ -71,6 +73,7 @@ namespace boost { namespace fusion typedef typename Iterator::tuple_type tuple_type; typedef std_tuple_iterator<tuple_type, index+N::value> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { @@ -93,6 +96,7 @@ namespace boost { namespace fusion { typedef mpl::int_<Last::index-First::index> type; + BOOST_FUSION_GPU_ENABLED static type call(First const&, Last const&) { diff --git a/boost/fusion/adapted/std_tuple/tag_of.hpp b/boost/fusion/adapted/std_tuple/tag_of.hpp index 6d7b4d6fb7..e145335445 100644 --- a/boost/fusion/adapted/std_tuple/tag_of.hpp +++ b/boost/fusion/adapted/std_tuple/tag_of.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_TAG_OF_09112011_1842) #define BOOST_FUSION_TAG_OF_09112011_1842 +#include <boost/fusion/support/config.hpp> #include <tuple> #include <boost/fusion/support/tag_of_fwd.hpp> diff --git a/boost/fusion/adapted/struct.hpp b/boost/fusion/adapted/struct.hpp index e51b514b0a..3f159038a0 100644 --- a/boost/fusion/adapted/struct.hpp +++ b/boost/fusion/adapted/struct.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_HPP #define BOOST_FUSION_ADAPTED_STRUCT_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp> #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp> #include <boost/fusion/adapted/struct/adapt_struct_named.hpp> diff --git a/boost/fusion/adapted/struct/adapt_assoc_struct.hpp b/boost/fusion/adapted/struct/adapt_assoc_struct.hpp index 755bffd1c6..eca77d613b 100644 --- a/boost/fusion/adapted/struct/adapt_assoc_struct.hpp +++ b/boost/fusion/adapted/struct/adapt_assoc_struct.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_ADAPT_ASSOC_STRUCT_HPP #define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_ASSOC_STRUCT_HPP +#include <boost/fusion/support/config.hpp> #include <boost/preprocessor/cat.hpp> #include <boost/preprocessor/empty.hpp> #include <boost/preprocessor/tuple/elem.hpp> diff --git a/boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp b/boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp index 92c3aa3e30..2f1a9a3037 100644 --- a/boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp +++ b/boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_ADAPT_ASSOC_STRUCT_NAMED_HPP #define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_ASSOC_STRUCT_NAMED_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp> #include <boost/fusion/adapted/struct/detail/proxy_type.hpp> diff --git a/boost/fusion/adapted/struct/adapt_struct.hpp b/boost/fusion/adapted/struct/adapt_struct.hpp index f20533c99e..f60ca03e19 100644 --- a/boost/fusion/adapted/struct/adapt_struct.hpp +++ b/boost/fusion/adapted/struct/adapt_struct.hpp @@ -9,6 +9,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_HPP #define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_HPP +#include <boost/fusion/support/config.hpp> #include <boost/preprocessor/cat.hpp> #include <boost/preprocessor/empty.hpp> #include <boost/type_traits/add_reference.hpp> diff --git a/boost/fusion/adapted/struct/adapt_struct_named.hpp b/boost/fusion/adapted/struct/adapt_struct_named.hpp index 17a3d8e3ca..3f29f3a39e 100644 --- a/boost/fusion/adapted/struct/adapt_struct_named.hpp +++ b/boost/fusion/adapted/struct/adapt_struct_named.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_NAMED_HPP #define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_NAMED_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/adapted/struct/adapt_struct.hpp> #include <boost/fusion/adapted/struct/detail/proxy_type.hpp> #include <boost/preprocessor/empty.hpp> diff --git a/boost/fusion/adapted/struct/define_assoc_struct.hpp b/boost/fusion/adapted/struct/define_assoc_struct.hpp index 9d264e4085..1f5ce8dca7 100644 --- a/boost/fusion/adapted/struct/define_assoc_struct.hpp +++ b/boost/fusion/adapted/struct/define_assoc_struct.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_DEFINE_ASSOC_STRUCT_HPP #define BOOST_FUSION_ADAPTED_STRUCT_DEFINE_ASSOC_STRUCT_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp> #include <boost/fusion/adapted/struct/detail/define_struct.hpp> diff --git a/boost/fusion/adapted/struct/define_struct.hpp b/boost/fusion/adapted/struct/define_struct.hpp index b733115ac0..fa1f549f91 100644 --- a/boost/fusion/adapted/struct/define_struct.hpp +++ b/boost/fusion/adapted/struct/define_struct.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_DEFINE_STRUCT_HPP #define BOOST_FUSION_ADAPTED_STRUCT_DEFINE_STRUCT_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/adapted/struct/adapt_struct.hpp> #include <boost/fusion/adapted/struct/detail/define_struct.hpp> diff --git a/boost/fusion/adapted/struct/define_struct_inline.hpp b/boost/fusion/adapted/struct/define_struct_inline.hpp index 9dc5b44cc6..5986c0d445 100644 --- a/boost/fusion/adapted/struct/define_struct_inline.hpp +++ b/boost/fusion/adapted/struct/define_struct_inline.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_DEFINE_STRUCT_INLINE_HPP #define BOOST_FUSION_ADAPTED_STRUCT_DEFINE_STRUCT_INLINE_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/adapted/struct/adapt_struct.hpp> #include <boost/fusion/adapted/struct/detail/define_struct_inline.hpp> diff --git a/boost/fusion/adapted/struct/detail/adapt_base.hpp b/boost/fusion/adapted/struct/detail/adapt_base.hpp index 1c8f040850..db702ae155 100644 --- a/boost/fusion/adapted/struct/detail/adapt_base.hpp +++ b/boost/fusion/adapted/struct/detail/adapt_base.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_ADAPT_BASE_HPP #define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_ADAPT_BASE_HPP +#include <boost/fusion/support/config.hpp> #include <boost/config.hpp> #include <boost/fusion/support/tag_of_fwd.hpp> @@ -137,6 +138,7 @@ >::type \ type; \ \ + BOOST_FUSION_GPU_ENABLED \ static type \ call(Seq& seq) \ { \ @@ -156,6 +158,7 @@ { \ typedef char const* type; \ \ + BOOST_FUSION_GPU_ENABLED \ static type \ call() \ { \ diff --git a/boost/fusion/adapted/struct/detail/at_impl.hpp b/boost/fusion/adapted/struct/detail/at_impl.hpp index 68fd241a88..52ed847d6e 100644 --- a/boost/fusion/adapted/struct/detail/at_impl.hpp +++ b/boost/fusion/adapted/struct/detail/at_impl.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_AT_IMPL_HPP #define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_AT_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/mpl/int.hpp> namespace boost { namespace fusion { namespace extension diff --git a/boost/fusion/adapted/struct/detail/begin_impl.hpp b/boost/fusion/adapted/struct/detail/begin_impl.hpp index a7901fcad5..9cb68719a9 100644 --- a/boost/fusion/adapted/struct/detail/begin_impl.hpp +++ b/boost/fusion/adapted/struct/detail/begin_impl.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_BEGIN_IMPL_HPP #define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_BEGIN_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/basic_iterator.hpp> namespace boost { namespace fusion { namespace extension @@ -32,6 +33,7 @@ namespace boost { namespace fusion { namespace extension > type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { @@ -55,6 +57,7 @@ namespace boost { namespace fusion { namespace extension > type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { diff --git a/boost/fusion/adapted/struct/detail/define_struct.hpp b/boost/fusion/adapted/struct/detail/define_struct.hpp index 53f1e5d646..44d99f06b4 100644 --- a/boost/fusion/adapted/struct/detail/define_struct.hpp +++ b/boost/fusion/adapted/struct/detail/define_struct.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_DETAIL_STRUCT_DEFINE_STRUCT_HPP #define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_DEFINE_STRUCT_HPP +#include <boost/fusion/support/config.hpp> #include <boost/config.hpp> #include <boost/fusion/sequence/intrinsic/begin.hpp> #include <boost/fusion/iterator/deref.hpp> @@ -61,6 +62,7 @@ ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ \ template<typename Seq> \ + BOOST_FUSION_GPU_ENABLED \ self_type& \ operator=(Seq const& seq) \ { \ @@ -119,6 +121,7 @@ ATTRIBUTE_TUPEL_SIZE, \ ATTRIBUTES_SEQ) \ \ + BOOST_FUSION_GPU_ENABLED \ NAME() \ : BOOST_PP_SEQ_FOR_EACH_I_R( \ 1, \ @@ -127,6 +130,7 @@ ATTRIBUTES_SEQ) \ {} \ \ + BOOST_FUSION_GPU_ENABLED \ NAME(self_type const& other_self) \ : BOOST_PP_SEQ_FOR_EACH_I_R( \ 1, \ @@ -136,6 +140,7 @@ {} \ \ template<typename Seq> \ + BOOST_FUSION_GPU_ENABLED \ NAME(Seq const& seq \ BOOST_PP_IF( \ BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ)), \ @@ -155,6 +160,7 @@ #define BOOST_FUSION_DEFINE_STRUCT_CTOR_1( \ NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ \ + BOOST_FUSION_GPU_ENABLED \ explicit \ NAME(boost::call_traits< \ BOOST_PP_TUPLE_ELEM( \ @@ -167,6 +173,7 @@ #define BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_1( \ TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ \ + BOOST_FUSION_GPU_ENABLED \ explicit \ NAME(typename boost::call_traits< \ typename boost::fusion::detail::get_first_arg< \ @@ -203,6 +210,7 @@ #define BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_N( \ TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ \ + BOOST_FUSION_GPU_ENABLED \ NAME(BOOST_PP_SEQ_FOR_EACH_I_R( \ 1, \ BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_ARG_I, \ @@ -230,6 +238,7 @@ #define BOOST_FUSION_DEFINE_STRUCT_CTOR_N( \ NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ \ + BOOST_FUSION_GPU_ENABLED \ NAME(BOOST_PP_SEQ_FOR_EACH_I_R( \ 1, \ BOOST_FUSION_DEFINE_STRUCT_CTOR_ARG_I, \ @@ -271,10 +280,12 @@ NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ \ template<typename Seq> \ + BOOST_FUSION_GPU_ENABLED \ NAME(Seq const&) \ {} \ \ template<typename Seq> \ + BOOST_FUSION_GPU_ENABLED \ self_type& \ operator=(Seq const& seq) \ { \ diff --git a/boost/fusion/adapted/struct/detail/define_struct_inline.hpp b/boost/fusion/adapted/struct/detail/define_struct_inline.hpp index a7961ec311..d720fcf8a5 100644 --- a/boost/fusion/adapted/struct/detail/define_struct_inline.hpp +++ b/boost/fusion/adapted/struct/detail/define_struct_inline.hpp @@ -8,6 +8,8 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_DEFINE_STRUCT_INLINE_HPP #define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_DEFINE_STRUCT_INLINE_HPP +#include <boost/fusion/support/config.hpp> +#include <boost/config.hpp> #include <boost/fusion/support/category_of.hpp> #include <boost/fusion/sequence/sequence_facade.hpp> #include <boost/fusion/iterator/iterator_facade.hpp> @@ -20,12 +22,37 @@ #include <boost/mpl/if.hpp> #include <boost/type_traits/is_const.hpp> #include <boost/preprocessor/comma_if.hpp> +#include <boost/preprocessor/facilities/is_empty.hpp> #include <boost/preprocessor/repeat.hpp> #include <boost/preprocessor/seq/for_each_i.hpp> #include <boost/preprocessor/seq/size.hpp> #include <boost/preprocessor/seq/enum.hpp> +#include <boost/preprocessor/seq/seq.hpp> #include <boost/preprocessor/tuple/elem.hpp> +// MSVC and GCC <= 4.4 have a bug that affects partial specializations of +// nested templates under some circumstances. This affects the implementation +// of BOOST_FUSION_DEFINE_STRUCT_INLINE, which uses such specializations for +// the iterator class's 'deref' and 'value_of' metafunctions. On these compilers +// an alternate implementation for these metafunctions is used that does not +// require such specializations. The alternate implementation takes longer +// to compile so its use is restricted to the offending compilers. +// For MSVC, the bug was reported at https://connect.microsoft.com/VisualStudio/feedback/details/757891/c-compiler-error-involving-partial-specializations-of-nested-templates +// For GCC, 4.4 and earlier are no longer maintained so there is no need +// to report a bug. +#if defined(BOOST_MSVC) || (defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ <= 4))) + #define BOOST_FUSION_NEED_NESTED_TEMPLATE_PARTIAL_SPEC_WKND +#endif + +#ifdef BOOST_FUSION_NEED_NESTED_TEMPLATE_PARTIAL_SPEC_WKND +#include <boost/type_traits/add_const.hpp> +#include <boost/type_traits/remove_const.hpp> +#include <boost/mpl/if.hpp> +#include <boost/fusion/sequence/intrinsic/at_c.hpp> +#include <boost/fusion/container/vector.hpp> +#endif + + #define BOOST_FUSION_MAKE_DEFAULT_INIT_LIST_ENTRY(R, DATA, N, ATTRIBUTE) \ BOOST_PP_COMMA_IF(N) BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE)() @@ -61,15 +88,20 @@ BOOST_PP_COMMA_IF(N) \ BOOST_FUSION_MAKE_INIT_LIST_ENTRY_I(BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE)) +#define BOOST_FUSION_ITERATOR_NAME(NAME) \ + BOOST_PP_CAT(boost_fusion_detail_, BOOST_PP_CAT(NAME, _iterator)) + // Note: all template parameter names need to be uglified, otherwise they might // shadow a template parameter of the struct when used with // BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE #define BOOST_FUSION_MAKE_ITERATOR_VALUE_OF_SPECS(Z, N, NAME) \ - template <typename boost_fusion_uglified_Sq> \ - struct value_of<NAME##_iterator<boost_fusion_uglified_Sq, N> > \ + template <typename boost_fusion_detail_Sq> \ + struct value_of< \ + BOOST_FUSION_ITERATOR_NAME(NAME)<boost_fusion_detail_Sq, N> \ + > \ : boost::mpl::identity< \ - typename boost_fusion_uglified_Sq::t##N##_type \ + typename boost_fusion_detail_Sq::t##N##_type \ > \ { \ }; @@ -77,10 +109,11 @@ #define BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \ SPEC_TYPE, CALL_ARG_TYPE, TYPE_QUAL, ATTRIBUTE, N) \ \ - template <typename boost_fusion_uglified_Sq> \ + template <typename boost_fusion_detail_Sq> \ struct deref<SPEC_TYPE, N> > \ { \ - typedef typename boost_fusion_uglified_Sq::t##N##_type TYPE_QUAL& type; \ + typedef typename boost_fusion_detail_Sq::t##N##_type TYPE_QUAL& type; \ + BOOST_FUSION_GPU_ENABLED \ static type call(CALL_ARG_TYPE, N> const& iter) \ { \ return iter.seq_.BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE); \ @@ -89,48 +122,49 @@ #define BOOST_FUSION_MAKE_ITERATOR_DEREF_SPECS(R, NAME, N, ATTRIBUTE) \ BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \ - BOOST_PP_CAT(NAME, _iterator)<boost_fusion_uglified_Sq, \ - BOOST_PP_CAT(NAME, _iterator)<boost_fusion_uglified_Sq, \ + BOOST_FUSION_ITERATOR_NAME(NAME)<boost_fusion_detail_Sq, \ + BOOST_FUSION_ITERATOR_NAME(NAME)<boost_fusion_detail_Sq, \ , \ ATTRIBUTE, \ N) \ BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \ - BOOST_PP_CAT(NAME, _iterator)<const boost_fusion_uglified_Sq, \ - BOOST_PP_CAT(NAME, _iterator)<const boost_fusion_uglified_Sq, \ + BOOST_FUSION_ITERATOR_NAME(NAME)<const boost_fusion_detail_Sq, \ + BOOST_FUSION_ITERATOR_NAME(NAME)<const boost_fusion_detail_Sq, \ const, \ ATTRIBUTE, \ N) \ BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \ - const BOOST_PP_CAT(NAME, _iterator)<boost_fusion_uglified_Sq, \ - BOOST_PP_CAT(NAME, _iterator)<boost_fusion_uglified_Sq, \ + const BOOST_FUSION_ITERATOR_NAME(NAME)<boost_fusion_detail_Sq, \ + BOOST_FUSION_ITERATOR_NAME(NAME)<boost_fusion_detail_Sq, \ , \ ATTRIBUTE, \ N) \ BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \ - const BOOST_PP_CAT(NAME, _iterator)<const boost_fusion_uglified_Sq, \ - BOOST_PP_CAT(NAME, _iterator)<const boost_fusion_uglified_Sq, \ + const BOOST_FUSION_ITERATOR_NAME(NAME)<const boost_fusion_detail_Sq, \ + BOOST_FUSION_ITERATOR_NAME(NAME)<const boost_fusion_detail_Sq, \ const, \ ATTRIBUTE, \ N) \ #define BOOST_FUSION_MAKE_VALUE_AT_SPECS(Z, N, DATA) \ - template <typename boost_fusion_uglified_Sq> \ - struct value_at<boost_fusion_uglified_Sq, boost::mpl::int_<N> > \ + template <typename boost_fusion_detail_Sq> \ + struct value_at<boost_fusion_detail_Sq, boost::mpl::int_<N> > \ { \ - typedef typename boost_fusion_uglified_Sq::t##N##_type type; \ + typedef typename boost_fusion_detail_Sq::t##N##_type type; \ }; #define BOOST_FUSION_MAKE_AT_SPECS(R, DATA, N, ATTRIBUTE) \ - template <typename boost_fusion_uglified_Sq> \ - struct at<boost_fusion_uglified_Sq, boost::mpl::int_<N> > \ + template <typename boost_fusion_detail_Sq> \ + struct at<boost_fusion_detail_Sq, boost::mpl::int_<N> > \ { \ typedef typename boost::mpl::if_< \ - boost::is_const<boost_fusion_uglified_Sq>, \ - typename boost_fusion_uglified_Sq::t##N##_type const&, \ - typename boost_fusion_uglified_Sq::t##N##_type& \ + boost::is_const<boost_fusion_detail_Sq>, \ + typename boost_fusion_detail_Sq::t##N##_type const&, \ + typename boost_fusion_detail_Sq::t##N##_type& \ >::type type; \ \ - static type call(boost_fusion_uglified_Sq& sq) \ + BOOST_FUSION_GPU_ENABLED \ + static type call(boost_fusion_detail_Sq& sq) \ { \ return sq. BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE); \ } \ @@ -142,7 +176,101 @@ #define BOOST_FUSION_MAKE_DATA_MEMBER(R, DATA, N, ATTRIBUTE) \ BOOST_PP_TUPLE_ELEM(2, 0, ATTRIBUTE) BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE); +#ifdef BOOST_FUSION_NEED_NESTED_TEMPLATE_PARTIAL_SPEC_WKND + +#define BOOST_FUSION_DEFINE_ITERATOR_VALUE_OF(NAME, ATTRIBUTE_SEQ_SIZE) \ + template <typename boost_fusion_detail_Iterator> \ + struct value_of : boost::fusion::result_of::at_c< \ + ref_vec_t, \ + boost_fusion_detail_Iterator::index::value \ + > \ + { \ + }; + +#define BOOST_FUSION_DEFINE_ITERATOR_DEREF(NAME, ATTRIBUTES_SEQ) \ + template <typename boost_fusion_detail_Iterator> \ + struct deref \ + { \ + typedef typename boost::remove_const< \ + boost_fusion_detail_Iterator \ + >::type iterator_raw_type; \ + \ + static const int index = iterator_raw_type::index::value; \ + \ + typedef typename boost::fusion::result_of::at_c< \ + ref_vec_t, \ + index \ + >::type result_raw_type; \ + \ + typedef typename boost::mpl::if_< \ + boost::is_const<typename iterator_raw_type::sequence_type>, \ + typename boost::add_const<result_raw_type>::type, \ + result_raw_type \ + >::type type; \ + \ + BOOST_FUSION_GPU_ENABLED \ + static type call(iterator_raw_type const& iter) \ + { \ + return boost::fusion::at_c<index>(iter.ref_vec); \ + } \ + }; + +#define BOOST_FUSION_MAKE_ITERATOR_WKND_FIELD_NAME(R, DATA, N, ATTRIBUTE) \ + BOOST_PP_COMMA_IF(N) seq.BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE) + +#define BOOST_FUSION_DEFINE_ITERATOR_WKND_INIT_LIST_ENTRIES(ATTRIBUTES_SEQ) \ + , ref_vec(BOOST_PP_SEQ_FOR_EACH_I( \ + BOOST_FUSION_MAKE_ITERATOR_WKND_FIELD_NAME, \ + ~, \ + BOOST_PP_SEQ_TAIL(ATTRIBUTES_SEQ))) + +#define BOOST_FUSION_MAKE_ITERATOR_WKND_REF(Z, N, DATA) \ + BOOST_PP_COMMA_IF(N) \ + typename boost::mpl::if_< \ + boost::is_const<boost_fusion_detail_Seq>, \ + typename boost::add_const< \ + typename boost_fusion_detail_Seq::t##N##_type \ + >::type, \ + typename boost_fusion_detail_Seq::t##N##_type \ + >::type& + +#define BOOST_FUSION_DEFINE_ITERATOR_WKND_MEMBERS(ATTRIBUTES_SEQ_SIZE) \ + typedef boost::fusion::vector< \ + BOOST_PP_REPEAT( \ + ATTRIBUTES_SEQ_SIZE, \ + BOOST_FUSION_MAKE_ITERATOR_WKND_REF, \ + ~) \ + > ref_vec_t; \ + \ + ref_vec_t ref_vec; + +#else + +#define BOOST_FUSION_DEFINE_ITERATOR_VALUE_OF(NAME, ATTRIBUTES_SEQ_SIZE) \ + template <typename boost_fusion_detail_T> struct value_of; \ + BOOST_PP_REPEAT( \ + ATTRIBUTES_SEQ_SIZE, \ + BOOST_FUSION_MAKE_ITERATOR_VALUE_OF_SPECS, \ + NAME) + +#define BOOST_FUSION_DEFINE_ITERATOR_DEREF(NAME, ATTRIBUTES_SEQ) \ + template <typename boost_fusion_detail_T> struct deref; \ + BOOST_PP_SEQ_FOR_EACH_I( \ + BOOST_FUSION_MAKE_ITERATOR_DEREF_SPECS, \ + NAME, \ + ATTRIBUTES_SEQ) + +#define BOOST_FUSION_DEFINE_ITERATOR_WKND_INIT_LIST_ENTRIES(ATTRIBUTES_SEQ) + +#define BOOST_FUSION_DEFINE_ITERATOR_WKND_MEMBERS(ATTRIBUTES_SEQ_SIZE) + +#endif // BOOST_FUSION_NEED_NESTED_TEMPLATE_PARTIAL_SPEC_WKND + +// Note: We can't nest the iterator inside the struct because we run into +// a MSVC10 bug involving partial specializations of nested templates. + #define BOOST_FUSION_DEFINE_STRUCT_INLINE_IMPL(NAME, ATTRIBUTES) \ + BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR(NAME, ATTRIBUTES) \ struct NAME : boost::fusion::sequence_facade< \ NAME, \ boost::fusion::random_access_traversal_tag \ @@ -154,6 +282,8 @@ #define BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE_IMPL( \ TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES) \ \ + BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR(NAME, ATTRIBUTES) \ + \ template < \ BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS_IMPL( \ (0)TEMPLATE_PARAMS_SEQ) \ @@ -173,176 +303,207 @@ NAME, \ BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END)) +// Note: can't compute BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ) directly because +// ATTRIBUTES_SEQ may be empty and calling BOOST_PP_SEQ_SIZE on an empty +// sequence produces warnings on MSVC. #define BOOST_FUSION_DEFINE_STRUCT_MEMBERS_IMPL(NAME, ATTRIBUTES_SEQ) \ BOOST_FUSION_DEFINE_STRUCT_INLINE_MEMBERS_IMPL_IMPL( \ NAME, \ ATTRIBUTES_SEQ, \ - BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ)) + BOOST_PP_DEC(BOOST_PP_SEQ_SIZE((0)ATTRIBUTES_SEQ))) -#define BOOST_FUSION_DEFINE_STRUCT_INLINE_MEMBERS_IMPL_IMPL( \ +#define BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR(NAME, ATTRIBUTES) \ + BOOST_FUSION_DEFINE_STRUCT_ITERATOR_IMPL( \ + NAME, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END)) + +#define BOOST_FUSION_DEFINE_STRUCT_ITERATOR_IMPL(NAME, ATTRIBUTES_SEQ) \ + BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR_IMPL_IMPL( \ + NAME, \ + ATTRIBUTES_SEQ, \ + BOOST_PP_DEC(BOOST_PP_SEQ_SIZE((0)ATTRIBUTES_SEQ))) + +#define BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR_IMPL_IMPL( \ NAME, ATTRIBUTES_SEQ, ATTRIBUTES_SEQ_SIZE) \ \ - NAME() \ - BOOST_PP_IF( \ - BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ), \ - BOOST_FUSION_MAKE_DEFAULT_INIT_LIST, \ - BOOST_FUSION_IGNORE_1) \ - (ATTRIBUTES_SEQ) \ - { \ - } \ - \ - BOOST_PP_IF( \ - BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ), \ - BOOST_FUSION_MAKE_COPY_CONSTRUCTOR, \ - BOOST_FUSION_IGNORE_2) \ - (NAME, ATTRIBUTES_SEQ) \ - \ - template <typename boost_fusion_uglified_Seq> \ - NAME(const boost_fusion_uglified_Seq& rhs) \ - { \ - boost::fusion::copy(rhs, *this); \ - } \ - \ - template <typename boost_fusion_uglified_Seq> \ - NAME& operator=(const boost_fusion_uglified_Seq& rhs) \ - { \ - boost::fusion::copy(rhs, *this); \ - return *this; \ - } \ - \ - template <typename boost_fusion_uglified_Seq, int N> \ - struct NAME##_iterator \ + template <typename boost_fusion_detail_Seq, int N> \ + struct BOOST_FUSION_ITERATOR_NAME(NAME) \ : boost::fusion::iterator_facade< \ - NAME##_iterator<boost_fusion_uglified_Seq, N>, \ + BOOST_FUSION_ITERATOR_NAME(NAME)<boost_fusion_detail_Seq, N>, \ boost::fusion::random_access_traversal_tag \ > \ { \ typedef boost::mpl::int_<N> index; \ - typedef boost_fusion_uglified_Seq sequence_type; \ + typedef boost_fusion_detail_Seq sequence_type; \ \ - NAME##_iterator(boost_fusion_uglified_Seq& seq) : seq_(seq) {} \ + BOOST_FUSION_GPU_ENABLED \ + BOOST_FUSION_ITERATOR_NAME(NAME)(boost_fusion_detail_Seq& seq) \ + : seq_(seq) \ + BOOST_FUSION_DEFINE_ITERATOR_WKND_INIT_LIST_ENTRIES( \ + (0)ATTRIBUTES_SEQ) \ + {} \ \ - boost_fusion_uglified_Seq& seq_; \ + boost_fusion_detail_Seq& seq_; \ \ - template <typename boost_fusion_uglified_T> struct value_of; \ - BOOST_PP_REPEAT( \ - ATTRIBUTES_SEQ_SIZE, \ - BOOST_FUSION_MAKE_ITERATOR_VALUE_OF_SPECS, \ - NAME) \ + BOOST_FUSION_DEFINE_ITERATOR_WKND_MEMBERS(ATTRIBUTES_SEQ_SIZE) \ \ - template <typename boost_fusion_uglified_T> struct deref; \ - BOOST_PP_SEQ_FOR_EACH_I( \ - BOOST_FUSION_MAKE_ITERATOR_DEREF_SPECS, \ - NAME, \ - ATTRIBUTES_SEQ) \ + BOOST_FUSION_DEFINE_ITERATOR_VALUE_OF(NAME, ATTRIBUTES_SEQ_SIZE) \ + \ + BOOST_FUSION_DEFINE_ITERATOR_DEREF(NAME, ATTRIBUTES_SEQ) \ \ - template <typename boost_fusion_uglified_It> \ + template <typename boost_fusion_detail_It> \ struct next \ { \ - typedef NAME##_iterator< \ - typename boost_fusion_uglified_It::sequence_type, \ - boost_fusion_uglified_It::index::value + 1 \ + typedef BOOST_FUSION_ITERATOR_NAME(NAME)< \ + typename boost_fusion_detail_It::sequence_type, \ + boost_fusion_detail_It::index::value + 1 \ > type; \ \ - static type call(boost_fusion_uglified_It const& it) \ + BOOST_FUSION_GPU_ENABLED \ + static type call(boost_fusion_detail_It const& it) \ { \ return type(it.seq_); \ } \ }; \ \ - template <typename boost_fusion_uglified_It> \ + template <typename boost_fusion_detail_It> \ struct prior \ { \ - typedef NAME##_iterator< \ - typename boost_fusion_uglified_It::sequence_type, \ - boost_fusion_uglified_It::index::value - 1 \ + typedef BOOST_FUSION_ITERATOR_NAME(NAME)< \ + typename boost_fusion_detail_It::sequence_type, \ + boost_fusion_detail_It::index::value - 1 \ > type; \ \ - static type call(boost_fusion_uglified_It const& it) \ + BOOST_FUSION_GPU_ENABLED \ + static type call(boost_fusion_detail_It const& it) \ { \ return type(it.seq_); \ } \ }; \ \ template < \ - typename boost_fusion_uglified_It1, \ - typename boost_fusion_uglified_It2 \ + typename boost_fusion_detail_It1, \ + typename boost_fusion_detail_It2 \ > \ struct distance \ { \ typedef typename boost::mpl::minus< \ - typename boost_fusion_uglified_It2::index, \ - typename boost_fusion_uglified_It1::index \ + typename boost_fusion_detail_It2::index, \ + typename boost_fusion_detail_It1::index \ >::type type; \ \ - static type call(boost_fusion_uglified_It1 const& it1, \ - boost_fusion_uglified_It2 const& it2) \ + BOOST_FUSION_GPU_ENABLED \ + static type call(boost_fusion_detail_It1 const& /* it1 */, \ + boost_fusion_detail_It2 const& /* it2 */) \ { \ return type(); \ } \ }; \ \ template < \ - typename boost_fusion_uglified_It, \ - typename boost_fusion_uglified_M \ + typename boost_fusion_detail_It, \ + typename boost_fusion_detail_M \ > \ struct advance \ { \ - typedef NAME##_iterator< \ - typename boost_fusion_uglified_It::sequence_type, \ - boost_fusion_uglified_It::index::value \ - + boost_fusion_uglified_M::value \ + typedef BOOST_FUSION_ITERATOR_NAME(NAME)< \ + typename boost_fusion_detail_It::sequence_type, \ + boost_fusion_detail_It::index::value \ + + boost_fusion_detail_M::value \ > type; \ \ - static type call(boost_fusion_uglified_It const& it) \ + BOOST_FUSION_GPU_ENABLED \ + static type call(boost_fusion_detail_It const& it) \ { \ return type(it.seq_); \ } \ }; \ - }; \ + }; + + +#define BOOST_FUSION_DEFINE_STRUCT_INLINE_MEMBERS_IMPL_IMPL( \ + NAME, ATTRIBUTES_SEQ, ATTRIBUTES_SEQ_SIZE) \ + \ + /* Note: second BOOST_PP_IF is necessary to avoid MSVC warning when */ \ + /* calling BOOST_FUSION_IGNORE_1 with no arguments. */ \ + NAME() \ + BOOST_PP_IF( \ + ATTRIBUTES_SEQ_SIZE, \ + BOOST_FUSION_MAKE_DEFAULT_INIT_LIST, \ + BOOST_FUSION_IGNORE_1) \ + (BOOST_PP_IF( \ + ATTRIBUTES_SEQ_SIZE, \ + ATTRIBUTES_SEQ, \ + 0)) \ + { \ + } \ + \ + BOOST_PP_IF( \ + ATTRIBUTES_SEQ_SIZE, \ + BOOST_FUSION_MAKE_COPY_CONSTRUCTOR, \ + BOOST_FUSION_IGNORE_2) \ + (NAME, ATTRIBUTES_SEQ) \ + \ + template <typename boost_fusion_detail_Seq> \ + 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 \ + NAME& operator=(const boost_fusion_detail_Seq& rhs) \ + { \ + boost::fusion::copy(rhs, *this); \ + return *this; \ + } \ \ - template <typename boost_fusion_uglified_Sq> \ + template <typename boost_fusion_detail_Sq> \ struct begin \ { \ - typedef NAME##_iterator<boost_fusion_uglified_Sq, 0> type; \ + typedef BOOST_FUSION_ITERATOR_NAME(NAME)<boost_fusion_detail_Sq, 0> \ + type; \ \ - static type call(boost_fusion_uglified_Sq& sq) \ + BOOST_FUSION_GPU_ENABLED \ + static type call(boost_fusion_detail_Sq& sq) \ { \ return type(sq); \ } \ }; \ \ - template <typename boost_fusion_uglified_Sq> \ + template <typename boost_fusion_detail_Sq> \ struct end \ { \ - typedef NAME##_iterator< \ - boost_fusion_uglified_Sq, \ + typedef BOOST_FUSION_ITERATOR_NAME(NAME)< \ + boost_fusion_detail_Sq, \ ATTRIBUTES_SEQ_SIZE \ > type; \ \ - static type call(boost_fusion_uglified_Sq& sq) \ + BOOST_FUSION_GPU_ENABLED \ + static type call(boost_fusion_detail_Sq& sq) \ { \ return type(sq); \ } \ }; \ \ - template <typename boost_fusion_uglified_Sq> \ + template <typename boost_fusion_detail_Sq> \ struct size : boost::mpl::int_<ATTRIBUTES_SEQ_SIZE> \ { \ }; \ \ - template <typename boost_fusion_uglified_Sq> \ + template <typename boost_fusion_detail_Sq> \ struct empty : boost::mpl::bool_<ATTRIBUTES_SEQ_SIZE == 0> \ { \ }; \ \ template < \ - typename boost_fusion_uglified_Sq, \ - typename boost_fusion_uglified_N \ + typename boost_fusion_detail_Sq, \ + typename boost_fusion_detail_N \ > \ struct value_at : value_at< \ - boost_fusion_uglified_Sq, \ - boost::mpl::int_<boost_fusion_uglified_N::value> \ + boost_fusion_detail_Sq, \ + boost::mpl::int_<boost_fusion_detail_N::value> \ > \ { \ }; \ @@ -353,12 +514,12 @@ ~) \ \ template < \ - typename boost_fusion_uglified_Sq, \ - typename boost_fusion_uglified_N \ + typename boost_fusion_detail_Sq, \ + typename boost_fusion_detail_N \ > \ struct at : at< \ - boost_fusion_uglified_Sq, \ - boost::mpl::int_<boost_fusion_uglified_N::value> \ + boost_fusion_detail_Sq, \ + boost::mpl::int_<boost_fusion_detail_N::value> \ > \ { \ }; \ diff --git a/boost/fusion/adapted/struct/detail/deref_impl.hpp b/boost/fusion/adapted/struct/detail/deref_impl.hpp index 3f25efef58..a3bc9f3e19 100644 --- a/boost/fusion/adapted/struct/detail/deref_impl.hpp +++ b/boost/fusion/adapted/struct/detail/deref_impl.hpp @@ -28,6 +28,7 @@ namespace boost { namespace fusion { namespace extension typedef typename impl::type type; + BOOST_FUSION_GPU_ENABLED static type call(It const& it) diff --git a/boost/fusion/adapted/struct/detail/end_impl.hpp b/boost/fusion/adapted/struct/detail/end_impl.hpp index 0d09092957..b17eba7139 100644 --- a/boost/fusion/adapted/struct/detail/end_impl.hpp +++ b/boost/fusion/adapted/struct/detail/end_impl.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_END_IMPL_HPP #define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_END_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/basic_iterator.hpp> namespace boost { namespace fusion { namespace extension @@ -32,6 +33,7 @@ namespace boost { namespace fusion { namespace extension > type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { @@ -55,6 +57,7 @@ namespace boost { namespace fusion { namespace extension > type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { diff --git a/boost/fusion/adapted/struct/detail/extension.hpp b/boost/fusion/adapted/struct/detail/extension.hpp index 17edb89dca..e63a0a4535 100644 --- a/boost/fusion/adapted/struct/detail/extension.hpp +++ b/boost/fusion/adapted/struct/detail/extension.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_EXTENSION_HPP #define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_EXTENSION_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/support/category_of.hpp> namespace boost { namespace fusion diff --git a/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp b/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp index c32222f8cf..afcbe5ba44 100644 --- a/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp +++ b/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_SEQUENCE_IMPL_HPP #define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_SEQUENCE_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/mpl/bool.hpp> namespace boost { namespace fusion { namespace extension diff --git a/boost/fusion/adapted/struct/detail/namespace.hpp b/boost/fusion/adapted/struct/detail/namespace.hpp index 0f3ec5e0b1..2ad509df86 100644 --- a/boost/fusion/adapted/struct/detail/namespace.hpp +++ b/boost/fusion/adapted/struct/detail/namespace.hpp @@ -9,6 +9,7 @@ #ifndef BOOST_FUSION_ADAPTED_DETAIL_STRUCT_NAMESPACE_HPP #define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_NAMESPACE_HPP +#include <boost/fusion/support/config.hpp> #include <boost/preprocessor/dec.hpp> #include <boost/preprocessor/control/if.hpp> #include <boost/preprocessor/seq/seq.hpp> diff --git a/boost/fusion/adapted/struct/detail/proxy_type.hpp b/boost/fusion/adapted/struct/detail/proxy_type.hpp index bf0a6ebd53..350137a482 100644 --- a/boost/fusion/adapted/struct/detail/proxy_type.hpp +++ b/boost/fusion/adapted/struct/detail/proxy_type.hpp @@ -9,6 +9,7 @@ #ifndef BOOST_FUSION_ADAPTED_DETAIL_STRUCT_PROXY_TYPE_HPP #define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_PROXY_TYPE_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/adapted/struct/detail/namespace.hpp> #define BOOST_FUSION_ADAPT_STRUCT_DEFINE_PROXY_TYPE_IMPL( \ @@ -18,6 +19,7 @@ \ struct NAME \ { \ + BOOST_FUSION_GPU_ENABLED \ NAME(WRAPPED_TYPE& in_obj) \ : obj(in_obj) \ {} \ |