Mercurial > hg > vamp-build-and-test
view DEPENDENCIES/generic/include/boost/iterator/iterator_traits.hpp @ 49:666a1c41ce51
Package up binaries
author | Chris Cannam |
---|---|
date | Thu, 07 Aug 2014 19:17:03 +0100 |
parents | 2665513ce2d3 |
children | c530137014c0 |
line wrap: on
line source
// Copyright David Abrahams 2003. // Distributed under the Boost Software License, Version 1.0. (See // 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 <boost/detail/iterator.hpp> # include <boost/detail/workaround.hpp> namespace boost { // Unfortunately, g++ 2.95.x chokes when we define a class template // iterator_category which has the same name as its // std::iterator_category() function, probably due in part to the // "std:: is visible globally" hack it uses. Use // BOOST_ITERATOR_CATEGORY to write code that's portable to older // GCCs. # if BOOST_WORKAROUND(__GNUC__, <= 2) # define BOOST_ITERATOR_CATEGORY iterator_category_ # else # define BOOST_ITERATOR_CATEGORY iterator_category # endif template <class Iterator> struct iterator_value { typedef typename boost::detail::iterator_traits<Iterator>::value_type type; }; template <class Iterator> struct iterator_reference { typedef typename boost::detail::iterator_traits<Iterator>::reference type; }; template <class Iterator> struct iterator_pointer { typedef typename boost::detail::iterator_traits<Iterator>::pointer type; }; template <class Iterator> struct iterator_difference { typedef typename boost::detail::iterator_traits<Iterator>::difference_type type; }; template <class Iterator> struct BOOST_ITERATOR_CATEGORY { typedef typename boost::detail::iterator_traits<Iterator>::iterator_category type; }; # if BOOST_WORKAROUND(BOOST_MSVC, < 1300) template <> struct iterator_value<int> { typedef void type; }; template <> struct iterator_reference<int> { typedef void type; }; template <> struct iterator_pointer<int> { typedef void type; }; template <> struct iterator_difference<int> { typedef void type; }; template <> struct BOOST_ITERATOR_CATEGORY<int> { typedef void type; }; # endif } // namespace boost::iterator #endif // ITERATOR_TRAITS_DWA200347_HPP