O que vem primeiro - instanciação de modelo vs. expansão de macro?
Vamos considerar um exemplo de código como este (é apenas um exemplo artificial para combinardefine
etemplate
, não procure por nenhum sentido):
#define COMMA ,
template <typename A> class Test
{
public:
Test(){}
void Foo(A var COMMA int test);
};
Test<int> Knarz;
Questão:
É minha suposição correta que,primeiro o pré-processador pesquisará / substituirá todas as ocorrências de COMMA esegundo o compilador irá instanciar qualquer modelo nessa ordem?
Acompanhamento:
Se a resposta acima for 'sim', como eu espero que seja, você pode explicar por que issosolução usando modelos e define trabalho?