STL源码:iterator

1.type_traits

1.1判断类型中是否有iterator_category(stl_iterator_base_types.h)

_GLIBCXX_HAS_NESTED_TYPE(iterator_category)           //宏定义,生成对应的类
  template<typename _Iterator,                        //实现见type_traits
       bool = __has_iterator_category<_Iterator>::value>
    struct __iterator_traits { };

这里使用了template编程的SFINAE技术来确定类型中是否存在对应的member type.

你可能感兴趣的:(STL源码:iterator)