Я хочу использовать BOOST_PP_REPEAT (count, macro, data) и мой макрос выглядит так
`ШАБЛОН (z, n, x, y)
BOOST_PP_REPEAT (5, ШАБЛОН, 4, 5) `
Он жалуется на то, что BOOST_PP_REPEAT передается 4 аргумента, в то время как он ожидает только 3. Есть ли способ упаковать два аргумента в параметр «data» в BOOST_PP_REPEAT.
Спасибо!
использование BOOST_PP_TUPLE_ELEM:
#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