You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
92 lines
2.0 KiB
92 lines
2.0 KiB
// 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
|
|
|