1// Copyright David Abrahams 2003.
2// Distributed under the Boost Software License, Version 1.0. (See
3// accompanying file LICENSE_1_0.txt or copy at
4// http://www.boost.org/LICENSE_1_0.txt)
5#ifndef ITERATOR_TRAITS_DWA200347_HPP
6# define ITERATOR_TRAITS_DWA200347_HPP
7
8# include <boost/detail/workaround.hpp>
9
10#include <iterator>
11
12namespace boost {
13namespace iterators {
14
15// Macro for supporting old compilers, no longer needed but kept
16// for backwards compatibility (it was documented).
17#define BOOST_ITERATOR_CATEGORY iterator_category
18
19
20template <class Iterator>
21struct iterator_value
22{
23 typedef typename std::iterator_traits<Iterator>::value_type type;
24};
25
26template <class Iterator>
27struct iterator_reference
28{
29 typedef typename std::iterator_traits<Iterator>::reference type;
30};
31
32
33template <class Iterator>
34struct iterator_pointer
35{
36 typedef typename std::iterator_traits<Iterator>::pointer type;
37};
38
39template <class Iterator>
40struct iterator_difference
41{
42 typedef typename std::iterator_traits<Iterator>::difference_type type;
43};
44
45template <class Iterator>
46struct iterator_category
47{
48 typedef typename std::iterator_traits<Iterator>::iterator_category type;
49};
50
51} // namespace iterators
52
53using iterators::iterator_value;
54using iterators::iterator_reference;
55using iterators::iterator_pointer;
56using iterators::iterator_difference;
57using iterators::iterator_category;
58
59} // namespace boost
60
61#endif // ITERATOR_TRAITS_DWA200347_HPP
62