用于生成boost :: mpl :: vector序列的宏

时间:2012-07-20 13:13:07

标签: c++ boost-mpl

经过长时间搜索如何使用可变参数生成函数后,我找到了一些解决方案。



    #define item(z, n, _) \
    BOOST_PP_EXPR_IF(n, +) BOOST_PP_CAT(p, n) \
    #define add(z, n, _) \
    template inline T add( BOOST_PP_ENUM_PARAMS( BOOST_PP_INC(n), T p) ) \
    { \
        return BOOST_PP_REPEAT(BOOST_PP_INC(n), item, ~); \
    } \
    BOOST_PP_REPEAT(ADD_MAX_ARITY, add, ~)
    #undef item
    #undef add

 

这是宏生成函数,如T add(...){return a + b ....;}, 我创建了如何进行宏递归扩展。 Macro recursive expansion to a sequence。 我的问题可能是混合前2个解决方案来生成这样的东西吗?



    #define MPL(x) boost::mpl::vector{boost::mpl::char_{x}}
    #define MPL1(x,x1) boost::mpl::vector{boost::mpl::char_{x} ,boost::mpl::char_{x1} }
    ........
    #define MPLN(x,..xn) boost::mpl::vector{boost::mpl::char_{x}...,boost::mpl::char_{xn} }

 

0 个答案:

没有答案