24 Iterators library [iterators]

24.4 Iterator primitives [iterator.primitives]

24.4.2 Basic iterator [iterator.basic]

The iterator template may be used as a base class to ease the definition of required types for new iterators.

namespace std {
  template<class Category, class T, class Distance = ptrdiff_t,
    class Pointer = T*, class Reference = T&>
  struct iterator {
    typedef T         value_type;
    typedef Distance  difference_type;
    typedef Pointer   pointer;
    typedef Reference reference;
    typedef Category  iterator_category;