1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- // 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
|