1 | // Boost.Range library |
2 | // |
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) |
7 | // |
8 | // For more information, see http://www.boost.org/libs/range/ |
9 | // |
10 | |
11 | #ifndef BOOST_RANGE_DETAIL_MSVC_HAS_ITERATOR_WORKAROUND_HPP |
12 | #define BOOST_RANGE_DETAIL_MSVC_HAS_ITERATOR_WORKAROUND_HPP |
13 | |
14 | #if defined(_MSC_VER) |
15 | # pragma once |
16 | #endif |
17 | |
18 | #ifndef BOOST_RANGE_MUTABLE_ITERATOR_HPP |
19 | # error This file should only be included from <boost/range/mutable_iterator.hpp> |
20 | #endif |
21 | |
22 | #if BOOST_WORKAROUND(BOOST_MSVC, <= 1600) |
23 | namespace boost |
24 | { |
25 | namespace cb_details |
26 | { |
27 | template <class Buff, class Traits> |
28 | struct iterator; |
29 | } |
30 | |
31 | namespace python |
32 | { |
33 | template <class Container |
34 | , class NextPolicies /*= objects::default_iterator_call_policies*/> |
35 | struct iterator; |
36 | } |
37 | |
38 | namespace type_erasure |
39 | { |
40 | template< |
41 | class Traversal, |
42 | class T /*= _self*/, |
43 | class Reference /*= ::boost::use_default*/, |
44 | class DifferenceType /*= ::std::ptrdiff_t*/, |
45 | class ValueType /*= typename deduced<iterator_value_type<T> >::type*/ |
46 | > |
47 | struct iterator; |
48 | } |
49 | |
50 | namespace unordered { namespace iterator_detail |
51 | { |
52 | template <typename Node> |
53 | struct iterator; |
54 | }} |
55 | |
56 | namespace container { namespace container_detail |
57 | { |
58 | template<class IIterator, bool IsConst> |
59 | class iterator; |
60 | }} |
61 | |
62 | namespace spirit { namespace lex { namespace lexertl |
63 | { |
64 | template <typename Functor> |
65 | class iterator; |
66 | }}} |
67 | |
68 | namespace range_detail |
69 | { |
70 | template <class Buff, class Traits> |
71 | struct has_iterator< ::boost::cb_details::iterator<Buff, Traits> > |
72 | : mpl::false_ |
73 | {}; |
74 | |
75 | template <class Buff, class Traits> |
76 | struct has_iterator< ::boost::cb_details::iterator<Buff, Traits> const> |
77 | : mpl::false_ |
78 | {}; |
79 | |
80 | template <class Container, class NextPolicies> |
81 | struct has_iterator< ::boost::python::iterator<Container, NextPolicies> > |
82 | : mpl::false_ |
83 | {}; |
84 | |
85 | template <class Container, class NextPolicies> |
86 | struct has_iterator< ::boost::python::iterator<Container, NextPolicies> const> |
87 | : mpl::false_ |
88 | {}; |
89 | |
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> > |
92 | : mpl::false_ |
93 | {}; |
94 | |
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> |
97 | : mpl::false_ |
98 | {}; |
99 | |
100 | template <typename Node> |
101 | struct has_iterator< ::boost::unordered::iterator_detail::iterator<Node> > |
102 | : mpl::false_ |
103 | {}; |
104 | |
105 | template <typename Node> |
106 | struct has_iterator< ::boost::unordered::iterator_detail::iterator<Node> const> |
107 | : mpl::false_ |
108 | {}; |
109 | |
110 | template<class IIterator, bool IsConst> |
111 | struct has_iterator< ::boost::container::container_detail::iterator<IIterator, IsConst> > |
112 | : mpl::false_ |
113 | {}; |
114 | |
115 | template<class IIterator, bool IsConst> |
116 | struct has_iterator< ::boost::container::container_detail::iterator<IIterator, IsConst> const> |
117 | : mpl::false_ |
118 | {}; |
119 | |
120 | template <typename Functor> |
121 | struct has_iterator< ::boost::spirit::lex::lexertl::iterator<Functor> > |
122 | : mpl::false_ |
123 | {}; |
124 | |
125 | template <typename Functor> |
126 | struct has_iterator< ::boost::spirit::lex::lexertl::iterator<Functor> const> |
127 | : mpl::false_ |
128 | {}; |
129 | } |
130 | } |
131 | #endif |
132 | #endif |
133 | |