]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / boost / mpl / aux_ / preprocessed / msvc60 / lambda_no_ctps.hpp
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
12 namespace boost { namespace mpl {
13
14 namespace aux {
15
16 template<
17 bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
18 , bool C5 = false
19 >
20 struct lambda_or
21 : true_
22 {
23 };
24
25 template<>
26 struct lambda_or< false,false,false,false,false >
27 : false_
28 {
29 };
30
31 template< 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
40 template<> 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
65 template<> 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
95 template<> 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
127 template<> 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
162 template<> 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
201 template<
202 typename T
203 , typename Tag
204 , typename Protect
205 >
206 struct 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
218 BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
219
220 template<
221 typename T
222 >
223 struct is_lambda_expression
224 : lambda<T>::is_le
225 {
226 };
227
228 }}
229