Рассмотрим такой пример кода (это просто искусственный пример объединения define
и template
, не ищите в этом смысла):
#define COMMA ,
template class Test
{
public:
Test(){}
void Foo(A var COMMA int test);
};
Test Knarz;
Вопрос :
Верно ли мое предположение, что во-первыхпрепроцессор будет искать/заменять все вхождения COMMA и во-вторыхкомпилятор будет создавать экземпляры любых шаблонов в этом порядке?
Дополнение:
Если вышеприведенный ответ «да», как я надеюсь, может быть, вы можете объяснить, почему это решение с использованием шаблонов и определенийработает?
]