diff --git a/include/boost/fusion/adapted/array/tag_of.hpp b/include/boost/fusion/adapted/array/tag_of.hpp index 96f6d35c..d858e5ab 100644 --- a/include/boost/fusion/adapted/array/tag_of.hpp +++ b/include/boost/fusion/adapted/array/tag_of.hpp @@ -25,7 +25,11 @@ namespace boost { namespace fusion namespace traits { template +#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) + struct tag_of, void > +#else struct tag_of > +#endif { typedef array_tag type; }; diff --git a/include/boost/fusion/adapted/boost_tuple/tag_of.hpp b/include/boost/fusion/adapted/boost_tuple/tag_of.hpp index a1a27aa7..0ce87086 100644 --- a/include/boost/fusion/adapted/boost_tuple/tag_of.hpp +++ b/include/boost/fusion/adapted/boost_tuple/tag_of.hpp @@ -33,13 +33,21 @@ namespace boost { namespace fusion class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 > +#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) + struct tag_of, void > +#else struct tag_of > +#endif { typedef boost_tuple_tag type; }; template +#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) + struct tag_of, void > +#else struct tag_of > +#endif { typedef boost_tuple_tag type; }; diff --git a/include/boost/fusion/adapted/std_pair.hpp b/include/boost/fusion/adapted/std_pair.hpp index d13b810a..ec0905de 100644 --- a/include/boost/fusion/adapted/std_pair.hpp +++ b/include/boost/fusion/adapted/std_pair.hpp @@ -20,7 +20,11 @@ namespace boost { namespace fusion namespace traits { template +#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) + struct tag_of, void > +#else struct tag_of > +#endif { typedef struct_tag type; }; diff --git a/include/boost/fusion/adapted/variant/tag_of.hpp b/include/boost/fusion/adapted/variant/tag_of.hpp index 3ec31460..fcaa894e 100644 --- a/include/boost/fusion/adapted/variant/tag_of.hpp +++ b/include/boost/fusion/adapted/variant/tag_of.hpp @@ -18,7 +18,11 @@ namespace boost { namespace fusion namespace traits { template +#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) + struct tag_of, void > +#else struct tag_of > +#endif { typedef variant_tag type; }; diff --git a/include/boost/fusion/algorithm/transformation/transform.hpp b/include/boost/fusion/algorithm/transformation/transform.hpp index d9f06e7c..4a521532 100644 --- a/include/boost/fusion/algorithm/transformation/transform.hpp +++ b/include/boost/fusion/algorithm/transformation/transform.hpp @@ -22,7 +22,11 @@ namespace boost { namespace fusion }; template +#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) + struct transform +#else struct transform +#endif { typedef transform_view type; }; diff --git a/include/boost/fusion/algorithm/transformation/zip.hpp b/include/boost/fusion/algorithm/transformation/zip.hpp index a2f66bfd..4f20a845 100644 --- a/include/boost/fusion/algorithm/transformation/zip.hpp +++ b/include/boost/fusion/algorithm/transformation/zip.hpp @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -53,7 +54,13 @@ namespace boost { namespace fusion { namespace result_of { template< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, typename T) > +#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) + #define TEXT(z, n, text) , text + struct zip< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(ZIP_ITERATION), FUSION_MAX_ZIP_SEQUENCES, TEXT, void_) > + #undef TEXT +#else struct zip< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, T) > +#endif { typedef mpl::vector< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, T) > sequences; typedef typename mpl::transform >::type ref_params; diff --git a/include/boost/fusion/sequence/generation/deque_tie.hpp b/include/boost/fusion/sequence/generation/deque_tie.hpp index 5f8a2f08..4eeef1a2 100644 --- a/include/boost/fusion/sequence/generation/deque_tie.hpp +++ b/include/boost/fusion/sequence/generation/deque_tie.hpp @@ -14,6 +14,7 @@ #include #include #include +#include #include namespace boost { namespace fusion @@ -53,7 +54,13 @@ namespace boost { namespace fusion namespace result_of { template +#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) + #define TEXT(z, n, text) , text + struct deque_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) > + #undef TEXT +#else struct deque_tie +#endif { typedef deque type; }; diff --git a/include/boost/fusion/sequence/generation/list_tie.hpp b/include/boost/fusion/sequence/generation/list_tie.hpp index 946fdbc3..b23cee93 100644 --- a/include/boost/fusion/sequence/generation/list_tie.hpp +++ b/include/boost/fusion/sequence/generation/list_tie.hpp @@ -13,6 +13,7 @@ #include #include #include +#include #include namespace boost { namespace fusion @@ -53,7 +54,13 @@ namespace boost { namespace fusion namespace result_of { template +#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) + #define TEXT(z, n, text) , text + struct list_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_LIST_SIZE, TEXT, void_) > + #undef TEXT +#else struct list_tie +#endif { typedef list type; }; diff --git a/include/boost/fusion/sequence/generation/make_deque.hpp b/include/boost/fusion/sequence/generation/make_deque.hpp index 5bcd4962..6d6fc372 100644 --- a/include/boost/fusion/sequence/generation/make_deque.hpp +++ b/include/boost/fusion/sequence/generation/make_deque.hpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -72,7 +73,13 @@ namespace boost { namespace fusion namespace result_of { template +#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) + #define TEXT(z, n, text) , text + struct make_deque< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) > + #undef TEXT +#else struct make_deque +#endif { typedef deque type; }; diff --git a/include/boost/fusion/sequence/generation/make_list.hpp b/include/boost/fusion/sequence/generation/make_list.hpp index 122fe751..c2c4d521 100644 --- a/include/boost/fusion/sequence/generation/make_list.hpp +++ b/include/boost/fusion/sequence/generation/make_list.hpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -65,7 +66,13 @@ namespace boost { namespace fusion namespace result_of { template +#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) + #define TEXT(z, n, text) , text + struct make_list< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_LIST_SIZE, TEXT, void_) > + #undef TEXT +#else struct make_list +#endif { typedef list type; }; diff --git a/include/boost/fusion/sequence/generation/make_map.hpp b/include/boost/fusion/sequence/generation/make_map.hpp index 5bc054e3..2ab3abb0 100644 --- a/include/boost/fusion/sequence/generation/make_map.hpp +++ b/include/boost/fusion/sequence/generation/make_map.hpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -77,7 +78,13 @@ namespace boost { namespace fusion BOOST_PP_ENUM_PARAMS(N, typename K) , BOOST_PP_ENUM_PARAMS(N, typename D) > +#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) + #define TEXT(z, n, text) , text + struct make_map + #undef TEXT +#else struct make_map +#endif { typedef map type; }; diff --git a/include/boost/fusion/sequence/generation/make_set.hpp b/include/boost/fusion/sequence/generation/make_set.hpp index b434923f..7dd9f3ab 100644 --- a/include/boost/fusion/sequence/generation/make_set.hpp +++ b/include/boost/fusion/sequence/generation/make_set.hpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -67,7 +68,13 @@ namespace boost { namespace fusion namespace result_of { template +#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) + #define TEXT(z, n, text) , text + struct make_set< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_SET_SIZE, TEXT, void_) > + #undef TEXT +#else struct make_set +#endif { typedef set type; }; diff --git a/include/boost/fusion/sequence/generation/make_vector.hpp b/include/boost/fusion/sequence/generation/make_vector.hpp index b73598d6..d70b4b02 100644 --- a/include/boost/fusion/sequence/generation/make_vector.hpp +++ b/include/boost/fusion/sequence/generation/make_vector.hpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -65,7 +66,13 @@ namespace boost { namespace fusion namespace result_of { template +#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) + #define TEXT(z, n, text) , text + struct make_vector< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_) > + #undef TEXT +#else struct make_vector +#endif { typedef vector type; }; diff --git a/include/boost/fusion/sequence/generation/map_tie.hpp b/include/boost/fusion/sequence/generation/map_tie.hpp index a5cb08c9..1431accc 100644 --- a/include/boost/fusion/sequence/generation/map_tie.hpp +++ b/include/boost/fusion/sequence/generation/map_tie.hpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -80,7 +81,14 @@ namespace boost { namespace fusion BOOST_PP_ENUM_PARAMS(N, typename K) , BOOST_PP_ENUM_PARAMS(N, typename D) > +#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) + #define TEXT(z, n, text) , text + + struct map_tie + #undef TEXT +#else struct map_tie +#endif { typedef map type; }; diff --git a/include/boost/fusion/sequence/generation/vector_tie.hpp b/include/boost/fusion/sequence/generation/vector_tie.hpp index f70c4e89..f5fe8572 100644 --- a/include/boost/fusion/sequence/generation/vector_tie.hpp +++ b/include/boost/fusion/sequence/generation/vector_tie.hpp @@ -13,6 +13,7 @@ #include #include #include +#include #include namespace boost { namespace fusion @@ -52,7 +53,13 @@ namespace boost { namespace fusion namespace result_of { template +#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) + #define TEXT(z, n, text) , text + struct vector_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_) > + #undef TEXT +#else struct vector_tie +#endif { typedef vector type; }; diff --git a/include/boost/fusion/view/transform_view/transform_view.hpp b/include/boost/fusion/view/transform_view/transform_view.hpp index cabd358e..1585cd74 100644 --- a/include/boost/fusion/view/transform_view/transform_view.hpp +++ b/include/boost/fusion/view/transform_view/transform_view.hpp @@ -73,7 +73,11 @@ namespace boost { namespace fusion // Unary Version template +#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) + struct transform_view : sequence_base > +#else struct transform_view : sequence_base > +#endif { typedef transform_view_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL