]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/range/include/boost/range/detail/msvc_has_iterator_workaround.hpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / range / include / boost / range / detail / msvc_has_iterator_workaround.hpp
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