Co jest pierwsze - tworzenie instancji szablonu a rozszerzenie makra?

Rozważmy przykład kodu takiego jak ten (jest to tylko sztuczny przykład do połączeniadefine itemplate, nie patrz na to w żaden sposób):

#define COMMA ,

template <typename A> class Test
{
public:
    Test(){}

    void Foo(A var COMMA int test);
};

Test<int> Knarz;

Pytanie:

Czy moje założenie jest poprawne,pierwszy preprocesor przeszuka / zastąpi wszystkie wystąpienia COMMA idruga kompilator tworzy instancje wszystkich szablonów w tej kolejności?

Followup:

Jeśli powyższa odpowiedź brzmi „tak„jak mam nadzieję, że możesz to wyjaśnićrozwiązanie za pomocą szablonów i definiuje Prace?

questionAnswers(4)

yourAnswerToTheQuestion