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 关键字只能在 位置还使用在模板参数列表。 例如,下面的语句是相同的:

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++关键字

其他资源

模板