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?