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