1.准备知识

  • typename用法
    • 用法1:等效于模板编程中的class
    • 用法2:用于显式地告诉编译器接下来的名称是类型名,对于这个区分,下面的参考链接中说得好,如果编译器不知道 T::bar 是类型名的话 T::bar * p可能就被理解成了T::bar 乘以p,T::bar & p可能就被理解成为了 T::bar 和p做逻辑与操作。 事实上,在模板编程时,如果传入的模板参数为T(T里面有模板参数的非独立名字bar),那么在不显示指定的话,c++或假定T::bar为变量名以消除歧义。
      • “A name used in a template declaration or definition and that is dependent on a template-parameter is assumed not to name a type unless the applicable name lookup finds a type name or the name is qualified by the keyword typename.”
    • 参考链接 : typename(wiki)
  • traits编程技法(内嵌型别使用)

2.迭代器相关型别

  • value type(所指型别)
  • 顾名思义,就是迭代器所指之物的型别,这个在上一节中作为例子讲过。

  • difference type(距离型别)
  • reference type(所指型别的引用型别)
  • pointer type(指针型别)
  • iterator catalog(迭代器类型型别)

3.std::iterator 的保证

4.总结

04-04 08:57