《Effective C++》读书笔记之item42:了解typename的双重意义
1.当声明模板类型参数时,class和typename的意义相同。
2.模板内出现的名称如果依赖于某个模板参数,称为从属名称(dependent names);如果从属名称在类中呈嵌套状,称为嵌套从属名称。
嵌套从属名称有可能导致解析困难,如:
template<typename IterT>void workWithIterator(IterT iter){typedef typename std::iterator_traits<IterT>::value_type value_type;value_type temp(*iter);...}4.typename相关规则在不同的编译器上有不同的实现方式,因而关于它的使用可能造成移植性的降低。