c++ typename 关键字
typename的提出 是为了解决 :: 符号歧义性,:: 既可以作为嵌套类型(std::vector::iterator * iter)又可以作为引用静态成员(A::iterator),这样的话,T::iterator * iter 会产生歧义,前者定义一个 vector::iterator 类型变量,后者如果 iter 恰好是全局变量,则表示一个乘法表达式。typename T::iterator * iter 这样的写法告诉编译器 T::iterator 是一个嵌套类型,消除歧义。