typename

 

若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅 Visual Studio 2017 RC 文档

向编译器通知未知标识符是类型。

  
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()  
{  
}  

模板
C++ 关键字

显示: