Я хочу иметь макрос MAC(...)
который распространяется на все, кроме первого аргумента, переданного ему. Как мне этого добиться?
Моими первыми мыслями было преобразовать __VA_ARGS__
к BOOST_PP_TUPLE
а затем сделать POP_FRONT
операция:
#define MAC(...)\
BOOST_PP_TUPLE_POP_FRONT(BOOST_PP_VARIADIC_TO_TUPLE(__VA_ARGS__))
MAC(1,2,3)
Но это просто расширяется до
BOOST_PP_TUPLE_POP_FRONT ((1,2,3))
Я пытался добавить BOOST_PP_EXPAND
макрос:
#define MAC(...)\
BOOST_PP_EXPAND(\
BOOST_PP_TUPLE_POP_FRONT BOOST_PP_VARIADIC_TO_TUPLE(__VA_ARGS__))
MAC(1,2,3)
Но я получаю тот же результат. Что я хочу является выходом
2, 3
Как мне этого добиться?
Использование шаблонов не вариант и не использует другие библиотеки или инструменты (кроме boost
).
Вы пробовали простой ответ?
#define Y(ignore, ...) __VA_ARGS__
#define X(...) Y(__VA_ARGS__)