¿Qué viene primero? ¿Creación de instancias de plantilla frente a expansión de macros?
Consideremos un ejemplo de código como este (es solo un ejemplo artificial para combinardefine
ytemplate
, no busques ningún sentido en ello):
#define COMMA ,
template <typename A> class Test
{
public:
Test(){}
void Foo(A var COMMA int test);
};
Test<int> Knarz;
Pregunta:
Es mi suposición correcta queprimero el preprocesador buscará / reemplazará todas las apariciones de COMMA ysegundo ¿El compilador creará una instancia de cualquier plantilla en ese orden?
Seguir:
Si la respuesta anterior es 'sí', como espero que sea, ¿puede explicar por qué estoSolución utilizando plantillas y define. ¿trabajos?