【发布时间】:2011-12-28 07:45:54
【问题描述】:
可能重复:
C++ difference of keywords 'typename' and 'class' in templates
我已经知道在很多情况下class 不能被typename 取代。我只是在谈论相反的情况:将typename 替换为class。
有人指出这里只能使用typename:
template<class param_t> class Foo
{
typedef typename param_t::baz sub_t;
};
但我认为在这里(在 MSVC 中)用 class 替换 typename 没有任何问题。
回顾一下,我可以总是用类替换类型名吗?如果不是,请举个例子。
【问题讨论】:
-
在上述情况下,您和某些编译器可能会有所不同:)
-
能否请您澄清一下您的实际问题是什么?
-
"如果没有请举个例子。"你已经有了一个例子——对于依赖类型,你必须使用
typename,这就是引入这个关键字的目的。 -
@Rio:不好。您可能使用 MSVC,它在标准需要的地方不需要
typename。您可以使用class可能是从 C 继承struct x var;语法的产物。这是一个红鲱鱼。