Utilizando comas dentro de una macro sin paréntesis: ¿Cómo puedo mezclar y combinar con una plantilla?

Considere una macro simple:

#define ECHO(x) x

ECHO(foo(1, 2))

Esto produce el resultado exacto que esperamos:

foo(1, 2)

El ejemplo anterior funciona porque el preprocesador reconoce los paréntesis adyacentes a la llamada a la función.

Ahora considere lo que sucede si uso una plantilla en lugar de una función, llame a:

ECHO(template<int, bool>)

Esto causa un error porque el preprocesador interpreta eltemplate<int y elbool> como dos argumentos separados para la macro. El preprocesador no reconoce<> para el alcance!

¿Hay alguna forma de usar una plantilla como esta en una macro?

Respuestas a la pregunta(6)

Su respuesta a la pregunta