1)在模板定义语法中关键字class与typename的作用完全一样。
2)typename另外一个作用为:使用嵌套依赖类型(nested depended name),如下所示: class MyArray { public: typedef int LengthType; ..... } template<class T> void MyMethod( T myarr ) { typedef typename T::LengthType LengthType; LengthType length = myarr.GetLength; } 这个时候typename的作用就是告诉c++编译器,typename后面的字符串为一个类型名称,而不是成员函数或者成员变量。