Listing 3

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