12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- [section:iterator_traits 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_.
- [h2 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;
- };
- [endsect]
|