diff --git a/include/boost/iterator/iterator_traits.hpp b/include/boost/iterator/iterator_traits.hpp index 6582a68..0437a64 100644 --- a/include/boost/iterator/iterator_traits.hpp +++ b/include/boost/iterator/iterator_traits.hpp @@ -3,49 +3,56 @@ // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef ITERATOR_TRAITS_DWA200347_HPP -# define ITERATOR_TRAITS_DWA200347_HPP - -# include +#define ITERATOR_TRAITS_DWA200347_HPP #include namespace boost { namespace iterators { -// Macro for supporting old compilers, no longer needed but kept -// for backwards compatibility (it was documented). -#define BOOST_ITERATOR_CATEGORY iterator_category +template< typename Iterator > +using iterator_value_t = typename std::iterator_traits< Iterator >::value_type; - -template +template< typename Iterator > struct iterator_value { - typedef typename std::iterator_traits::value_type type; + using type = iterator_value_t< Iterator >; }; -template +template< typename Iterator > +using iterator_reference_t = typename std::iterator_traits< Iterator >::reference; + +template< typename Iterator > struct iterator_reference { - typedef typename std::iterator_traits::reference type; + using type = iterator_reference_t< Iterator >; }; +template< typename Iterator > +using iterator_pointer_t = typename std::iterator_traits< Iterator >::pointer; -template +template< typename Iterator > struct iterator_pointer { - typedef typename std::iterator_traits::pointer type; + using type = iterator_pointer_t< Iterator >; }; -template +template< typename Iterator > +using iterator_difference_t = typename std::iterator_traits< Iterator >::difference_type; + +template< typename Iterator > struct iterator_difference { - typedef typename std::iterator_traits::difference_type type; + using type = iterator_difference_t< Iterator >; }; -template +template< typename Iterator > +using iterator_category_t = typename std::iterator_traits< Iterator >::iterator_category; + +template< typename Iterator > struct iterator_category { - typedef typename std::iterator_traits::iterator_category type; + using type = iterator_category_t< Iterator >; }; } // namespace iterators