我知道,typename和class关键字是模板参数互换,但我认为只typename被允许嵌套类规范.
一旦我意外地为嵌套类错误地写了" class"而不是" typename".我发现gcc也接受class了,所以你可以这样写:
class std::vector<T>::iterator it;
instead of
typename std::vector<T>::iterator it;
Run Code Online (Sandbox Code Playgroud)
在你的模板中.
这是一个gcc错误还是标准真的允许这种语法?
更新:代码示例:
template <typename T>
void test()
{
class std::vector<T>::iterator it;
}
Run Code Online (Sandbox Code Playgroud)