3 #ifndef _LIBCXX_ITERATOR_
4 #define _LIBCXX_ITERATOR_
8 struct input_iterator_tag {};
9 struct output_iterator_tag {};
10 struct forward_iterator_tag {};
11 struct bidrectional_iterator_tag {};
12 struct random_access_iterator_tag {};
14 template <class Category, class T, class Distance = ptrdiff_t, class Pointer = T*, class Reference = T&>
19 typedef Distance difference_type;
20 typedef Pointer pointer_type;
21 typedef Reference reference;
22 typedef Category iterator_category;
25 template <class Iterator> class iterator_traits;
26 template <class T> class iterator_traits<T*>;
27 template <class T> class iterator_traits<const T*>;