阅读 C++ Templates: The Complete Guide它说
Note that templates cannot be declared in a function
它不对本书或外部资源中的任何其他章节进行解释和/或交叉引用。
谁能帮忙解释一下。可能它在本书后面有解释,但还没有。如果早点解释,我一定错过了。
例子:
int main()
{
class DummyClass // This compiles ok
{
int object;
};
template <typename T> // compile error "expected primary-expression before "template""
class DummyTemplate
{
T object;
};
return 0;
}
我也不明白 gcc 的错误信息。错误消息说:
expected primary-expression before "template"
最佳答案
这个问题可能与模板实现的历史方式有关:早期的实现技术(有些至今仍在使用)要求模板中的所有符号都具有外部链接。 (实例化是通过在单独的文件中生成等效代码来完成的。)在函数内部定义的名称永远不会有链接,并且不能在定义它们的范围之外引用。
关于c++ - 为什么不能在函数中声明模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6032391/