1、作为类型前的标志符号
#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
template<class T>
class MyClass {
typename T::SubType * ptr;
/*typename指出SubType是T中定义的一个类型,因此ptr是一个指向T::SubType的指针*/
//T::SubType * ptr1;如果不加typename,表达式被认为是T的静态成员SubType和ptr的乘积
};
void main()
{
system("pause");
}
2、C++中的一般规则是,除了以typename修饰以外,template内的任何标识符合都被视为一个值value,而非一个类型。
3、typename的第二个作用:在模板声明中替换关键字class。
template<typename T>class MyClass;