]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/proto/include/boost/proto/detail/preprocessed/generate_by_value.hpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / proto / include / boost / proto / detail / preprocessed / generate_by_value.hpp
1 ///////////////////////////////////////////////////////////////////////////////
2 /// \file generate_by_value.hpp
3 /// Contains definition of by_value_generator_\<\> class template.
4 //
5 // Copyright 2008 Eric Niebler. Distributed under the Boost
6 // Software License, Version 1.0. (See accompanying file
7 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
8 template<typename Tag , typename Arg0 >
9 struct by_value_generator_<
10 proto::expr<Tag, list1<Arg0>, 1>
11 >
12 {
13 typedef
14 list1<Arg0>
15 src_args;
16 typedef
17 list1<
18 typename uncvref<Arg0 >::type
19 >
20 dst_args;
21 typedef proto::expr<Tag, src_args, 1> src_type;
22 typedef proto::expr<Tag, dst_args, 1> type;
23 BOOST_FORCEINLINE
24 static type const call(src_type const &e)
25 {
26 type that = {
27 e.child0
28 };
29 return that;
30 }
31 };
32 template<typename Tag , typename Arg0 >
33 struct by_value_generator_<
34 proto::basic_expr<Tag, list1<Arg0>, 1>
35 >
36 {
37 typedef
38 list1<Arg0>
39 src_args;
40 typedef
41 list1<
42 typename uncvref<Arg0 >::type
43 >
44 dst_args;
45 typedef proto::basic_expr<Tag, src_args, 1> src_type;
46 typedef proto::basic_expr<Tag, dst_args, 1> type;
47 BOOST_FORCEINLINE
48 static type const call(src_type const &e)
49 {
50 type that = {
51 e.child0
52 };
53 return that;
54 }
55 };
56 template<typename Tag , typename Arg0 , typename Arg1 >
57 struct by_value_generator_<
58 proto::expr<Tag, list2<Arg0 , Arg1>, 2>
59 >
60 {
61 typedef
62 list2<Arg0 , Arg1>
63 src_args;
64 typedef
65 list2<
66 typename uncvref<Arg0 >::type , typename uncvref<Arg1 >::type
67 >
68 dst_args;
69 typedef proto::expr<Tag, src_args, 2> src_type;
70 typedef proto::expr<Tag, dst_args, 2> type;
71 BOOST_FORCEINLINE
72 static type const call(src_type const &e)
73 {
74 type that = {
75 e.child0 , e.child1
76 };
77 return that;
78 }
79 };
80 template<typename Tag , typename Arg0 , typename Arg1 >
81 struct by_value_generator_<
82 proto::basic_expr<Tag, list2<Arg0 , Arg1>, 2>
83 >
84 {
85 typedef
86 list2<Arg0 , Arg1>
87 src_args;
88 typedef
89 list2<
90 typename uncvref<Arg0 >::type , typename uncvref<Arg1 >::type
91 >
92 dst_args;
93 typedef proto::basic_expr<Tag, src_args, 2> src_type;
94 typedef proto::basic_expr<Tag, dst_args, 2> type;
95 BOOST_FORCEINLINE
96 static type const call(src_type const &e)
97 {
98 type that = {
99 e.child0 , e.child1
100 };
101 return that;
102 }
103 };
104 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 >
105 struct by_value_generator_<
106 proto::expr<Tag, list3<Arg0 , Arg1 , Arg2>, 3>
107 >
108 {
109 typedef
110 list3<Arg0 , Arg1 , Arg2>
111 src_args;
112 typedef
113 list3<
114 typename uncvref<Arg0 >::type , typename uncvref<Arg1 >::type , typename uncvref<Arg2 >::type
115 >
116 dst_args;
117 typedef proto::expr<Tag, src_args, 3> src_type;
118 typedef proto::expr<Tag, dst_args, 3> type;
119 BOOST_FORCEINLINE
120 static type const call(src_type const &e)
121 {
122 type that = {
123 e.child0 , e.child1 , e.child2
124 };
125 return that;
126 }
127 };
128 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 >
129 struct by_value_generator_<
130 proto::basic_expr<Tag, list3<Arg0 , Arg1 , Arg2>, 3>
131 >
132 {
133 typedef
134 list3<Arg0 , Arg1 , Arg2>
135 src_args;
136 typedef
137 list3<
138 typename uncvref<Arg0 >::type , typename uncvref<Arg1 >::type , typename uncvref<Arg2 >::type
139 >
140 dst_args;
141 typedef proto::basic_expr<Tag, src_args, 3> src_type;
142 typedef proto::basic_expr<Tag, dst_args, 3> type;
143 BOOST_FORCEINLINE
144 static type const call(src_type const &e)
145 {
146 type that = {
147 e.child0 , e.child1 , e.child2
148 };
149 return that;
150 }
151 };
152 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 >
153 struct by_value_generator_<
154 proto::expr<Tag, list4<Arg0 , Arg1 , Arg2 , Arg3>, 4>
155 >
156 {
157 typedef
158 list4<Arg0 , Arg1 , Arg2 , Arg3>
159 src_args;
160 typedef
161 list4<
162 typename uncvref<Arg0 >::type , typename uncvref<Arg1 >::type , typename uncvref<Arg2 >::type , typename uncvref<Arg3 >::type
163 >
164 dst_args;
165 typedef proto::expr<Tag, src_args, 4> src_type;
166 typedef proto::expr<Tag, dst_args, 4> type;
167 BOOST_FORCEINLINE
168 static type const call(src_type const &e)
169 {
170 type that = {
171 e.child0 , e.child1 , e.child2 , e.child3
172 };
173 return that;
174 }
175 };
176 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 >
177 struct by_value_generator_<
178 proto::basic_expr<Tag, list4<Arg0 , Arg1 , Arg2 , Arg3>, 4>
179 >
180 {
181 typedef
182 list4<Arg0 , Arg1 , Arg2 , Arg3>
183 src_args;
184 typedef
185 list4<
186 typename uncvref<Arg0 >::type , typename uncvref<Arg1 >::type , typename uncvref<Arg2 >::type , typename uncvref<Arg3 >::type
187 >
188 dst_args;
189 typedef proto::basic_expr<Tag, src_args, 4> src_type;
190 typedef proto::basic_expr<Tag, dst_args, 4> type;
191 BOOST_FORCEINLINE
192 static type const call(src_type const &e)
193 {
194 type that = {
195 e.child0 , e.child1 , e.child2 , e.child3
196 };
197 return that;
198 }
199 };
200 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 >
201 struct by_value_generator_<
202 proto::expr<Tag, list5<Arg0 , Arg1 , Arg2 , Arg3 , Arg4>, 5>
203 >
204 {
205 typedef
206 list5<Arg0 , Arg1 , Arg2 , Arg3 , Arg4>
207 src_args;
208 typedef
209 list5<
210 typename uncvref<Arg0 >::type , typename uncvref<Arg1 >::type , typename uncvref<Arg2 >::type , typename uncvref<Arg3 >::type , typename uncvref<Arg4 >::type
211 >
212 dst_args;
213 typedef proto::expr<Tag, src_args, 5> src_type;
214 typedef proto::expr<Tag, dst_args, 5> type;
215 BOOST_FORCEINLINE
216 static type const call(src_type const &e)
217 {
218 type that = {
219 e.child0 , e.child1 , e.child2 , e.child3 , e.child4
220 };
221 return that;
222 }
223 };
224 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 >
225 struct by_value_generator_<
226 proto::basic_expr<Tag, list5<Arg0 , Arg1 , Arg2 , Arg3 , Arg4>, 5>
227 >
228 {
229 typedef
230 list5<Arg0 , Arg1 , Arg2 , Arg3 , Arg4>
231 src_args;
232 typedef
233 list5<
234 typename uncvref<Arg0 >::type , typename uncvref<Arg1 >::type , typename uncvref<Arg2 >::type , typename uncvref<Arg3 >::type , typename uncvref<Arg4 >::type
235 >
236 dst_args;
237 typedef proto::basic_expr<Tag, src_args, 5> src_type;
238 typedef proto::basic_expr<Tag, dst_args, 5> type;
239 BOOST_FORCEINLINE
240 static type const call(src_type const &e)
241 {
242 type that = {
243 e.child0 , e.child1 , e.child2 , e.child3 , e.child4
244 };
245 return that;
246 }
247 };
248 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 >
249 struct by_value_generator_<
250 proto::expr<Tag, list6<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5>, 6>
251 >
252 {
253 typedef
254 list6<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5>
255 src_args;
256 typedef
257 list6<
258 typename uncvref<Arg0 >::type , typename uncvref<Arg1 >::type , typename uncvref<Arg2 >::type , typename uncvref<Arg3 >::type , typename uncvref<Arg4 >::type , typename uncvref<Arg5 >::type
259 >
260 dst_args;
261 typedef proto::expr<Tag, src_args, 6> src_type;
262 typedef proto::expr<Tag, dst_args, 6> type;
263 BOOST_FORCEINLINE
264 static type const call(src_type const &e)
265 {
266 type that = {
267 e.child0 , e.child1 , e.child2 , e.child3 , e.child4 , e.child5
268 };
269 return that;
270 }
271 };
272 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 >
273 struct by_value_generator_<
274 proto::basic_expr<Tag, list6<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5>, 6>
275 >
276 {
277 typedef
278 list6<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5>
279 src_args;
280 typedef
281 list6<
282 typename uncvref<Arg0 >::type , typename uncvref<Arg1 >::type , typename uncvref<Arg2 >::type , typename uncvref<Arg3 >::type , typename uncvref<Arg4 >::type , typename uncvref<Arg5 >::type
283 >
284 dst_args;
285 typedef proto::basic_expr<Tag, src_args, 6> src_type;
286 typedef proto::basic_expr<Tag, dst_args, 6> type;
287 BOOST_FORCEINLINE
288 static type const call(src_type const &e)
289 {
290 type that = {
291 e.child0 , e.child1 , e.child2 , e.child3 , e.child4 , e.child5
292 };
293 return that;
294 }
295 };
296 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 >
297 struct by_value_generator_<
298 proto::expr<Tag, list7<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6>, 7>
299 >
300 {
301 typedef
302 list7<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6>
303 src_args;
304 typedef
305 list7<
306 typename uncvref<Arg0 >::type , typename uncvref<Arg1 >::type , typename uncvref<Arg2 >::type , typename uncvref<Arg3 >::type , typename uncvref<Arg4 >::type , typename uncvref<Arg5 >::type , typename uncvref<Arg6 >::type
307 >
308 dst_args;
309 typedef proto::expr<Tag, src_args, 7> src_type;
310 typedef proto::expr<Tag, dst_args, 7> type;
311 BOOST_FORCEINLINE
312 static type const call(src_type const &e)
313 {
314 type that = {
315 e.child0 , e.child1 , e.child2 , e.child3 , e.child4 , e.child5 , e.child6
316 };
317 return that;
318 }
319 };
320 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 >
321 struct by_value_generator_<
322 proto::basic_expr<Tag, list7<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6>, 7>
323 >
324 {
325 typedef
326 list7<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6>
327 src_args;
328 typedef
329 list7<
330 typename uncvref<Arg0 >::type , typename uncvref<Arg1 >::type , typename uncvref<Arg2 >::type , typename uncvref<Arg3 >::type , typename uncvref<Arg4 >::type , typename uncvref<Arg5 >::type , typename uncvref<Arg6 >::type
331 >
332 dst_args;
333 typedef proto::basic_expr<Tag, src_args, 7> src_type;
334 typedef proto::basic_expr<Tag, dst_args, 7> type;
335 BOOST_FORCEINLINE
336 static type const call(src_type const &e)
337 {
338 type that = {
339 e.child0 , e.child1 , e.child2 , e.child3 , e.child4 , e.child5 , e.child6
340 };
341 return that;
342 }
343 };
344 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 >
345 struct by_value_generator_<
346 proto::expr<Tag, list8<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7>, 8>
347 >
348 {
349 typedef
350 list8<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7>
351 src_args;
352 typedef
353 list8<
354 typename uncvref<Arg0 >::type , typename uncvref<Arg1 >::type , typename uncvref<Arg2 >::type , typename uncvref<Arg3 >::type , typename uncvref<Arg4 >::type , typename uncvref<Arg5 >::type , typename uncvref<Arg6 >::type , typename uncvref<Arg7 >::type
355 >
356 dst_args;
357 typedef proto::expr<Tag, src_args, 8> src_type;
358 typedef proto::expr<Tag, dst_args, 8> type;
359 BOOST_FORCEINLINE
360 static type const call(src_type const &e)
361 {
362 type that = {
363 e.child0 , e.child1 , e.child2 , e.child3 , e.child4 , e.child5 , e.child6 , e.child7
364 };
365 return that;
366 }
367 };
368 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 >
369 struct by_value_generator_<
370 proto::basic_expr<Tag, list8<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7>, 8>
371 >
372 {
373 typedef
374 list8<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7>
375 src_args;
376 typedef
377 list8<
378 typename uncvref<Arg0 >::type , typename uncvref<Arg1 >::type , typename uncvref<Arg2 >::type , typename uncvref<Arg3 >::type , typename uncvref<Arg4 >::type , typename uncvref<Arg5 >::type , typename uncvref<Arg6 >::type , typename uncvref<Arg7 >::type
379 >
380 dst_args;
381 typedef proto::basic_expr<Tag, src_args, 8> src_type;
382 typedef proto::basic_expr<Tag, dst_args, 8> type;
383 BOOST_FORCEINLINE
384 static type const call(src_type const &e)
385 {
386 type that = {
387 e.child0 , e.child1 , e.child2 , e.child3 , e.child4 , e.child5 , e.child6 , e.child7
388 };
389 return that;
390 }
391 };
392 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 , typename Arg8 >
393 struct by_value_generator_<
394 proto::expr<Tag, list9<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8>, 9>
395 >
396 {
397 typedef
398 list9<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8>
399 src_args;
400 typedef
401 list9<
402 typename uncvref<Arg0 >::type , typename uncvref<Arg1 >::type , typename uncvref<Arg2 >::type , typename uncvref<Arg3 >::type , typename uncvref<Arg4 >::type , typename uncvref<Arg5 >::type , typename uncvref<Arg6 >::type , typename uncvref<Arg7 >::type , typename uncvref<Arg8 >::type
403 >
404 dst_args;
405 typedef proto::expr<Tag, src_args, 9> src_type;
406 typedef proto::expr<Tag, dst_args, 9> type;
407 BOOST_FORCEINLINE
408 static type const call(src_type const &e)
409 {
410 type that = {
411 e.child0 , e.child1 , e.child2 , e.child3 , e.child4 , e.child5 , e.child6 , e.child7 , e.child8
412 };
413 return that;
414 }
415 };
416 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 , typename Arg8 >
417 struct by_value_generator_<
418 proto::basic_expr<Tag, list9<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8>, 9>
419 >
420 {
421 typedef
422 list9<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8>
423 src_args;
424 typedef
425 list9<
426 typename uncvref<Arg0 >::type , typename uncvref<Arg1 >::type , typename uncvref<Arg2 >::type , typename uncvref<Arg3 >::type , typename uncvref<Arg4 >::type , typename uncvref<Arg5 >::type , typename uncvref<Arg6 >::type , typename uncvref<Arg7 >::type , typename uncvref<Arg8 >::type
427 >
428 dst_args;
429 typedef proto::basic_expr<Tag, src_args, 9> src_type;
430 typedef proto::basic_expr<Tag, dst_args, 9> type;
431 BOOST_FORCEINLINE
432 static type const call(src_type const &e)
433 {
434 type that = {
435 e.child0 , e.child1 , e.child2 , e.child3 , e.child4 , e.child5 , e.child6 , e.child7 , e.child8
436 };
437 return that;
438 }
439 };
440 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 , typename Arg8 , typename Arg9 >
441 struct by_value_generator_<
442 proto::expr<Tag, list10<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8 , Arg9>, 10>
443 >
444 {
445 typedef
446 list10<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8 , Arg9>
447 src_args;
448 typedef
449 list10<
450 typename uncvref<Arg0 >::type , typename uncvref<Arg1 >::type , typename uncvref<Arg2 >::type , typename uncvref<Arg3 >::type , typename uncvref<Arg4 >::type , typename uncvref<Arg5 >::type , typename uncvref<Arg6 >::type , typename uncvref<Arg7 >::type , typename uncvref<Arg8 >::type , typename uncvref<Arg9 >::type
451 >
452 dst_args;
453 typedef proto::expr<Tag, src_args, 10> src_type;
454 typedef proto::expr<Tag, dst_args, 10> type;
455 BOOST_FORCEINLINE
456 static type const call(src_type const &e)
457 {
458 type that = {
459 e.child0 , e.child1 , e.child2 , e.child3 , e.child4 , e.child5 , e.child6 , e.child7 , e.child8 , e.child9
460 };
461 return that;
462 }
463 };
464 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 , typename Arg8 , typename Arg9 >
465 struct by_value_generator_<
466 proto::basic_expr<Tag, list10<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8 , Arg9>, 10>
467 >
468 {
469 typedef
470 list10<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8 , Arg9>
471 src_args;
472 typedef
473 list10<
474 typename uncvref<Arg0 >::type , typename uncvref<Arg1 >::type , typename uncvref<Arg2 >::type , typename uncvref<Arg3 >::type , typename uncvref<Arg4 >::type , typename uncvref<Arg5 >::type , typename uncvref<Arg6 >::type , typename uncvref<Arg7 >::type , typename uncvref<Arg8 >::type , typename uncvref<Arg9 >::type
475 >
476 dst_args;
477 typedef proto::basic_expr<Tag, src_args, 10> src_type;
478 typedef proto::basic_expr<Tag, dst_args, 10> type;
479 BOOST_FORCEINLINE
480 static type const call(src_type const &e)
481 {
482 type that = {
483 e.child0 , e.child1 , e.child2 , e.child3 , e.child4 , e.child5 , e.child6 , e.child7 , e.child8 , e.child9
484 };
485 return that;
486 }
487 };