C++ typedef typename 作用
C++ typedef typename 作用 C++的一些语法让人看着费解,其中就有: typedef typename std :: vector <T> ::size_type size_type; 1 详见《C++ Primer》(第五版)P584 有些不懂的语法有时候虽然知道大概是什么意思,忽略一下就过了其实,不过心里老是膈应,就刨根问底一次吧。 vector::size_type 明白上述语法,首先要先看清 vector::size_type 的意思。参考《STL源码剖析》不难发现,其实: template <class T ,class Alloc=alloc> class vector{ public: // ... typedef size_t size_type; // ... }; 1 2 3 4 5 6 7 这样就看得很清晰了, vector::size_type 是 vector 的嵌套类型定义,其实际等价于 size_t 类型。 也就是说: vector < int > ::size_type ssize; //就等价于 size_t ssize; 1 2 3 为什么使用typename关键字 那么问题来了,为什么要加上typename关键字? typedef std :: vector <T> ::size_type size_type; //why