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 11 namespace boost { 12 namespace 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 19 template <class Iterator> 20 struct iterator_value 21 { 22 typedef typename boost::detail::iterator_traits<Iterator>::value_type type; 23 }; 24 25 template <class Iterator> 26 struct iterator_reference 27 { 28 typedef typename boost::detail::iterator_traits<Iterator>::reference type; 29 }; 30 31 32 template <class Iterator> 33 struct iterator_pointer 34 { 35 typedef typename boost::detail::iterator_traits<Iterator>::pointer type; 36 }; 37 38 template <class Iterator> 39 struct iterator_difference 40 { 41 typedef typename boost::detail::iterator_traits<Iterator>::difference_type type; 42 }; 43 44 template <class Iterator> 45 struct iterator_category 46 { 47 typedef typename boost::detail::iterator_traits<Iterator>::iterator_category type; 48 }; 49 50 } // namespace iterators 51 52 using iterators::iterator_value; 53 using iterators::iterator_reference; 54 using iterators::iterator_pointer; 55 using iterators::iterator_difference; 56 using iterators::iterator_category; 57 58 } // namespace boost 59 60 #endif // ITERATOR_TRAITS_DWA200347_HPP 61