让我们考虑一个这样的代码示例(它只是一个人为的例子来结合define
and template
,不要寻找任何意义它):
#define COMMA ,
template <typename A> class Test
{
public:
Test(){}
void Foo(A var COMMA int test);
};
Test<int> Knarz;
问题:
我的假设是否正确,首先预处理器将搜索/替换所有出现的 COMMA,其次编译器将按该顺序实例化任何模板?
跟进:
如果上面的答案是“是”,正如我所希望的那样,你能解释为什么这个使用模板和定义的解决方案有效吗?