C++的typename和template

💡 原文中文,约400字,阅读约需1分钟。
📝

内容提要

关键字typename仅在模板声明和定义中使用,需在依赖关系明确的地方,如函数模板和类模板的成员函数返回类型,不能用于基类修饰符或成员初始化列表。

🎯

关键要点

  • 关键字typename只能用于模板声明和定义中。

  • typename可用于函数模板、成员函数模板的返回类型,以及类模板的成员函数定义的返回类型。

  • typename也可用于类模板中的嵌套类的成员函数定义的返回类型和静态成员定义的类型修饰符。

  • typename不允许用于基类修饰符或成员初始化列表。

  • 在基类修饰符或成员初始化列表中,依赖于模板参数的名字被假定为类型名。

  • 必须在依赖关系明确的地方使用typename,例如在template < class C > struct st { typename C :: value_type x ; }中,C::value_type依赖于C。

➡️

继续阅读