123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- // Boost.Range library
- //
- // Copyright Eric Niebler 2014. Use, modification and
- // distribution is subject to 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)
- //
- // For more information, see http://www.boost.org/libs/range/
- //
- #ifndef BOOST_RANGE_DETAIL_MSVC_HAS_ITERATOR_WORKAROUND_HPP
- #define BOOST_RANGE_DETAIL_MSVC_HAS_ITERATOR_WORKAROUND_HPP
- #if defined(_MSC_VER)
- # pragma once
- #endif
- #ifndef BOOST_RANGE_MUTABLE_ITERATOR_HPP
- # error This file should only be included from <boost/range/mutable_iterator.hpp>
- #endif
- #if BOOST_WORKAROUND(BOOST_MSVC, <= 1600)
- namespace boost
- {
- namespace cb_details
- {
- template <class Buff, class Traits>
- struct iterator;
- }
- namespace python
- {
- template <class Container
- , class NextPolicies /*= objects::default_iterator_call_policies*/>
- struct iterator;
- }
- namespace type_erasure
- {
- template<
- class Traversal,
- class T /*= _self*/,
- class Reference /*= ::boost::use_default*/,
- class DifferenceType /*= ::std::ptrdiff_t*/,
- class ValueType /*= typename deduced<iterator_value_type<T> >::type*/
- >
- struct iterator;
- }
- namespace unordered { namespace iterator_detail
- {
- template <typename Node>
- struct iterator;
- }}
- namespace container { namespace container_detail
- {
- template<class IIterator, bool IsConst>
- class iterator;
- }}
- namespace spirit { namespace lex { namespace lexertl
- {
- template <typename Functor>
- class iterator;
- }}}
- namespace range_detail
- {
- template <class Buff, class Traits>
- struct has_iterator< ::boost::cb_details::iterator<Buff, Traits> >
- : mpl::false_
- {};
- template <class Buff, class Traits>
- struct has_iterator< ::boost::cb_details::iterator<Buff, Traits> const>
- : mpl::false_
- {};
- template <class Container, class NextPolicies>
- struct has_iterator< ::boost::python::iterator<Container, NextPolicies> >
- : mpl::false_
- {};
- template <class Container, class NextPolicies>
- struct has_iterator< ::boost::python::iterator<Container, NextPolicies> const>
- : mpl::false_
- {};
- template<class Traversal, class T, class Reference, class DifferenceType, class ValueType>
- struct has_iterator< ::boost::type_erasure::iterator<Traversal, T, Reference, DifferenceType, ValueType> >
- : mpl::false_
- {};
- template<class Traversal, class T, class Reference, class DifferenceType, class ValueType>
- struct has_iterator< ::boost::type_erasure::iterator<Traversal, T, Reference, DifferenceType, ValueType> const>
- : mpl::false_
- {};
- template <typename Node>
- struct has_iterator< ::boost::unordered::iterator_detail::iterator<Node> >
- : mpl::false_
- {};
- template <typename Node>
- struct has_iterator< ::boost::unordered::iterator_detail::iterator<Node> const>
- : mpl::false_
- {};
- template<class IIterator, bool IsConst>
- struct has_iterator< ::boost::container::container_detail::iterator<IIterator, IsConst> >
- : mpl::false_
- {};
- template<class IIterator, bool IsConst>
- struct has_iterator< ::boost::container::container_detail::iterator<IIterator, IsConst> const>
- : mpl::false_
- {};
- template <typename Functor>
- struct has_iterator< ::boost::spirit::lex::lexertl::iterator<Functor> >
- : mpl::false_
- {};
- template <typename Functor>
- struct has_iterator< ::boost::spirit::lex::lexertl::iterator<Functor> const>
- : mpl::false_
- {};
- }
- }
- #endif
- #endif
|