]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/mpl/include/boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / mpl / include / boost / mpl / aux_ / preprocessed / msvc70 / lambda_no_ctps.hpp
CommitLineData
7c673cae
FG
1
2// Copyright Aleksey Gurtovoy 2000-2004
3//
4// Distributed under the Boost Software License, Version 1.0.
5// (See accompanying file LICENSE_1_0.txt or copy at
6// http://www.boost.org/LICENSE_1_0.txt)
7//
8
9// Preprocessed version of "boost/mpl/aux_/lambda_no_ctps.hpp" header
10// -- DO NOT modify by hand!
11
12namespace boost { namespace mpl {
13
14namespace aux {
15
16template<
17 bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
18 , bool C5 = false
19 >
20struct lambda_or
21 : true_
22{
23};
24
25template<>
26struct lambda_or< false,false,false,false,false >
27 : false_
28{
29};
30
31template< typename Arity > struct lambda_impl
32{
33 template< typename T, typename Tag, typename Protect > struct result_
34 {
35 typedef T type;
36 typedef is_placeholder<T> is_le;
37 };
38};
39
40template<> struct lambda_impl< int_<1> >
41{
42 template< typename F, typename Tag, typename Protect > struct result_
43 {
44 typedef lambda< typename F::arg1, Tag, false_ > l1;
45 typedef typename l1::is_le is_le1;
46 typedef aux::lambda_or<
47 BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
48 > is_le;
49
50 typedef bind1<
51 typename F::rebind
52 , typename l1::type
53 > bind_;
54
55 typedef typename if_<
56 is_le
57 , if_< Protect, mpl::protect<bind_>, bind_ >
58 , identity<F>
59 >::type type_;
60
61 typedef typename type_::type type;
62 };
63};
64
65template<> struct lambda_impl< int_<2> >
66{
67 template< typename F, typename Tag, typename Protect > struct result_
68 {
69 typedef lambda< typename F::arg1, Tag, false_ > l1;
70 typedef lambda< typename F::arg2, Tag, false_ > l2;
71
72 typedef typename l1::is_le is_le1;
73 typedef typename l2::is_le is_le2;
74
75
76 typedef aux::lambda_or<
77 BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
78 > is_le;
79
80 typedef bind2<
81 typename F::rebind
82 , typename l1::type, typename l2::type
83 > bind_;
84
85 typedef typename if_<
86 is_le
87 , if_< Protect, mpl::protect<bind_>, bind_ >
88 , identity<F>
89 >::type type_;
90
91 typedef typename type_::type type;
92 };
93};
94
95template<> struct lambda_impl< int_<3> >
96{
97 template< typename F, typename Tag, typename Protect > struct result_
98 {
99 typedef lambda< typename F::arg1, Tag, false_ > l1;
100 typedef lambda< typename F::arg2, Tag, false_ > l2;
101 typedef lambda< typename F::arg3, Tag, false_ > l3;
102
103 typedef typename l1::is_le is_le1;
104 typedef typename l2::is_le is_le2;
105 typedef typename l3::is_le is_le3;
106
107
108 typedef aux::lambda_or<
109 BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
110 > is_le;
111
112 typedef bind3<
113 typename F::rebind
114 , typename l1::type, typename l2::type, typename l3::type
115 > bind_;
116
117 typedef typename if_<
118 is_le
119 , if_< Protect, mpl::protect<bind_>, bind_ >
120 , identity<F>
121 >::type type_;
122
123 typedef typename type_::type type;
124 };
125};
126
127template<> struct lambda_impl< int_<4> >
128{
129 template< typename F, typename Tag, typename Protect > struct result_
130 {
131 typedef lambda< typename F::arg1, Tag, false_ > l1;
132 typedef lambda< typename F::arg2, Tag, false_ > l2;
133 typedef lambda< typename F::arg3, Tag, false_ > l3;
134 typedef lambda< typename F::arg4, Tag, false_ > l4;
135
136 typedef typename l1::is_le is_le1;
137 typedef typename l2::is_le is_le2;
138 typedef typename l3::is_le is_le3;
139 typedef typename l4::is_le is_le4;
140
141
142 typedef aux::lambda_or<
143 BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
144 > is_le;
145
146 typedef bind4<
147 typename F::rebind
148 , typename l1::type, typename l2::type, typename l3::type
149 , typename l4::type
150 > bind_;
151
152 typedef typename if_<
153 is_le
154 , if_< Protect, mpl::protect<bind_>, bind_ >
155 , identity<F>
156 >::type type_;
157
158 typedef typename type_::type type;
159 };
160};
161
162template<> struct lambda_impl< int_<5> >
163{
164 template< typename F, typename Tag, typename Protect > struct result_
165 {
166 typedef lambda< typename F::arg1, Tag, false_ > l1;
167 typedef lambda< typename F::arg2, Tag, false_ > l2;
168 typedef lambda< typename F::arg3, Tag, false_ > l3;
169 typedef lambda< typename F::arg4, Tag, false_ > l4;
170 typedef lambda< typename F::arg5, Tag, false_ > l5;
171
172 typedef typename l1::is_le is_le1;
173 typedef typename l2::is_le is_le2;
174 typedef typename l3::is_le is_le3;
175 typedef typename l4::is_le is_le4;
176 typedef typename l5::is_le is_le5;
177
178
179 typedef aux::lambda_or<
180 BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
181 > is_le;
182
183 typedef bind5<
184 typename F::rebind
185 , typename l1::type, typename l2::type, typename l3::type
186 , typename l4::type, typename l5::type
187 > bind_;
188
189 typedef typename if_<
190 is_le
191 , if_< Protect, mpl::protect<bind_>, bind_ >
192 , identity<F>
193 >::type type_;
194
195 typedef typename type_::type type;
196 };
197};
198
199} // namespace aux
200
201template<
202 typename T
203 , typename Tag
204 , typename Protect
205 >
206struct lambda
207{
208 /// Metafunction forwarding confuses MSVC 6.x
209 typedef typename aux::template_arity<T>::type arity_;
210 typedef typename aux::lambda_impl<arity_>
211 ::template result_< T,Tag,Protect > l_;
212
213 typedef typename l_::type type;
214 typedef typename l_::is_le is_le;
215 BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
216};
217
218BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
219
220template<
221 typename T
222 >
223struct is_lambda_expression
224 : lambda<T>::is_le
225{
226};
227
228}}
229