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?