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/iterator.hpp>
9# include <boost/detail/workaround.hpp>
10
11namespace boost {
12namespace iterators {
13
14// Macro for supporting old compilers, no longer needed but kept
15// for backwards compatibility (it was documented).
16#define BOOST_ITERATOR_CATEGORY iterator_category
17
18
19template <class Iterator>
20struct iterator_value
21{
22 typedef typename boost::detail::iterator_traits<Iterator>::value_type type;
23};
24
25template <class Iterator>
26struct iterator_reference
27{
28 typedef typename boost::detail::iterator_traits<Iterator>::reference type;
29};
30
31
32template <class Iterator>
33struct iterator_pointer
34{
35 typedef typename boost::detail::iterator_traits<Iterator>::pointer type;
36};
37
38template <class Iterator>
39struct iterator_difference
40{
41 typedef typename boost::detail::iterator_traits<Iterator>::difference_type type;
42};
43
44template <class Iterator>
45struct iterator_category
46{
47 typedef typename boost::detail::iterator_traits<Iterator>::iterator_category type;
48};
49
50} // namespace iterators
51
52using iterators::iterator_value;
53using iterators::iterator_reference;
54using iterators::iterator_pointer;
55using iterators::iterator_difference;
56using iterators::iterator_category;
57
58} // namespace boost
59
60#endif // ITERATOR_TRAITS_DWA200347_HPP
61