Как развернуть все, кроме первого параметра, в макрокоманду?

Я хочу иметь макрос 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).

0

Решение

Вы пробовали простой ответ?

#define Y(ignore, ...) __VA_ARGS__
#define X(...) Y(__VA_ARGS__)
4

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector