我想使用 BOOST_PP_REPEAT(count, macro, data) 我的宏看起来像
`模板(z,n,x,y)
BOOST_PP_REPEAT (5, 模板, 4, 5)`
它抱怨 BOOST_PP_REPEAT 被传递了 4 个参数,而它只需要 3 个。有没有办法将两个参数打包到 BOOST_PP_REPEAT 的“数据”参数中。
谢谢!
我想使用 BOOST_PP_REPEAT(count, macro, data) 我的宏看起来像
`模板(z,n,x,y)
BOOST_PP_REPEAT (5, 模板, 4, 5)`
它抱怨 BOOST_PP_REPEAT 被传递了 4 个参数,而它只需要 3 个。有没有办法将两个参数打包到 BOOST_PP_REPEAT 的“数据”参数中。
谢谢!
#define TEMPLATE (z, n, data) use_first(BOOST_PP_TUPLE_ELEM(2, 0, data)); use_second(BOOST_PP_TUPLE_ELEM(2, 1, data));
#define YOUR_MACRO(n, arg1, arg2) BOOST_PP_REPEAT(5, TEMPLATE, (arg1, arg2))
使用嵌套括号使参数列表成为一个不同的参数:
BOOST_PP_REPEAT (5, TEMPLATE_2ARG, (4, 5))
然后从里面剥去多余的括号TEMPLATE_2ARG
。
#define STRIP_PARENS( ... ) __VA_ARGS__
#define TEMPLATE_2ARG( I, ARGS ) TEMPLATE( I, STRIP_PARENS ARGS )
#define TEMPLATE( I, X, Y ) whatever