3 // Copyright Eric Niebler 2014. Use, modification and
4 // distribution is subject to the Boost Software License, Version
5 // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt)
8 // For more information, see http://www.boost.org/libs/range/
11 #ifndef BOOST_RANGE_DETAIL_MSVC_HAS_ITERATOR_WORKAROUND_HPP
12 #define BOOST_RANGE_DETAIL_MSVC_HAS_ITERATOR_WORKAROUND_HPP
18 #ifndef BOOST_RANGE_MUTABLE_ITERATOR_HPP
19 # error This file should only be included from <boost/range/mutable_iterator.hpp>
22 #if BOOST_WORKAROUND(BOOST_MSVC, <= 1600)
27 template <class Buff, class Traits>
33 template <class Container
34 , class NextPolicies /*= objects::default_iterator_call_policies*/>
38 namespace type_erasure
43 class Reference /*= ::boost::use_default*/,
44 class DifferenceType /*= ::std::ptrdiff_t*/,
45 class ValueType /*= typename deduced<iterator_value_type<T> >::type*/
50 namespace unordered { namespace iterator_detail
52 template <typename Node>
56 namespace container { namespace container_detail
58 template<class IIterator, bool IsConst>
62 namespace spirit { namespace lex { namespace lexertl
64 template <typename Functor>
68 namespace range_detail
70 template <class Buff, class Traits>
71 struct has_iterator< ::boost::cb_details::iterator<Buff, Traits> >
75 template <class Buff, class Traits>
76 struct has_iterator< ::boost::cb_details::iterator<Buff, Traits> const>
80 template <class Container, class NextPolicies>
81 struct has_iterator< ::boost::python::iterator<Container, NextPolicies> >
85 template <class Container, class NextPolicies>
86 struct has_iterator< ::boost::python::iterator<Container, NextPolicies> const>
90 template<class Traversal, class T, class Reference, class DifferenceType, class ValueType>
91 struct has_iterator< ::boost::type_erasure::iterator<Traversal, T, Reference, DifferenceType, ValueType> >
95 template<class Traversal, class T, class Reference, class DifferenceType, class ValueType>
96 struct has_iterator< ::boost::type_erasure::iterator<Traversal, T, Reference, DifferenceType, ValueType> const>
100 template <typename Node>
101 struct has_iterator< ::boost::unordered::iterator_detail::iterator<Node> >
105 template <typename Node>
106 struct has_iterator< ::boost::unordered::iterator_detail::iterator<Node> const>
110 template<class IIterator, bool IsConst>
111 struct has_iterator< ::boost::container::container_detail::iterator<IIterator, IsConst> >
115 template<class IIterator, bool IsConst>
116 struct has_iterator< ::boost::container::container_detail::iterator<IIterator, IsConst> const>
120 template <typename Functor>
121 struct has_iterator< ::boost::spirit::lex::lexertl::iterator<Functor> >
125 template <typename Functor>
126 struct has_iterator< ::boost::spirit::lex::lexertl::iterator<Functor> const>