内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
读C++模板:完整指南上面写着
注意,不能在函数中声明模板。
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; }
这意味着不能做以下类似的事情
void foo() { template <typename T> //Error T something; }
模板声明只允许在全局、命名空间或类范围内。:)
背后的理由是什么?
这是不允许的,因为标准是这么说的。