typename 关键字
两种用法!
用法一
用在模板定义里,标名其后的模板参数是类型参数,此时与class可互换!
template <typename T> //与class可互换
class A
{
public:
};
用法二
模板中标明“内嵌依赖类型名”!
#include <iostream>
using namespace std;
template <typename T>
class A
{
public:
//typename 指出下面紧跟着的名称是一个类型
typename T::iterator * iter;
//必须有typename ,不然歧义
};
class B
{
public:
typedef int iterator;//内嵌类型
};
void main()
{
//模板类
A<B> a;
cout<<typeid(a.iter).name()<<endl;
}