What are the typical use cases of an iterator_trait

Pointers into an array can be used as random access iterators.

There needs to be some consistent way to get these types both for pointers (which obviously can’t have the types declared as nested types, since only classes can have nested types) and for class-type iterators. The traits class template provides this consistent way.

The iterator_traits class template is specialized for pointers like so:

template <typename T>
struct iterator_traits<T*>
    typedef std::random_access_iterator_tag iterator_category;
    typedef T                               value_type;
    typedef T*                              pointer;
    typedef T&                              reference;
    typedef std::ptrdiff_t                  difference_type;

Leave a Comment