【发布时间】:2011-08-27 07:20:02
【问题描述】:
阅读C++ Templates: The Complete Guide,上面写着
注意不能声明模板 在函数中
它没有对本书或外部资源中的任何其他章节进行解释和/或交叉引用。
谁能帮忙解释一下。可能会在本书后面解释,但还没有。如果前面解释过了,我一定是错过了。
例子:
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"
【问题讨论】:
-
有几个答案基本上是说“你不能因为你不能”。有谁知道是否有充分的理由阻止这样做?
-
模板参数必须有外部链接。至于为什么这是必要的,Greg Comeau 在这个 c.l.c++.moderated 讨论中提供了一些提示@groups.google.com/group/comp.lang.c++.moderated/browse_thread/…
-
@Abhay:这就是为什么函数范围内的类不能是模板参数,而不是模板声明不能处于函数范围内的原因。
-
@Mike Seymour:如果你知道确切的原因,为什么不给我们开导:)
-
@Tony:模板可能是一些函数对象,只能在这个函数中使用。我希望我能把这些本地化。