diff options
Diffstat (limited to 'boost/fusion/adapted/struct/detail/adapt_base_attr_filler.hpp')
-rw-r--r-- | boost/fusion/adapted/struct/detail/adapt_base_attr_filler.hpp | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/boost/fusion/adapted/struct/detail/adapt_base_attr_filler.hpp b/boost/fusion/adapted/struct/detail/adapt_base_attr_filler.hpp index 7a83bb347c..3755bc3679 100644 --- a/boost/fusion/adapted/struct/detail/adapt_base_attr_filler.hpp +++ b/boost/fusion/adapted/struct/detail/adapt_base_attr_filler.hpp @@ -9,15 +9,21 @@ #define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_ADAPT_BASE_ATTR_FILLER_HPP #include <boost/config.hpp> + +#include <boost/fusion/adapted/struct/detail/adapt_auto.hpp> #include <boost/fusion/adapted/struct/detail/preprocessor/is_seq.hpp> -#include <boost/preprocessor/empty.hpp> -#include <boost/preprocessor/tuple/size.hpp> +#include <boost/mpl/aux_/preprocessor/token_equal.hpp> + +#include <boost/preprocessor/config/config.hpp> +#include <boost/preprocessor/control/iif.hpp> +#include <boost/preprocessor/control/expr_iif.hpp> +#include <boost/preprocessor/logical/compl.hpp> #include <boost/preprocessor/tuple/elem.hpp> -#include <boost/preprocessor/facilities/is_empty.hpp> -#include <boost/preprocessor/variadic/to_seq.hpp> #include <boost/preprocessor/seq/for_each.hpp> #include <boost/preprocessor/seq/push_front.hpp> +#include <boost/preprocessor/facilities/expand.hpp> +#include <boost/preprocessor/facilities/is_empty.hpp> #define BOOST_FUSION_ADAPT_STRUCT_FILLER_0(X, Y) \ @@ -32,7 +38,7 @@ #define BOOST_FUSION_ADAPT_STRUCT_FILLER_1_END #define BOOST_FUSION_ADAPT_STRUCT_WRAP_ATTR(X, Y) \ - BOOST_PP_IF(BOOST_PP_IS_EMPTY(X), \ + BOOST_PP_IIF(BOOST_MPL_PP_TOKEN_EQUAL(auto, BOOST_PP_EXPAND(X)), \ ((1, (Y))), \ ((2, (X,Y))) \ ) @@ -47,12 +53,10 @@ #if BOOST_PP_VARIADICS # define BOOST_FUSION_ADAPT_STRUCT_ATTRIBUTES_FILLER_OP(r, unused, elem) \ - BOOST_PP_IF(BOOST_FUSION_PP_IS_SEQ(elem), \ - BOOST_PP_CAT( BOOST_FUSION_ADAPT_STRUCT_FILLER_0 elem ,_END), \ - BOOST_PP_IF(BOOST_PP_IS_EMPTY(elem), \ - BOOST_PP_EMPTY(), \ - BOOST_FUSION_ADAPT_STRUCT_WRAP_ATTR(BOOST_FUSION_ADAPT_AUTO,elem))\ - ) + BOOST_PP_IIF(BOOST_FUSION_PP_IS_SEQ(elem), \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 elem ,_END), \ + BOOST_PP_EXPR_IIF(BOOST_PP_COMPL(BOOST_PP_IS_EMPTY(elem)), \ + BOOST_FUSION_ADAPT_STRUCT_WRAP_ATTR(auto, elem))) # define BOOST_FUSION_ADAPT_STRUCT_ATTRIBUTES_FILLER(VA_ARGS_SEQ) \ BOOST_PP_SEQ_PUSH_FRONT( \ |