这是来自 ISO C++ 标准 14.6/6 的声明:
在类模板的定义中或在类模板成员的定义中,
typename
当引用声明类型的类模板的先前声明成员的非限定名称时,不需要关键字。当使用限定名称引用成员时,应始终指定关键字typename
,即使限定符只是类模板名称。[示例:template<class T> struct A { typedef int B; A::B b; // ill-formed: typename required before A::B void f(A<T>::B); // ill-formed: typename required before A<T>::B typename A::B g(); // OK };
关键字 typename 是必需的,无论限定名称是
A
还是A<T>
因为A
或是A<T>
带有参数列表的类模板中的同义词<T>
。]
这句话在继承时是真的吗?
如果是,任何人都可以解释一下吗?
我检查了内部类;它被接受了吗?但我无法检查继承?