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