]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/mpl/include/boost/mpl/aux_/preprocessed/bcc551/bind.hpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / mpl / include / boost / mpl / aux_ / preprocessed / bcc551 / 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 "boost/mpl/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 = na, typename U2 = na, typename U3 = na
62 , typename U4 = na, typename U5 = na
63 >
64 struct apply
65 {
66 private:
67 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
68 typedef typename r0::type a0;
69 typedef typename r0::next n1;
70 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
71 ///
72 public:
73 typedef typename apply_wrap0<
74 f_
75 >::type type;
76
77 };
78 };
79
80 namespace aux {
81
82 template<
83 typename F, typename U1, typename U2, typename U3, typename U4
84 , typename U5
85 >
86 struct resolve_bind_arg<
87 bind0<F>, U1, U2, U3, U4, U5
88 >
89 {
90 typedef bind0<F> f_;
91 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
92 };
93
94 } // namespace aux
95
96 BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
97 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
98
99 template<
100 typename F, typename T1
101 >
102 struct bind1
103 {
104 template<
105 typename U1 = na, typename U2 = na, typename U3 = na
106 , typename U4 = na, typename U5 = na
107 >
108 struct apply
109 {
110 private:
111 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
112 typedef typename r0::type a0;
113 typedef typename r0::next n1;
114 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
115 ///
116 typedef aux::replace_unnamed_arg< T1,n1 > r1;
117 typedef typename r1::type a1;
118 typedef typename r1::next n2;
119 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
120 ///
121 public:
122 typedef typename apply_wrap1<
123 f_
124 , typename t1::type
125 >::type type;
126
127 };
128 };
129
130 namespace aux {
131
132 template<
133 typename F, typename T1, typename U1, typename U2, typename U3
134 , typename U4, typename U5
135 >
136 struct resolve_bind_arg<
137 bind1< F,T1 >, U1, U2, U3, U4, U5
138 >
139 {
140 typedef bind1< F,T1 > f_;
141 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
142 };
143
144 } // namespace aux
145
146 BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
147 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
148
149 template<
150 typename F, typename T1, typename T2
151 >
152 struct bind2
153 {
154 template<
155 typename U1 = na, typename U2 = na, typename U3 = na
156 , typename U4 = na, typename U5 = na
157 >
158 struct apply
159 {
160 private:
161 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
162 typedef typename r0::type a0;
163 typedef typename r0::next n1;
164 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
165 ///
166 typedef aux::replace_unnamed_arg< T1,n1 > r1;
167 typedef typename r1::type a1;
168 typedef typename r1::next n2;
169 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
170 ///
171 typedef aux::replace_unnamed_arg< T2,n2 > r2;
172 typedef typename r2::type a2;
173 typedef typename r2::next n3;
174 typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
175 ///
176 public:
177 typedef typename apply_wrap2<
178 f_
179 , typename t1::type, typename t2::type
180 >::type type;
181
182 };
183 };
184
185 namespace aux {
186
187 template<
188 typename F, typename T1, typename T2, typename U1, typename U2
189 , typename U3, typename U4, typename U5
190 >
191 struct resolve_bind_arg<
192 bind2< F,T1,T2 >, U1, U2, U3, U4, U5
193 >
194 {
195 typedef bind2< F,T1,T2 > f_;
196 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
197 };
198
199 } // namespace aux
200
201 BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
202 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
203
204 template<
205 typename F, typename T1, typename T2, typename T3
206 >
207 struct bind3
208 {
209 template<
210 typename U1 = na, typename U2 = na, typename U3 = na
211 , typename U4 = na, typename U5 = na
212 >
213 struct apply
214 {
215 private:
216 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
217 typedef typename r0::type a0;
218 typedef typename r0::next n1;
219 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
220 ///
221 typedef aux::replace_unnamed_arg< T1,n1 > r1;
222 typedef typename r1::type a1;
223 typedef typename r1::next n2;
224 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
225 ///
226 typedef aux::replace_unnamed_arg< T2,n2 > r2;
227 typedef typename r2::type a2;
228 typedef typename r2::next n3;
229 typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
230 ///
231 typedef aux::replace_unnamed_arg< T3,n3 > r3;
232 typedef typename r3::type a3;
233 typedef typename r3::next n4;
234 typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
235 ///
236 public:
237 typedef typename apply_wrap3<
238 f_
239 , typename t1::type, typename t2::type, typename t3::type
240 >::type type;
241
242 };
243 };
244
245 namespace aux {
246
247 template<
248 typename F, typename T1, typename T2, typename T3, typename U1
249 , typename U2, typename U3, typename U4, typename U5
250 >
251 struct resolve_bind_arg<
252 bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
253 >
254 {
255 typedef bind3< F,T1,T2,T3 > f_;
256 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
257 };
258
259 } // namespace aux
260
261 BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
262 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
263
264 template<
265 typename F, typename T1, typename T2, typename T3, typename T4
266 >
267 struct bind4
268 {
269 template<
270 typename U1 = na, typename U2 = na, typename U3 = na
271 , typename U4 = na, typename U5 = na
272 >
273 struct apply
274 {
275 private:
276 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
277 typedef typename r0::type a0;
278 typedef typename r0::next n1;
279 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
280 ///
281 typedef aux::replace_unnamed_arg< T1,n1 > r1;
282 typedef typename r1::type a1;
283 typedef typename r1::next n2;
284 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
285 ///
286 typedef aux::replace_unnamed_arg< T2,n2 > r2;
287 typedef typename r2::type a2;
288 typedef typename r2::next n3;
289 typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
290 ///
291 typedef aux::replace_unnamed_arg< T3,n3 > r3;
292 typedef typename r3::type a3;
293 typedef typename r3::next n4;
294 typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
295 ///
296 typedef aux::replace_unnamed_arg< T4,n4 > r4;
297 typedef typename r4::type a4;
298 typedef typename r4::next n5;
299 typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
300 ///
301 public:
302 typedef typename apply_wrap4<
303 f_
304 , typename t1::type, typename t2::type, typename t3::type
305 , typename t4::type
306 >::type type;
307
308 };
309 };
310
311 namespace aux {
312
313 template<
314 typename F, typename T1, typename T2, typename T3, typename T4
315 , typename U1, typename U2, typename U3, typename U4, typename U5
316 >
317 struct resolve_bind_arg<
318 bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
319 >
320 {
321 typedef bind4< F,T1,T2,T3,T4 > f_;
322 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
323 };
324
325 } // namespace aux
326
327 BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
328 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
329
330 template<
331 typename F, typename T1, typename T2, typename T3, typename T4
332 , typename T5
333 >
334 struct bind5
335 {
336 template<
337 typename U1 = na, typename U2 = na, typename U3 = na
338 , typename U4 = na, typename U5 = na
339 >
340 struct apply
341 {
342 private:
343 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
344 typedef typename r0::type a0;
345 typedef typename r0::next n1;
346 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
347 ///
348 typedef aux::replace_unnamed_arg< T1,n1 > r1;
349 typedef typename r1::type a1;
350 typedef typename r1::next n2;
351 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
352 ///
353 typedef aux::replace_unnamed_arg< T2,n2 > r2;
354 typedef typename r2::type a2;
355 typedef typename r2::next n3;
356 typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
357 ///
358 typedef aux::replace_unnamed_arg< T3,n3 > r3;
359 typedef typename r3::type a3;
360 typedef typename r3::next n4;
361 typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
362 ///
363 typedef aux::replace_unnamed_arg< T4,n4 > r4;
364 typedef typename r4::type a4;
365 typedef typename r4::next n5;
366 typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
367 ///
368 typedef aux::replace_unnamed_arg< T5,n5 > r5;
369 typedef typename r5::type a5;
370 typedef typename r5::next n6;
371 typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
372 ///
373 public:
374 typedef typename apply_wrap5<
375 f_
376 , typename t1::type, typename t2::type, typename t3::type
377 , typename t4::type, typename t5::type
378 >::type type;
379
380 };
381 };
382
383 namespace aux {
384
385 template<
386 typename F, typename T1, typename T2, typename T3, typename T4
387 , typename T5, typename U1, typename U2, typename U3, typename U4
388 , typename U5
389 >
390 struct resolve_bind_arg<
391 bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
392 >
393 {
394 typedef bind5< F,T1,T2,T3,T4,T5 > f_;
395 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
396 };
397
398 } // namespace aux
399
400 BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
401 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
402 }}
403