¿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 '', como espero que sea, ¿puede explicar por qué estoSolución utilizando plantillas y define. ¿trabajos?

Respuestas a la pregunta(4)

Su respuesta a la pregunta