| Home | Libraries | People | FAQ | More

### Iterator Traits

`std::iterator_traits` provides access to five associated types of any iterator: its `value_type`, `reference`, `pointer`, `iterator_category`, and `difference_type`. Unfortunately, such a "multi-valued" traits template can be difficult to use in a metaprogramming context. `<boost/iterator/iterator_traits.hpp>` provides access to these types using a standard metafunctions_.

### Synopsis

Header `<boost/iterator/iterator_traits.hpp>`:

    template <class Iterator>
    struct iterator_value
    {
        typedef typename
          std::iterator_traits<Iterator>::value_type
        type;
    };

    template <class Iterator>
    struct iterator_reference
    {
        typedef typename
          std::iterator_traits<Iterator>::reference
        type;
    };

    template <class Iterator>
    struct iterator_pointer
    {
        typedef typename
          std::iterator_traits<Iterator>::pointer
        type;
    };

    template <class Iterator>
    struct iterator_difference
    {
        typedef typename
          detail::iterator_traits<Iterator>::difference_type
        type;
    };

    template <class Iterator>
    struct iterator_category
    {
        typedef typename
          detail::iterator_traits<Iterator>::iterator_category
        type;
    };