为什么使用typename关键字
那么问题来了,为什么要加上typename关键字?
typedef std::vector<T>::size_type size_type;//why not?
- 实际上,模板类型在实例化之前,编译器并不知道
vector<T>::size_type
是什么东西,事实上一共有三种可能:
静态数据成员
静态成员函数
嵌套类型
那么此时typename
的作用就在此时体现出来了——定义就不再模棱两可。
总结
所以根据上述两条分析,
typedef typename std::vector<T>::size_type size_type;
- 语句的真是面目是:
typedef
创建了存在类型的别名,而typename
告诉编译器std::vector<T>::size_type
是一个类型而不是一个成员。
转载:https://blog.csdn.net/zhangxiao93/article/details/50569924