typename
在模板定义中,typename
向编译器提供未知标识符是类型的提示。 在模板参数列表中,它用于指定类型参数。
语法
typename
identifier
;
备注
如果模板定义中的名称是依赖于模板自变量的限定名称,则必须使用 typename
关键字;如果限定名称是独立的,则此名称是可选的。 有关详细信息,请参阅模板和名称解析。
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()
{
}
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈