]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/mpl/include/boost/mpl/aux_/preprocessed/bcc/bind.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / mpl / include / boost / mpl / aux_ / preprocessed / bcc / bind.hpp
1
2 // Copyright Peter Dimov 2001
3 // Copyright Aleksey Gurtovoy 2001-2004
4 //
5 // Distributed under the Boost Software License, Version 1.0.
6 // (See accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt)
8 //
9
10 // *Preprocessed* version of the main "bind.hpp" header
11 // -- DO NOT modify by hand!
12
13 namespace boost { namespace mpl {
14
15 namespace aux {
16
17 template<
18 typename T, typename U1, typename U2, typename U3, typename U4
19 , typename U5
20 >
21 struct resolve_bind_arg
22 {
23 typedef T type;
24 };
25
26 template<
27 typename T
28 , typename Arg
29 >
30 struct replace_unnamed_arg
31 {
32 typedef Arg next;
33 typedef T type;
34 };
35
36 template<
37 typename Arg
38 >
39 struct replace_unnamed_arg< arg< -1 >, Arg >
40 {
41 typedef typename Arg::next next;
42 typedef Arg type;
43 };
44
45 template<
46 int N, typename U1, typename U2, typename U3, typename U4, typename U5
47 >
48 struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
49 {
50 typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
51 };
52
53 } // namespace aux
54
55 template<
56 typename F
57 >
58 struct bind0
59 {
60 template<
61 typename U1, typename U2, typename U3, typename U4, typename U5
62 >
63 struct apply
64 {
65 private:
66 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
67 typedef typename r0::type a0;
68 typedef typename r0::next n1;
69 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
70 ///
71 public:
72 typedef typename apply_wrap0<
73 f_
74 >::type type;
75
76 };
77 };
78
79 namespace aux {
80
81 template<
82 typename F, typename U1, typename U2, typename U3, typename U4
83 , typename U5
84 >
85 struct resolve_bind_arg<
86 bind0<F>, U1, U2, U3, U4, U5
87 >
88 {
89 typedef bind0<F> f_;
90 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
91 };
92
93 } // namespace aux
94
95 BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
96 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
97
98 template<
99 typename F, typename T1
100 >
101 struct bind1
102 {
103 template<
104 typename U1, typename U2, typename U3, typename U4, typename U5
105 >
106 struct apply
107 {
108 private:
109 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
110 typedef typename r0::type a0;
111 typedef typename r0::next n1;
112 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
113 ///
114 typedef aux::replace_unnamed_arg< T1,n1 > r1;
115 typedef typename r1::type a1;
116 typedef typename r1::next n2;
117 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
118 ///
119 public:
120 typedef typename apply_wrap1<
121 f_
122 , typename t1::type
123 >::type type;
124
125 };
126 };
127
128 namespace aux {
129
130 template<
131 typename F, typename T1, typename U1, typename U2, typename U3
132 , typename U4, typename U5
133 >
134 struct resolve_bind_arg<
135 bind1< F,T1 >, U1, U2, U3, U4, U5
136 >
137 {
138 typedef bind1< F,T1 > f_;
139 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
140 };
141
142 } // namespace aux
143
144 BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
145 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
146
147 template<
148 typename F, typename T1, typename T2
149 >
150 struct bind2
151 {
152 template<
153 typename U1, typename U2, typename U3, typename U4, typename U5
154 >
155 struct apply
156 {
157 private:
158 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
159 typedef typename r0::type a0;
160 typedef typename r0::next n1;
161 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
162 ///
163 typedef aux::replace_unnamed_arg< T1,n1 > r1;
164 typedef typename r1::type a1;
165 typedef typename r1::next n2;
166 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
167 ///
168 typedef aux::replace_unnamed_arg< T2,n2 > r2;
169 typedef typename r2::type a2;
170 typedef typename r2::next n3;
171 typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
172 ///
173 public:
174 typedef typename apply_wrap2<
175 f_
176 , typename t1::type, typename t2::type
177 >::type type;
178
179 };
180 };
181
182 namespace aux {
183
184 template<
185 typename F, typename T1, typename T2, typename U1, typename U2
186 , typename U3, typename U4, typename U5
187 >
188 struct resolve_bind_arg<
189 bind2< F,T1,T2 >, U1, U2, U3, U4, U5
190 >
191 {
192 typedef bind2< F,T1,T2 > f_;
193 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
194 };
195
196 } // namespace aux
197
198 BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
199 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
200
201 template<
202 typename F, typename T1, typename T2, typename T3
203 >
204 struct bind3
205 {
206 template<
207 typename U1, typename U2, typename U3, typename U4, typename U5
208 >
209 struct apply
210 {
211 private:
212 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
213 typedef typename r0::type a0;
214 typedef typename r0::next n1;
215 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
216 ///
217 typedef aux::replace_unnamed_arg< T1,n1 > r1;
218 typedef typename r1::type a1;
219 typedef typename r1::next n2;
220 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
221 ///
222 typedef aux::replace_unnamed_arg< T2,n2 > r2;
223 typedef typename r2::type a2;
224 typedef typename r2::next n3;
225 typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
226 ///
227 typedef aux::replace_unnamed_arg< T3,n3 > r3;
228 typedef typename r3::type a3;
229 typedef typename r3::next n4;
230 typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
231 ///
232 public:
233 typedef typename apply_wrap3<
234 f_
235 , typename t1::type, typename t2::type, typename t3::type
236 >::type type;
237
238 };
239 };
240
241 namespace aux {
242
243 template<
244 typename F, typename T1, typename T2, typename T3, typename U1
245 , typename U2, typename U3, typename U4, typename U5
246 >
247 struct resolve_bind_arg<
248 bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
249 >
250 {
251 typedef bind3< F,T1,T2,T3 > f_;
252 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
253 };
254
255 } // namespace aux
256
257 BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
258 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
259
260 template<
261 typename F, typename T1, typename T2, typename T3, typename T4
262 >
263 struct bind4
264 {
265 template<
266 typename U1, typename U2, typename U3, typename U4, typename U5
267 >
268 struct apply
269 {
270 private:
271 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
272 typedef typename r0::type a0;
273 typedef typename r0::next n1;
274 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
275 ///
276 typedef aux::replace_unnamed_arg< T1,n1 > r1;
277 typedef typename r1::type a1;
278 typedef typename r1::next n2;
279 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
280 ///
281 typedef aux::replace_unnamed_arg< T2,n2 > r2;
282 typedef typename r2::type a2;
283 typedef typename r2::next n3;
284 typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
285 ///
286 typedef aux::replace_unnamed_arg< T3,n3 > r3;
287 typedef typename r3::type a3;
288 typedef typename r3::next n4;
289 typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
290 ///
291 typedef aux::replace_unnamed_arg< T4,n4 > r4;
292 typedef typename r4::type a4;
293 typedef typename r4::next n5;
294 typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
295 ///
296 public:
297 typedef typename apply_wrap4<
298 f_
299 , typename t1::type, typename t2::type, typename t3::type
300 , typename t4::type
301 >::type type;
302
303 };
304 };
305
306 namespace aux {
307
308 template<
309 typename F, typename T1, typename T2, typename T3, typename T4
310 , typename U1, typename U2, typename U3, typename U4, typename U5
311 >
312 struct resolve_bind_arg<
313 bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
314 >
315 {
316 typedef bind4< F,T1,T2,T3,T4 > f_;
317 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
318 };
319
320 } // namespace aux
321
322 BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
323 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
324
325 template<
326 typename F, typename T1, typename T2, typename T3, typename T4
327 , typename T5
328 >
329 struct bind5
330 {
331 template<
332 typename U1, typename U2, typename U3, typename U4, typename U5
333 >
334 struct apply
335 {
336 private:
337 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
338 typedef typename r0::type a0;
339 typedef typename r0::next n1;
340 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
341 ///
342 typedef aux::replace_unnamed_arg< T1,n1 > r1;
343 typedef typename r1::type a1;
344 typedef typename r1::next n2;
345 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
346 ///
347 typedef aux::replace_unnamed_arg< T2,n2 > r2;
348 typedef typename r2::type a2;
349 typedef typename r2::next n3;
350 typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
351 ///
352 typedef aux::replace_unnamed_arg< T3,n3 > r3;
353 typedef typename r3::type a3;
354 typedef typename r3::next n4;
355 typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
356 ///
357 typedef aux::replace_unnamed_arg< T4,n4 > r4;
358 typedef typename r4::type a4;
359 typedef typename r4::next n5;
360 typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
361 ///
362 typedef aux::replace_unnamed_arg< T5,n5 > r5;
363 typedef typename r5::type a5;
364 typedef typename r5::next n6;
365 typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
366 ///
367 public:
368 typedef typename apply_wrap5<
369 f_
370 , typename t1::type, typename t2::type, typename t3::type
371 , typename t4::type, typename t5::type
372 >::type type;
373
374 };
375 };
376
377 namespace aux {
378
379 template<
380 typename F, typename T1, typename T2, typename T3, typename T4
381 , typename T5, typename U1, typename U2, typename U3, typename U4
382 , typename U5
383 >
384 struct resolve_bind_arg<
385 bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
386 >
387 {
388 typedef bind5< F,T1,T2,T3,T4,T5 > f_;
389 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
390 };
391
392 } // namespace aux
393
394 BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
395 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
396 }}
397