File indexing completed on 2025-09-17 08:50:04
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef BOOST_RANGE_DETAIL_MSVC_HAS_ITERATOR_WORKAROUND_HPP
0012 #define BOOST_RANGE_DETAIL_MSVC_HAS_ITERATOR_WORKAROUND_HPP
0013
0014 #if defined(_MSC_VER)
0015 # pragma once
0016 #endif
0017
0018 #ifndef BOOST_RANGE_MUTABLE_ITERATOR_HPP
0019 # error This file should only be included from <boost/range/mutable_iterator.hpp>
0020 #endif
0021
0022 #if BOOST_WORKAROUND(BOOST_MSVC, <= 1600)
0023 #include <boost/mpl/bool.hpp>
0024
0025 namespace boost
0026 {
0027 namespace cb_details
0028 {
0029 template <class Buff, class Traits>
0030 struct iterator;
0031 }
0032
0033 namespace python
0034 {
0035 template <class Container
0036 , class NextPolicies >
0037 struct iterator;
0038 }
0039
0040 namespace type_erasure
0041 {
0042 template<
0043 class Traversal,
0044 class T ,
0045 class Reference ,
0046 class DifferenceType ,
0047 class ValueType
0048 >
0049 struct iterator;
0050 }
0051
0052 namespace unordered { namespace iterator_detail
0053 {
0054 template <typename Node>
0055 struct iterator;
0056 }}
0057
0058 namespace container { namespace container_detail
0059 {
0060 template<class IIterator, bool IsConst>
0061 class iterator;
0062 }}
0063
0064 namespace spirit { namespace lex { namespace lexertl
0065 {
0066 template <typename Functor>
0067 class iterator;
0068 }}}
0069
0070 namespace range_detail
0071 {
0072 template <class Buff, class Traits>
0073 struct has_iterator< ::boost::cb_details::iterator<Buff, Traits> >
0074 : mpl::false_
0075 {};
0076
0077 template <class Buff, class Traits>
0078 struct has_iterator< ::boost::cb_details::iterator<Buff, Traits> const>
0079 : mpl::false_
0080 {};
0081
0082 template <class Container, class NextPolicies>
0083 struct has_iterator< ::boost::python::iterator<Container, NextPolicies> >
0084 : mpl::false_
0085 {};
0086
0087 template <class Container, class NextPolicies>
0088 struct has_iterator< ::boost::python::iterator<Container, NextPolicies> const>
0089 : mpl::false_
0090 {};
0091
0092 template<class Traversal, class T, class Reference, class DifferenceType, class ValueType>
0093 struct has_iterator< ::boost::type_erasure::iterator<Traversal, T, Reference, DifferenceType, ValueType> >
0094 : mpl::false_
0095 {};
0096
0097 template<class Traversal, class T, class Reference, class DifferenceType, class ValueType>
0098 struct has_iterator< ::boost::type_erasure::iterator<Traversal, T, Reference, DifferenceType, ValueType> const>
0099 : mpl::false_
0100 {};
0101
0102 template <typename Node>
0103 struct has_iterator< ::boost::unordered::iterator_detail::iterator<Node> >
0104 : mpl::false_
0105 {};
0106
0107 template <typename Node>
0108 struct has_iterator< ::boost::unordered::iterator_detail::iterator<Node> const>
0109 : mpl::false_
0110 {};
0111
0112 template<class IIterator, bool IsConst>
0113 struct has_iterator< ::boost::container::container_detail::iterator<IIterator, IsConst> >
0114 : mpl::false_
0115 {};
0116
0117 template<class IIterator, bool IsConst>
0118 struct has_iterator< ::boost::container::container_detail::iterator<IIterator, IsConst> const>
0119 : mpl::false_
0120 {};
0121
0122 template <typename Functor>
0123 struct has_iterator< ::boost::spirit::lex::lexertl::iterator<Functor> >
0124 : mpl::false_
0125 {};
0126
0127 template <typename Functor>
0128 struct has_iterator< ::boost::spirit::lex::lexertl::iterator<Functor> const>
0129 : mpl::false_
0130 {};
0131 }
0132 }
0133 #endif
0134 #endif