Использование запятых внутри макроса без круглых скобок: как смешать и сопоставить шаблон?

Рассмотрим простой макрос:

#define ECHO(x) x

ECHO(foo(1, 2))

Это дает точный результат, который мы ожидаем:

foo(1, 2)

Приведенный выше пример работает, потому что скобки рядом с вызовом функции распознаются препроцессором.

Теперь рассмотрим, что произойдет, если я использую шаблон вместо функции, вызову:

ECHO(template<int, bool>)

Это вызывает ошибку, потому что препроцессор интерпретируетtemplate<int иbool> как два отдельных аргумента к макросу. Препроцессор не распознает<> для сферы!

Есть ли способ использовать такой шаблон в макросе?

Ответы на вопрос(3)

Ваш ответ на вопрос