1、在模板形参列表中,表示类型说明符。
2、在模板函数体中显示声明正在使用的名字是一个类型。
template<typename T>
void fcn(T t)
{
T::size_type *p;
}
在该模板函数中,size_type既可以是T的数据成员,又可以是T的类型成员,产生二义性,因此要显示用typename指示size_type为T的类型成员。
改正:
template<typename T>
void fcn(T t)
{
typename T::size_type *p;
}