typename
向编译器通知未知标识符是类型。
typename identifier;
备注
仅在模板定义中使用此关键字。
如果该名称是依赖于模板参数的限定名,则必须使用此关键字;如果限定名不是依赖项,则该名称是可选的。 有关详细信息,请参阅模板和名称解析。
typename 可由任何类型在模板声明或定义中的任何位置使用。 不允许在基类列表中使用该关键字,除非将它用作模板基类的模板参数。
template <class T>
class C1 : typename T::InnerType // Error - typename not allowed.
{};
template <class T>
class C2 : A<typename T::InnerType> // typename OK.
{};
typename 关键字也替代模板参数列表中的 class。 例如,以下语句是相同的:
template<class T1, class T2>...
template<typename T1, typename T2>...
示例
// typename.cpp
template<class T> class X
{
typename T::Y m_y; // treat Y as a type
};
int main()
{
}