MessagePack for C++
cpp03_msgpack_tuple.hpp
Go to the documentation of this file.
1 //
2 // MessagePack for C++ static resolution routine
3 //
4 // Copyright (C) 2008-2013 FURUHASHI Sadayuki and KONDO Takatoshi
5 //
6 // Distributed under the Boost Software License, Version 1.0.
7 // (See accompanying file LICENSE_1_0.txt or copy at
8 // http://www.boost.org/LICENSE_1_0.txt)
9 //
10 #ifndef MSGPACK_CPP03_MSGPACK_TUPLE_HPP
11 #define MSGPACK_CPP03_MSGPACK_TUPLE_HPP
12 
13 #include "msgpack/versioning.hpp"
14 #include "msgpack/object.hpp"
16 
17 namespace msgpack {
18 
22 
23 namespace type {
24 
25 // FIXME operator==
26 // FIXME operator!=
27 
28 
30 template <typename A0 = void, typename A1 = void, typename A2 = void, typename A3 = void, typename A4 = void, typename A5 = void, typename A6 = void, typename A7 = void, typename A8 = void, typename A9 = void, typename A10 = void, typename A11 = void, typename A12 = void, typename A13 = void, typename A14 = void, typename A15 = void, typename A16 = void, typename A17 = void, typename A18 = void, typename A19 = void, typename A20 = void, typename A21 = void, typename A22 = void, typename A23 = void, typename A24 = void, typename A25 = void, typename A26 = void, typename A27 = void, typename A28 = void, typename A29 = void, typename A30 = void, typename A31 = void, typename A32 = void>
31 struct tuple;
33 
34 template <typename Tuple, int N>
36 
37 template <typename Tuple, int N>
39 
40 template <typename T>
41 struct tuple_type {
42  typedef T type;
43  typedef T value_type;
44  typedef T& reference;
45  typedef const T& const_reference;
46  typedef const T& transparent_reference;
47 };
48 
49 template <typename T>
50 struct tuple_type<T&> {
51  typedef T type;
52  typedef T& value_type;
53  typedef T& reference;
54  typedef const T& const_reference;
56 };
57 
58 template <typename T>
59 struct tuple_type<const T&> {
60  typedef T type;
61  typedef T& value_type;
62  typedef T& reference;
63  typedef const T& const_reference;
64  typedef const T& transparent_reference;
65 };
66 
68 
69 
70 template <typename A0>
71 struct tuple_element<tuple<A0>, 0> : tuple_type<A0> {
72  tuple_element(tuple<A0>& x) : m_x(x.a0) {}
73  typename tuple_type<A0>::reference get() { return m_x; }
74  typename tuple_type<A0>::const_reference get() const { return m_x; }
75 private:
76  typename tuple_type<A0>::reference m_x;
77 };
78 
79 
80 
81 template <typename A0, typename A1>
82 struct tuple_element<tuple<A0, A1>, 0> : tuple_type<A0> {
83  tuple_element(tuple<A0, A1 >& x) : m_x(x.a0) {}
84  typename tuple_type<A0>::reference get() { return m_x; }
85  typename tuple_type<A0>::const_reference get() const { return m_x; }
86 private:
87  typename tuple_type<A0>::reference m_x;
88 };
89 
90 template <typename A0, typename A1>
91 struct tuple_element<tuple<A0, A1>, 1> : tuple_type<A1> {
92  tuple_element(tuple<A0, A1 >& x) : m_x(x.a1) {}
93  typename tuple_type<A1>::reference get() { return m_x; }
94  typename tuple_type<A1>::const_reference get() const { return m_x; }
95 private:
96  typename tuple_type<A1>::reference m_x;
97 };
98 
99 
100 
101 template <typename A0, typename A1, typename A2>
102 struct tuple_element<tuple<A0, A1, A2>, 0> : tuple_type<A0> {
103  tuple_element(tuple<A0, A1 , A2 >& x) : m_x(x.a0) {}
104  typename tuple_type<A0>::reference get() { return m_x; }
105  typename tuple_type<A0>::const_reference get() const { return m_x; }
106 private:
107  typename tuple_type<A0>::reference m_x;
108 };
109 
110 template <typename A0, typename A1, typename A2>
111 struct tuple_element<tuple<A0, A1, A2>, 1> : tuple_type<A1> {
112  tuple_element(tuple<A0, A1 , A2 >& x) : m_x(x.a1) {}
113  typename tuple_type<A1>::reference get() { return m_x; }
114  typename tuple_type<A1>::const_reference get() const { return m_x; }
115 private:
116  typename tuple_type<A1>::reference m_x;
117 };
118 
119 template <typename A0, typename A1, typename A2>
120 struct tuple_element<tuple<A0, A1, A2>, 2> : tuple_type<A2> {
121  tuple_element(tuple<A0, A1 , A2 >& x) : m_x(x.a2) {}
122  typename tuple_type<A2>::reference get() { return m_x; }
123  typename tuple_type<A2>::const_reference get() const { return m_x; }
124 private:
125  typename tuple_type<A2>::reference m_x;
126 };
127 
128 
129 
130 template <typename A0, typename A1, typename A2, typename A3>
131 struct tuple_element<tuple<A0, A1, A2, A3>, 0> : tuple_type<A0> {
132  tuple_element(tuple<A0, A1 , A2 , A3 >& x) : m_x(x.a0) {}
133  typename tuple_type<A0>::reference get() { return m_x; }
134  typename tuple_type<A0>::const_reference get() const { return m_x; }
135 private:
136  typename tuple_type<A0>::reference m_x;
137 };
138 
139 template <typename A0, typename A1, typename A2, typename A3>
140 struct tuple_element<tuple<A0, A1, A2, A3>, 1> : tuple_type<A1> {
141  tuple_element(tuple<A0, A1 , A2 , A3 >& x) : m_x(x.a1) {}
142  typename tuple_type<A1>::reference get() { return m_x; }
143  typename tuple_type<A1>::const_reference get() const { return m_x; }
144 private:
145  typename tuple_type<A1>::reference m_x;
146 };
147 
148 template <typename A0, typename A1, typename A2, typename A3>
149 struct tuple_element<tuple<A0, A1, A2, A3>, 2> : tuple_type<A2> {
150  tuple_element(tuple<A0, A1 , A2 , A3 >& x) : m_x(x.a2) {}
151  typename tuple_type<A2>::reference get() { return m_x; }
152  typename tuple_type<A2>::const_reference get() const { return m_x; }
153 private:
154  typename tuple_type<A2>::reference m_x;
155 };
156 
157 template <typename A0, typename A1, typename A2, typename A3>
158 struct tuple_element<tuple<A0, A1, A2, A3>, 3> : tuple_type<A3> {
159  tuple_element(tuple<A0, A1 , A2 , A3 >& x) : m_x(x.a3) {}
160  typename tuple_type<A3>::reference get() { return m_x; }
161  typename tuple_type<A3>::const_reference get() const { return m_x; }
162 private:
163  typename tuple_type<A3>::reference m_x;
164 };
165 
166 
167 
168 template <typename A0, typename A1, typename A2, typename A3, typename A4>
169 struct tuple_element<tuple<A0, A1, A2, A3, A4>, 0> : tuple_type<A0> {
171  typename tuple_type<A0>::reference get() { return m_x; }
172  typename tuple_type<A0>::const_reference get() const { return m_x; }
173 private:
174  typename tuple_type<A0>::reference m_x;
175 };
176 
177 template <typename A0, typename A1, typename A2, typename A3, typename A4>
178 struct tuple_element<tuple<A0, A1, A2, A3, A4>, 1> : tuple_type<A1> {
180  typename tuple_type<A1>::reference get() { return m_x; }
181  typename tuple_type<A1>::const_reference get() const { return m_x; }
182 private:
183  typename tuple_type<A1>::reference m_x;
184 };
185 
186 template <typename A0, typename A1, typename A2, typename A3, typename A4>
187 struct tuple_element<tuple<A0, A1, A2, A3, A4>, 2> : tuple_type<A2> {
189  typename tuple_type<A2>::reference get() { return m_x; }
190  typename tuple_type<A2>::const_reference get() const { return m_x; }
191 private:
192  typename tuple_type<A2>::reference m_x;
193 };
194 
195 template <typename A0, typename A1, typename A2, typename A3, typename A4>
196 struct tuple_element<tuple<A0, A1, A2, A3, A4>, 3> : tuple_type<A3> {
198  typename tuple_type<A3>::reference get() { return m_x; }
199  typename tuple_type<A3>::const_reference get() const { return m_x; }
200 private:
201  typename tuple_type<A3>::reference m_x;
202 };
203 
204 template <typename A0, typename A1, typename A2, typename A3, typename A4>
205 struct tuple_element<tuple<A0, A1, A2, A3, A4>, 4> : tuple_type<A4> {
207  typename tuple_type<A4>::reference get() { return m_x; }
208  typename tuple_type<A4>::const_reference get() const { return m_x; }
209 private:
210  typename tuple_type<A4>::reference m_x;
211 };
212 
213 
214 
215 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
216 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 0> : tuple_type<A0> {
218  typename tuple_type<A0>::reference get() { return m_x; }
219  typename tuple_type<A0>::const_reference get() const { return m_x; }
220 private:
221  typename tuple_type<A0>::reference m_x;
222 };
223 
224 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
225 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 1> : tuple_type<A1> {
227  typename tuple_type<A1>::reference get() { return m_x; }
228  typename tuple_type<A1>::const_reference get() const { return m_x; }
229 private:
230  typename tuple_type<A1>::reference m_x;
231 };
232 
233 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
234 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 2> : tuple_type<A2> {
236  typename tuple_type<A2>::reference get() { return m_x; }
237  typename tuple_type<A2>::const_reference get() const { return m_x; }
238 private:
239  typename tuple_type<A2>::reference m_x;
240 };
241 
242 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
243 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 3> : tuple_type<A3> {
245  typename tuple_type<A3>::reference get() { return m_x; }
246  typename tuple_type<A3>::const_reference get() const { return m_x; }
247 private:
248  typename tuple_type<A3>::reference m_x;
249 };
250 
251 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
252 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 4> : tuple_type<A4> {
254  typename tuple_type<A4>::reference get() { return m_x; }
255  typename tuple_type<A4>::const_reference get() const { return m_x; }
256 private:
257  typename tuple_type<A4>::reference m_x;
258 };
259 
260 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
261 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 5> : tuple_type<A5> {
263  typename tuple_type<A5>::reference get() { return m_x; }
264  typename tuple_type<A5>::const_reference get() const { return m_x; }
265 private:
266  typename tuple_type<A5>::reference m_x;
267 };
268 
269 
270 
271 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
272 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 0> : tuple_type<A0> {
274  typename tuple_type<A0>::reference get() { return m_x; }
275  typename tuple_type<A0>::const_reference get() const { return m_x; }
276 private:
277  typename tuple_type<A0>::reference m_x;
278 };
279 
280 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
281 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 1> : tuple_type<A1> {
283  typename tuple_type<A1>::reference get() { return m_x; }
284  typename tuple_type<A1>::const_reference get() const { return m_x; }
285 private:
286  typename tuple_type<A1>::reference m_x;
287 };
288 
289 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
290 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 2> : tuple_type<A2> {
292  typename tuple_type<A2>::reference get() { return m_x; }
293  typename tuple_type<A2>::const_reference get() const { return m_x; }
294 private:
295  typename tuple_type<A2>::reference m_x;
296 };
297 
298 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
299 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 3> : tuple_type<A3> {
301  typename tuple_type<A3>::reference get() { return m_x; }
302  typename tuple_type<A3>::const_reference get() const { return m_x; }
303 private:
304  typename tuple_type<A3>::reference m_x;
305 };
306 
307 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
308 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 4> : tuple_type<A4> {
310  typename tuple_type<A4>::reference get() { return m_x; }
311  typename tuple_type<A4>::const_reference get() const { return m_x; }
312 private:
313  typename tuple_type<A4>::reference m_x;
314 };
315 
316 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
317 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 5> : tuple_type<A5> {
319  typename tuple_type<A5>::reference get() { return m_x; }
320  typename tuple_type<A5>::const_reference get() const { return m_x; }
321 private:
322  typename tuple_type<A5>::reference m_x;
323 };
324 
325 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
326 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 6> : tuple_type<A6> {
328  typename tuple_type<A6>::reference get() { return m_x; }
329  typename tuple_type<A6>::const_reference get() const { return m_x; }
330 private:
331  typename tuple_type<A6>::reference m_x;
332 };
333 
334 
335 
336 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
337 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 0> : tuple_type<A0> {
339  typename tuple_type<A0>::reference get() { return m_x; }
340  typename tuple_type<A0>::const_reference get() const { return m_x; }
341 private:
342  typename tuple_type<A0>::reference m_x;
343 };
344 
345 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
346 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 1> : tuple_type<A1> {
348  typename tuple_type<A1>::reference get() { return m_x; }
349  typename tuple_type<A1>::const_reference get() const { return m_x; }
350 private:
351  typename tuple_type<A1>::reference m_x;
352 };
353 
354 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
355 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 2> : tuple_type<A2> {
357  typename tuple_type<A2>::reference get() { return m_x; }
358  typename tuple_type<A2>::const_reference get() const { return m_x; }
359 private:
360  typename tuple_type<A2>::reference m_x;
361 };
362 
363 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
364 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 3> : tuple_type<A3> {
366  typename tuple_type<A3>::reference get() { return m_x; }
367  typename tuple_type<A3>::const_reference get() const { return m_x; }
368 private:
369  typename tuple_type<A3>::reference m_x;
370 };
371 
372 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
373 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 4> : tuple_type<A4> {
375  typename tuple_type<A4>::reference get() { return m_x; }
376  typename tuple_type<A4>::const_reference get() const { return m_x; }
377 private:
378  typename tuple_type<A4>::reference m_x;
379 };
380 
381 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
382 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 5> : tuple_type<A5> {
384  typename tuple_type<A5>::reference get() { return m_x; }
385  typename tuple_type<A5>::const_reference get() const { return m_x; }
386 private:
387  typename tuple_type<A5>::reference m_x;
388 };
389 
390 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
391 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 6> : tuple_type<A6> {
393  typename tuple_type<A6>::reference get() { return m_x; }
394  typename tuple_type<A6>::const_reference get() const { return m_x; }
395 private:
396  typename tuple_type<A6>::reference m_x;
397 };
398 
399 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
400 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 7> : tuple_type<A7> {
402  typename tuple_type<A7>::reference get() { return m_x; }
403  typename tuple_type<A7>::const_reference get() const { return m_x; }
404 private:
405  typename tuple_type<A7>::reference m_x;
406 };
407 
408 
409 
410 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
411 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 0> : tuple_type<A0> {
413  typename tuple_type<A0>::reference get() { return m_x; }
414  typename tuple_type<A0>::const_reference get() const { return m_x; }
415 private:
416  typename tuple_type<A0>::reference m_x;
417 };
418 
419 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
420 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 1> : tuple_type<A1> {
422  typename tuple_type<A1>::reference get() { return m_x; }
423  typename tuple_type<A1>::const_reference get() const { return m_x; }
424 private:
425  typename tuple_type<A1>::reference m_x;
426 };
427 
428 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
429 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 2> : tuple_type<A2> {
431  typename tuple_type<A2>::reference get() { return m_x; }
432  typename tuple_type<A2>::const_reference get() const { return m_x; }
433 private:
434  typename tuple_type<A2>::reference m_x;
435 };
436 
437 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
438 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 3> : tuple_type<A3> {
440  typename tuple_type<A3>::reference get() { return m_x; }
441  typename tuple_type<A3>::const_reference get() const { return m_x; }
442 private:
443  typename tuple_type<A3>::reference m_x;
444 };
445 
446 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
447 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 4> : tuple_type<A4> {
449  typename tuple_type<A4>::reference get() { return m_x; }
450  typename tuple_type<A4>::const_reference get() const { return m_x; }
451 private:
452  typename tuple_type<A4>::reference m_x;
453 };
454 
455 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
456 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 5> : tuple_type<A5> {
458  typename tuple_type<A5>::reference get() { return m_x; }
459  typename tuple_type<A5>::const_reference get() const { return m_x; }
460 private:
461  typename tuple_type<A5>::reference m_x;
462 };
463 
464 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
465 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 6> : tuple_type<A6> {
467  typename tuple_type<A6>::reference get() { return m_x; }
468  typename tuple_type<A6>::const_reference get() const { return m_x; }
469 private:
470  typename tuple_type<A6>::reference m_x;
471 };
472 
473 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
474 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 7> : tuple_type<A7> {
476  typename tuple_type<A7>::reference get() { return m_x; }
477  typename tuple_type<A7>::const_reference get() const { return m_x; }
478 private:
479  typename tuple_type<A7>::reference m_x;
480 };
481 
482 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
483 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 8> : tuple_type<A8> {
485  typename tuple_type<A8>::reference get() { return m_x; }
486  typename tuple_type<A8>::const_reference get() const { return m_x; }
487 private:
488  typename tuple_type<A8>::reference m_x;
489 };
490 
491 
492 
493 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
494 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 0> : tuple_type<A0> {
496  typename tuple_type<A0>::reference get() { return m_x; }
497  typename tuple_type<A0>::const_reference get() const { return m_x; }
498 private:
499  typename tuple_type<A0>::reference m_x;
500 };
501 
502 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
503 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 1> : tuple_type<A1> {
505  typename tuple_type<A1>::reference get() { return m_x; }
506  typename tuple_type<A1>::const_reference get() const { return m_x; }
507 private:
508  typename tuple_type<A1>::reference m_x;
509 };
510 
511 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
512 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 2> : tuple_type<A2> {
514  typename tuple_type<A2>::reference get() { return m_x; }
515  typename tuple_type<A2>::const_reference get() const { return m_x; }
516 private:
517  typename tuple_type<A2>::reference m_x;
518 };
519 
520 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
521 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 3> : tuple_type<A3> {
523  typename tuple_type<A3>::reference get() { return m_x; }
524  typename tuple_type<A3>::const_reference get() const { return m_x; }
525 private:
526  typename tuple_type<A3>::reference m_x;
527 };
528 
529 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
530 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 4> : tuple_type<A4> {
532  typename tuple_type<A4>::reference get() { return m_x; }
533  typename tuple_type<A4>::const_reference get() const { return m_x; }
534 private:
535  typename tuple_type<A4>::reference m_x;
536 };
537 
538 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
539 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 5> : tuple_type<A5> {
541  typename tuple_type<A5>::reference get() { return m_x; }
542  typename tuple_type<A5>::const_reference get() const { return m_x; }
543 private:
544  typename tuple_type<A5>::reference m_x;
545 };
546 
547 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
548 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 6> : tuple_type<A6> {
550  typename tuple_type<A6>::reference get() { return m_x; }
551  typename tuple_type<A6>::const_reference get() const { return m_x; }
552 private:
553  typename tuple_type<A6>::reference m_x;
554 };
555 
556 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
557 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 7> : tuple_type<A7> {
559  typename tuple_type<A7>::reference get() { return m_x; }
560  typename tuple_type<A7>::const_reference get() const { return m_x; }
561 private:
562  typename tuple_type<A7>::reference m_x;
563 };
564 
565 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
566 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 8> : tuple_type<A8> {
568  typename tuple_type<A8>::reference get() { return m_x; }
569  typename tuple_type<A8>::const_reference get() const { return m_x; }
570 private:
571  typename tuple_type<A8>::reference m_x;
572 };
573 
574 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
575 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 9> : tuple_type<A9> {
577  typename tuple_type<A9>::reference get() { return m_x; }
578  typename tuple_type<A9>::const_reference get() const { return m_x; }
579 private:
580  typename tuple_type<A9>::reference m_x;
581 };
582 
583 
584 
585 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
586 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 0> : tuple_type<A0> {
588  typename tuple_type<A0>::reference get() { return m_x; }
589  typename tuple_type<A0>::const_reference get() const { return m_x; }
590 private:
591  typename tuple_type<A0>::reference m_x;
592 };
593 
594 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
595 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 1> : tuple_type<A1> {
597  typename tuple_type<A1>::reference get() { return m_x; }
598  typename tuple_type<A1>::const_reference get() const { return m_x; }
599 private:
600  typename tuple_type<A1>::reference m_x;
601 };
602 
603 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
604 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 2> : tuple_type<A2> {
606  typename tuple_type<A2>::reference get() { return m_x; }
607  typename tuple_type<A2>::const_reference get() const { return m_x; }
608 private:
609  typename tuple_type<A2>::reference m_x;
610 };
611 
612 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
613 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 3> : tuple_type<A3> {
615  typename tuple_type<A3>::reference get() { return m_x; }
616  typename tuple_type<A3>::const_reference get() const { return m_x; }
617 private:
618  typename tuple_type<A3>::reference m_x;
619 };
620 
621 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
622 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 4> : tuple_type<A4> {
624  typename tuple_type<A4>::reference get() { return m_x; }
625  typename tuple_type<A4>::const_reference get() const { return m_x; }
626 private:
627  typename tuple_type<A4>::reference m_x;
628 };
629 
630 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
631 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 5> : tuple_type<A5> {
633  typename tuple_type<A5>::reference get() { return m_x; }
634  typename tuple_type<A5>::const_reference get() const { return m_x; }
635 private:
636  typename tuple_type<A5>::reference m_x;
637 };
638 
639 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
640 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 6> : tuple_type<A6> {
642  typename tuple_type<A6>::reference get() { return m_x; }
643  typename tuple_type<A6>::const_reference get() const { return m_x; }
644 private:
645  typename tuple_type<A6>::reference m_x;
646 };
647 
648 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
649 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 7> : tuple_type<A7> {
651  typename tuple_type<A7>::reference get() { return m_x; }
652  typename tuple_type<A7>::const_reference get() const { return m_x; }
653 private:
654  typename tuple_type<A7>::reference m_x;
655 };
656 
657 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
658 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 8> : tuple_type<A8> {
660  typename tuple_type<A8>::reference get() { return m_x; }
661  typename tuple_type<A8>::const_reference get() const { return m_x; }
662 private:
663  typename tuple_type<A8>::reference m_x;
664 };
665 
666 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
667 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 9> : tuple_type<A9> {
669  typename tuple_type<A9>::reference get() { return m_x; }
670  typename tuple_type<A9>::const_reference get() const { return m_x; }
671 private:
672  typename tuple_type<A9>::reference m_x;
673 };
674 
675 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
676 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 10> : tuple_type<A10> {
678  typename tuple_type<A10>::reference get() { return m_x; }
679  typename tuple_type<A10>::const_reference get() const { return m_x; }
680 private:
681  typename tuple_type<A10>::reference m_x;
682 };
683 
684 
685 
686 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
687 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 0> : tuple_type<A0> {
689  typename tuple_type<A0>::reference get() { return m_x; }
690  typename tuple_type<A0>::const_reference get() const { return m_x; }
691 private:
692  typename tuple_type<A0>::reference m_x;
693 };
694 
695 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
696 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 1> : tuple_type<A1> {
698  typename tuple_type<A1>::reference get() { return m_x; }
699  typename tuple_type<A1>::const_reference get() const { return m_x; }
700 private:
701  typename tuple_type<A1>::reference m_x;
702 };
703 
704 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
705 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 2> : tuple_type<A2> {
707  typename tuple_type<A2>::reference get() { return m_x; }
708  typename tuple_type<A2>::const_reference get() const { return m_x; }
709 private:
710  typename tuple_type<A2>::reference m_x;
711 };
712 
713 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
714 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 3> : tuple_type<A3> {
716  typename tuple_type<A3>::reference get() { return m_x; }
717  typename tuple_type<A3>::const_reference get() const { return m_x; }
718 private:
719  typename tuple_type<A3>::reference m_x;
720 };
721 
722 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
723 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 4> : tuple_type<A4> {
725  typename tuple_type<A4>::reference get() { return m_x; }
726  typename tuple_type<A4>::const_reference get() const { return m_x; }
727 private:
728  typename tuple_type<A4>::reference m_x;
729 };
730 
731 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
732 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 5> : tuple_type<A5> {
734  typename tuple_type<A5>::reference get() { return m_x; }
735  typename tuple_type<A5>::const_reference get() const { return m_x; }
736 private:
737  typename tuple_type<A5>::reference m_x;
738 };
739 
740 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
741 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 6> : tuple_type<A6> {
743  typename tuple_type<A6>::reference get() { return m_x; }
744  typename tuple_type<A6>::const_reference get() const { return m_x; }
745 private:
746  typename tuple_type<A6>::reference m_x;
747 };
748 
749 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
750 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 7> : tuple_type<A7> {
752  typename tuple_type<A7>::reference get() { return m_x; }
753  typename tuple_type<A7>::const_reference get() const { return m_x; }
754 private:
755  typename tuple_type<A7>::reference m_x;
756 };
757 
758 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
759 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 8> : tuple_type<A8> {
761  typename tuple_type<A8>::reference get() { return m_x; }
762  typename tuple_type<A8>::const_reference get() const { return m_x; }
763 private:
764  typename tuple_type<A8>::reference m_x;
765 };
766 
767 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
768 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 9> : tuple_type<A9> {
770  typename tuple_type<A9>::reference get() { return m_x; }
771  typename tuple_type<A9>::const_reference get() const { return m_x; }
772 private:
773  typename tuple_type<A9>::reference m_x;
774 };
775 
776 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
777 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 10> : tuple_type<A10> {
779  typename tuple_type<A10>::reference get() { return m_x; }
780  typename tuple_type<A10>::const_reference get() const { return m_x; }
781 private:
782  typename tuple_type<A10>::reference m_x;
783 };
784 
785 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
786 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 11> : tuple_type<A11> {
788  typename tuple_type<A11>::reference get() { return m_x; }
789  typename tuple_type<A11>::const_reference get() const { return m_x; }
790 private:
791  typename tuple_type<A11>::reference m_x;
792 };
793 
794 
795 
796 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
797 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 0> : tuple_type<A0> {
799  typename tuple_type<A0>::reference get() { return m_x; }
800  typename tuple_type<A0>::const_reference get() const { return m_x; }
801 private:
802  typename tuple_type<A0>::reference m_x;
803 };
804 
805 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
806 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 1> : tuple_type<A1> {
808  typename tuple_type<A1>::reference get() { return m_x; }
809  typename tuple_type<A1>::const_reference get() const { return m_x; }
810 private:
811  typename tuple_type<A1>::reference m_x;
812 };
813 
814 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
815 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 2> : tuple_type<A2> {
817  typename tuple_type<A2>::reference get() { return m_x; }
818  typename tuple_type<A2>::const_reference get() const { return m_x; }
819 private:
820  typename tuple_type<A2>::reference m_x;
821 };
822 
823 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
824 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 3> : tuple_type<A3> {
826  typename tuple_type<A3>::reference get() { return m_x; }
827  typename tuple_type<A3>::const_reference get() const { return m_x; }
828 private:
829  typename tuple_type<A3>::reference m_x;
830 };
831 
832 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
833 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 4> : tuple_type<A4> {
835  typename tuple_type<A4>::reference get() { return m_x; }
836  typename tuple_type<A4>::const_reference get() const { return m_x; }
837 private:
838  typename tuple_type<A4>::reference m_x;
839 };
840 
841 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
842 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 5> : tuple_type<A5> {
844  typename tuple_type<A5>::reference get() { return m_x; }
845  typename tuple_type<A5>::const_reference get() const { return m_x; }
846 private:
847  typename tuple_type<A5>::reference m_x;
848 };
849 
850 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
851 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 6> : tuple_type<A6> {
853  typename tuple_type<A6>::reference get() { return m_x; }
854  typename tuple_type<A6>::const_reference get() const { return m_x; }
855 private:
856  typename tuple_type<A6>::reference m_x;
857 };
858 
859 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
860 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 7> : tuple_type<A7> {
862  typename tuple_type<A7>::reference get() { return m_x; }
863  typename tuple_type<A7>::const_reference get() const { return m_x; }
864 private:
865  typename tuple_type<A7>::reference m_x;
866 };
867 
868 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
869 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 8> : tuple_type<A8> {
871  typename tuple_type<A8>::reference get() { return m_x; }
872  typename tuple_type<A8>::const_reference get() const { return m_x; }
873 private:
874  typename tuple_type<A8>::reference m_x;
875 };
876 
877 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
878 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 9> : tuple_type<A9> {
880  typename tuple_type<A9>::reference get() { return m_x; }
881  typename tuple_type<A9>::const_reference get() const { return m_x; }
882 private:
883  typename tuple_type<A9>::reference m_x;
884 };
885 
886 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
887 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 10> : tuple_type<A10> {
889  typename tuple_type<A10>::reference get() { return m_x; }
890  typename tuple_type<A10>::const_reference get() const { return m_x; }
891 private:
892  typename tuple_type<A10>::reference m_x;
893 };
894 
895 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
896 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 11> : tuple_type<A11> {
898  typename tuple_type<A11>::reference get() { return m_x; }
899  typename tuple_type<A11>::const_reference get() const { return m_x; }
900 private:
901  typename tuple_type<A11>::reference m_x;
902 };
903 
904 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
905 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 12> : tuple_type<A12> {
907  typename tuple_type<A12>::reference get() { return m_x; }
908  typename tuple_type<A12>::const_reference get() const { return m_x; }
909 private:
910  typename tuple_type<A12>::reference m_x;
911 };
912 
913 
914 
915 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
916 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 0> : tuple_type<A0> {
918  typename tuple_type<A0>::reference get() { return m_x; }
919  typename tuple_type<A0>::const_reference get() const { return m_x; }
920 private:
921  typename tuple_type<A0>::reference m_x;
922 };
923 
924 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
925 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 1> : tuple_type<A1> {
927  typename tuple_type<A1>::reference get() { return m_x; }
928  typename tuple_type<A1>::const_reference get() const { return m_x; }
929 private:
930  typename tuple_type<A1>::reference m_x;
931 };
932 
933 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
934 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 2> : tuple_type<A2> {
936  typename tuple_type<A2>::reference get() { return m_x; }
937  typename tuple_type<A2>::const_reference get() const { return m_x; }
938 private:
939  typename tuple_type<A2>::reference m_x;
940 };
941 
942 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
943 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 3> : tuple_type<A3> {
945  typename tuple_type<A3>::reference get() { return m_x; }
946  typename tuple_type<A3>::const_reference get() const { return m_x; }
947 private:
948  typename tuple_type<A3>::reference m_x;
949 };
950 
951 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
952 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 4> : tuple_type<A4> {
954  typename tuple_type<A4>::reference get() { return m_x; }
955  typename tuple_type<A4>::const_reference get() const { return m_x; }
956 private:
957  typename tuple_type<A4>::reference m_x;
958 };
959 
960 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
961 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 5> : tuple_type<A5> {
963  typename tuple_type<A5>::reference get() { return m_x; }
964  typename tuple_type<A5>::const_reference get() const { return m_x; }
965 private:
966  typename tuple_type<A5>::reference m_x;
967 };
968 
969 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
970 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 6> : tuple_type<A6> {
972  typename tuple_type<A6>::reference get() { return m_x; }
973  typename tuple_type<A6>::const_reference get() const { return m_x; }
974 private:
975  typename tuple_type<A6>::reference m_x;
976 };
977 
978 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
979 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 7> : tuple_type<A7> {
981  typename tuple_type<A7>::reference get() { return m_x; }
982  typename tuple_type<A7>::const_reference get() const { return m_x; }
983 private:
984  typename tuple_type<A7>::reference m_x;
985 };
986 
987 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
988 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 8> : tuple_type<A8> {
990  typename tuple_type<A8>::reference get() { return m_x; }
991  typename tuple_type<A8>::const_reference get() const { return m_x; }
992 private:
993  typename tuple_type<A8>::reference m_x;
994 };
995 
996 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
997 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 9> : tuple_type<A9> {
999  typename tuple_type<A9>::reference get() { return m_x; }
1000  typename tuple_type<A9>::const_reference get() const { return m_x; }
1001 private:
1002  typename tuple_type<A9>::reference m_x;
1003 };
1004 
1005 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
1006 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 10> : tuple_type<A10> {
1008  typename tuple_type<A10>::reference get() { return m_x; }
1009  typename tuple_type<A10>::const_reference get() const { return m_x; }
1010 private:
1011  typename tuple_type<A10>::reference m_x;
1012 };
1013 
1014 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
1015 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 11> : tuple_type<A11> {
1017  typename tuple_type<A11>::reference get() { return m_x; }
1018  typename tuple_type<A11>::const_reference get() const { return m_x; }
1019 private:
1020  typename tuple_type<A11>::reference m_x;
1021 };
1022 
1023 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
1024 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 12> : tuple_type<A12> {
1026  typename tuple_type<A12>::reference get() { return m_x; }
1027  typename tuple_type<A12>::const_reference get() const { return m_x; }
1028 private:
1029  typename tuple_type<A12>::reference m_x;
1030 };
1031 
1032 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
1033 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 13> : tuple_type<A13> {
1035  typename tuple_type<A13>::reference get() { return m_x; }
1036  typename tuple_type<A13>::const_reference get() const { return m_x; }
1037 private:
1038  typename tuple_type<A13>::reference m_x;
1039 };
1040 
1041 
1042 
1043 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1044 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 0> : tuple_type<A0> {
1046  typename tuple_type<A0>::reference get() { return m_x; }
1047  typename tuple_type<A0>::const_reference get() const { return m_x; }
1048 private:
1049  typename tuple_type<A0>::reference m_x;
1050 };
1051 
1052 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1053 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 1> : tuple_type<A1> {
1055  typename tuple_type<A1>::reference get() { return m_x; }
1056  typename tuple_type<A1>::const_reference get() const { return m_x; }
1057 private:
1058  typename tuple_type<A1>::reference m_x;
1059 };
1060 
1061 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1062 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 2> : tuple_type<A2> {
1064  typename tuple_type<A2>::reference get() { return m_x; }
1065  typename tuple_type<A2>::const_reference get() const { return m_x; }
1066 private:
1067  typename tuple_type<A2>::reference m_x;
1068 };
1069 
1070 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1071 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 3> : tuple_type<A3> {
1073  typename tuple_type<A3>::reference get() { return m_x; }
1074  typename tuple_type<A3>::const_reference get() const { return m_x; }
1075 private:
1076  typename tuple_type<A3>::reference m_x;
1077 };
1078 
1079 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1080 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 4> : tuple_type<A4> {
1082  typename tuple_type<A4>::reference get() { return m_x; }
1083  typename tuple_type<A4>::const_reference get() const { return m_x; }
1084 private:
1085  typename tuple_type<A4>::reference m_x;
1086 };
1087 
1088 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1089 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 5> : tuple_type<A5> {
1091  typename tuple_type<A5>::reference get() { return m_x; }
1092  typename tuple_type<A5>::const_reference get() const { return m_x; }
1093 private:
1094  typename tuple_type<A5>::reference m_x;
1095 };
1096 
1097 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1098 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 6> : tuple_type<A6> {
1100  typename tuple_type<A6>::reference get() { return m_x; }
1101  typename tuple_type<A6>::const_reference get() const { return m_x; }
1102 private:
1103  typename tuple_type<A6>::reference m_x;
1104 };
1105 
1106 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1107 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 7> : tuple_type<A7> {
1109  typename tuple_type<A7>::reference get() { return m_x; }
1110  typename tuple_type<A7>::const_reference get() const { return m_x; }
1111 private:
1112  typename tuple_type<A7>::reference m_x;
1113 };
1114 
1115 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1116 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 8> : tuple_type<A8> {
1118  typename tuple_type<A8>::reference get() { return m_x; }
1119  typename tuple_type<A8>::const_reference get() const { return m_x; }
1120 private:
1121  typename tuple_type<A8>::reference m_x;
1122 };
1123 
1124 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1125 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 9> : tuple_type<A9> {
1127  typename tuple_type<A9>::reference get() { return m_x; }
1128  typename tuple_type<A9>::const_reference get() const { return m_x; }
1129 private:
1130  typename tuple_type<A9>::reference m_x;
1131 };
1132 
1133 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1134 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 10> : tuple_type<A10> {
1136  typename tuple_type<A10>::reference get() { return m_x; }
1137  typename tuple_type<A10>::const_reference get() const { return m_x; }
1138 private:
1139  typename tuple_type<A10>::reference m_x;
1140 };
1141 
1142 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1143 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 11> : tuple_type<A11> {
1145  typename tuple_type<A11>::reference get() { return m_x; }
1146  typename tuple_type<A11>::const_reference get() const { return m_x; }
1147 private:
1148  typename tuple_type<A11>::reference m_x;
1149 };
1150 
1151 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1152 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 12> : tuple_type<A12> {
1154  typename tuple_type<A12>::reference get() { return m_x; }
1155  typename tuple_type<A12>::const_reference get() const { return m_x; }
1156 private:
1157  typename tuple_type<A12>::reference m_x;
1158 };
1159 
1160 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1161 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 13> : tuple_type<A13> {
1163  typename tuple_type<A13>::reference get() { return m_x; }
1164  typename tuple_type<A13>::const_reference get() const { return m_x; }
1165 private:
1166  typename tuple_type<A13>::reference m_x;
1167 };
1168 
1169 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1170 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 14> : tuple_type<A14> {
1172  typename tuple_type<A14>::reference get() { return m_x; }
1173  typename tuple_type<A14>::const_reference get() const { return m_x; }
1174 private:
1175  typename tuple_type<A14>::reference m_x;
1176 };
1177 
1178 
1179 
1180 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1181 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 0> : tuple_type<A0> {
1183  typename tuple_type<A0>::reference get() { return m_x; }
1184  typename tuple_type<A0>::const_reference get() const { return m_x; }
1185 private:
1186  typename tuple_type<A0>::reference m_x;
1187 };
1188 
1189 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1190 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 1> : tuple_type<A1> {
1192  typename tuple_type<A1>::reference get() { return m_x; }
1193  typename tuple_type<A1>::const_reference get() const { return m_x; }
1194 private:
1195  typename tuple_type<A1>::reference m_x;
1196 };
1197 
1198 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1199 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 2> : tuple_type<A2> {
1201  typename tuple_type<A2>::reference get() { return m_x; }
1202  typename tuple_type<A2>::const_reference get() const { return m_x; }
1203 private:
1204  typename tuple_type<A2>::reference m_x;
1205 };
1206 
1207 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1208 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 3> : tuple_type<A3> {
1210  typename tuple_type<A3>::reference get() { return m_x; }
1211  typename tuple_type<A3>::const_reference get() const { return m_x; }
1212 private:
1213  typename tuple_type<A3>::reference m_x;
1214 };
1215 
1216 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1217 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 4> : tuple_type<A4> {
1219  typename tuple_type<A4>::reference get() { return m_x; }
1220  typename tuple_type<A4>::const_reference get() const { return m_x; }
1221 private:
1222  typename tuple_type<A4>::reference m_x;
1223 };
1224 
1225 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1226 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 5> : tuple_type<A5> {
1228  typename tuple_type<A5>::reference get() { return m_x; }
1229  typename tuple_type<A5>::const_reference get() const { return m_x; }
1230 private:
1231  typename tuple_type<A5>::reference m_x;
1232 };
1233 
1234 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1235 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 6> : tuple_type<A6> {
1237  typename tuple_type<A6>::reference get() { return m_x; }
1238  typename tuple_type<A6>::const_reference get() const { return m_x; }
1239 private:
1240  typename tuple_type<A6>::reference m_x;
1241 };
1242 
1243 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1244 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 7> : tuple_type<A7> {
1246  typename tuple_type<A7>::reference get() { return m_x; }
1247  typename tuple_type<A7>::const_reference get() const { return m_x; }
1248 private:
1249  typename tuple_type<A7>::reference m_x;
1250 };
1251 
1252 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1253 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 8> : tuple_type<A8> {
1255  typename tuple_type<A8>::reference get() { return m_x; }
1256  typename tuple_type<A8>::const_reference get() const { return m_x; }
1257 private:
1258  typename tuple_type<A8>::reference m_x;
1259 };
1260 
1261 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1262 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 9> : tuple_type<A9> {
1264  typename tuple_type<A9>::reference get() { return m_x; }
1265  typename tuple_type<A9>::const_reference get() const { return m_x; }
1266 private:
1267  typename tuple_type<A9>::reference m_x;
1268 };
1269 
1270 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1271 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 10> : tuple_type<A10> {
1273  typename tuple_type<A10>::reference get() { return m_x; }
1274  typename tuple_type<A10>::const_reference get() const { return m_x; }
1275 private:
1276  typename tuple_type<A10>::reference m_x;
1277 };
1278 
1279 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1280 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 11> : tuple_type<A11> {
1282  typename tuple_type<A11>::reference get() { return m_x; }
1283  typename tuple_type<A11>::const_reference get() const { return m_x; }
1284 private:
1285  typename tuple_type<A11>::reference m_x;
1286 };
1287 
1288 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1289 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 12> : tuple_type<A12> {
1291  typename tuple_type<A12>::reference get() { return m_x; }
1292  typename tuple_type<A12>::const_reference get() const { return m_x; }
1293 private:
1294  typename tuple_type<A12>::reference m_x;
1295 };
1296 
1297 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1298 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 13> : tuple_type<A13> {
1300  typename tuple_type<A13>::reference get() { return m_x; }
1301  typename tuple_type<A13>::const_reference get() const { return m_x; }
1302 private:
1303  typename tuple_type<A13>::reference m_x;
1304 };
1305 
1306 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1307 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 14> : tuple_type<A14> {
1309  typename tuple_type<A14>::reference get() { return m_x; }
1310  typename tuple_type<A14>::const_reference get() const { return m_x; }
1311 private:
1312  typename tuple_type<A14>::reference m_x;
1313 };
1314 
1315 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1316 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 15> : tuple_type<A15> {
1318  typename tuple_type<A15>::reference get() { return m_x; }
1319  typename tuple_type<A15>::const_reference get() const { return m_x; }
1320 private:
1321  typename tuple_type<A15>::reference m_x;
1322 };
1323 
1324 
1325 
1326 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1327 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 0> : tuple_type<A0> {
1329  typename tuple_type<A0>::reference get() { return m_x; }
1330  typename tuple_type<A0>::const_reference get() const { return m_x; }
1331 private:
1332  typename tuple_type<A0>::reference m_x;
1333 };
1334 
1335 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1336 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 1> : tuple_type<A1> {
1338  typename tuple_type<A1>::reference get() { return m_x; }
1339  typename tuple_type<A1>::const_reference get() const { return m_x; }
1340 private:
1341  typename tuple_type<A1>::reference m_x;
1342 };
1343 
1344 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1345 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 2> : tuple_type<A2> {
1347  typename tuple_type<A2>::reference get() { return m_x; }
1348  typename tuple_type<A2>::const_reference get() const { return m_x; }
1349 private:
1350  typename tuple_type<A2>::reference m_x;
1351 };
1352 
1353 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1354 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 3> : tuple_type<A3> {
1356  typename tuple_type<A3>::reference get() { return m_x; }
1357  typename tuple_type<A3>::const_reference get() const { return m_x; }
1358 private:
1359  typename tuple_type<A3>::reference m_x;
1360 };
1361 
1362 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1363 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 4> : tuple_type<A4> {
1365  typename tuple_type<A4>::reference get() { return m_x; }
1366  typename tuple_type<A4>::const_reference get() const { return m_x; }
1367 private:
1368  typename tuple_type<A4>::reference m_x;
1369 };
1370 
1371 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1372 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 5> : tuple_type<A5> {
1374  typename tuple_type<A5>::reference get() { return m_x; }
1375  typename tuple_type<A5>::const_reference get() const { return m_x; }
1376 private:
1377  typename tuple_type<A5>::reference m_x;
1378 };
1379 
1380 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1381 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 6> : tuple_type<A6> {
1383  typename tuple_type<A6>::reference get() { return m_x; }
1384  typename tuple_type<A6>::const_reference get() const { return m_x; }
1385 private:
1386  typename tuple_type<A6>::reference m_x;
1387 };
1388 
1389 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1390 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 7> : tuple_type<A7> {
1392  typename tuple_type<A7>::reference get() { return m_x; }
1393  typename tuple_type<A7>::const_reference get() const { return m_x; }
1394 private:
1395  typename tuple_type<A7>::reference m_x;
1396 };
1397 
1398 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1399 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 8> : tuple_type<A8> {
1401  typename tuple_type<A8>::reference get() { return m_x; }
1402  typename tuple_type<A8>::const_reference get() const { return m_x; }
1403 private:
1404  typename tuple_type<A8>::reference m_x;
1405 };
1406 
1407 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1408 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 9> : tuple_type<A9> {
1410  typename tuple_type<A9>::reference get() { return m_x; }
1411  typename tuple_type<A9>::const_reference get() const { return m_x; }
1412 private:
1413  typename tuple_type<A9>::reference m_x;
1414 };
1415 
1416 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1417 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 10> : tuple_type<A10> {
1419  typename tuple_type<A10>::reference get() { return m_x; }
1420  typename tuple_type<A10>::const_reference get() const { return m_x; }
1421 private:
1422  typename tuple_type<A10>::reference m_x;
1423 };
1424 
1425 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1426 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 11> : tuple_type<A11> {
1428  typename tuple_type<A11>::reference get() { return m_x; }
1429  typename tuple_type<A11>::const_reference get() const { return m_x; }
1430 private:
1431  typename tuple_type<A11>::reference m_x;
1432 };
1433 
1434 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1435 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 12> : tuple_type<A12> {
1437  typename tuple_type<A12>::reference get() { return m_x; }
1438  typename tuple_type<A12>::const_reference get() const { return m_x; }
1439 private:
1440  typename tuple_type<A12>::reference m_x;
1441 };
1442 
1443 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1444 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 13> : tuple_type<A13> {
1446  typename tuple_type<A13>::reference get() { return m_x; }
1447  typename tuple_type<A13>::const_reference get() const { return m_x; }
1448 private:
1449  typename tuple_type<A13>::reference m_x;
1450 };
1451 
1452 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1453 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 14> : tuple_type<A14> {
1455  typename tuple_type<A14>::reference get() { return m_x; }
1456  typename tuple_type<A14>::const_reference get() const { return m_x; }
1457 private:
1458  typename tuple_type<A14>::reference m_x;
1459 };
1460 
1461 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1462 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 15> : tuple_type<A15> {
1464  typename tuple_type<A15>::reference get() { return m_x; }
1465  typename tuple_type<A15>::const_reference get() const { return m_x; }
1466 private:
1467  typename tuple_type<A15>::reference m_x;
1468 };
1469 
1470 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1471 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 16> : tuple_type<A16> {
1473  typename tuple_type<A16>::reference get() { return m_x; }
1474  typename tuple_type<A16>::const_reference get() const { return m_x; }
1475 private:
1476  typename tuple_type<A16>::reference m_x;
1477 };
1478 
1479 
1480 
1481 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1482 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 0> : tuple_type<A0> {
1484  typename tuple_type<A0>::reference get() { return m_x; }
1485  typename tuple_type<A0>::const_reference get() const { return m_x; }
1486 private:
1487  typename tuple_type<A0>::reference m_x;
1488 };
1489 
1490 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1491 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 1> : tuple_type<A1> {
1493  typename tuple_type<A1>::reference get() { return m_x; }
1494  typename tuple_type<A1>::const_reference get() const { return m_x; }
1495 private:
1496  typename tuple_type<A1>::reference m_x;
1497 };
1498 
1499 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1500 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 2> : tuple_type<A2> {
1502  typename tuple_type<A2>::reference get() { return m_x; }
1503  typename tuple_type<A2>::const_reference get() const { return m_x; }
1504 private:
1505  typename tuple_type<A2>::reference m_x;
1506 };
1507 
1508 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1509 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 3> : tuple_type<A3> {
1511  typename tuple_type<A3>::reference get() { return m_x; }
1512  typename tuple_type<A3>::const_reference get() const { return m_x; }
1513 private:
1514  typename tuple_type<A3>::reference m_x;
1515 };
1516 
1517 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1518 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 4> : tuple_type<A4> {
1520  typename tuple_type<A4>::reference get() { return m_x; }
1521  typename tuple_type<A4>::const_reference get() const { return m_x; }
1522 private:
1523  typename tuple_type<A4>::reference m_x;
1524 };
1525 
1526 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1527 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 5> : tuple_type<A5> {
1529  typename tuple_type<A5>::reference get() { return m_x; }
1530  typename tuple_type<A5>::const_reference get() const { return m_x; }
1531 private:
1532  typename tuple_type<A5>::reference m_x;
1533 };
1534 
1535 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1536 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 6> : tuple_type<A6> {
1538  typename tuple_type<A6>::reference get() { return m_x; }
1539  typename tuple_type<A6>::const_reference get() const { return m_x; }
1540 private:
1541  typename tuple_type<A6>::reference m_x;
1542 };
1543 
1544 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1545 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 7> : tuple_type<A7> {
1547  typename tuple_type<A7>::reference get() { return m_x; }
1548  typename tuple_type<A7>::const_reference get() const { return m_x; }
1549 private:
1550  typename tuple_type<A7>::reference m_x;
1551 };
1552 
1553 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1554 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 8> : tuple_type<A8> {
1556  typename tuple_type<A8>::reference get() { return m_x; }
1557  typename tuple_type<A8>::const_reference get() const { return m_x; }
1558 private:
1559  typename tuple_type<A8>::reference m_x;
1560 };
1561 
1562 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1563 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 9> : tuple_type<A9> {
1565  typename tuple_type<A9>::reference get() { return m_x; }
1566  typename tuple_type<A9>::const_reference get() const { return m_x; }
1567 private:
1568  typename tuple_type<A9>::reference m_x;
1569 };
1570 
1571 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1572 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 10> : tuple_type<A10> {
1574  typename tuple_type<A10>::reference get() { return m_x; }
1575  typename tuple_type<A10>::const_reference get() const { return m_x; }
1576 private:
1577  typename tuple_type<A10>::reference m_x;
1578 };
1579 
1580 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1581 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 11> : tuple_type<A11> {
1583  typename tuple_type<A11>::reference get() { return m_x; }
1584  typename tuple_type<A11>::const_reference get() const { return m_x; }
1585 private:
1586  typename tuple_type<A11>::reference m_x;
1587 };
1588 
1589 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1590 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 12> : tuple_type<A12> {
1592  typename tuple_type<A12>::reference get() { return m_x; }
1593  typename tuple_type<A12>::const_reference get() const { return m_x; }
1594 private:
1595  typename tuple_type<A12>::reference m_x;
1596 };
1597 
1598 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1599 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 13> : tuple_type<A13> {
1601  typename tuple_type<A13>::reference get() { return m_x; }
1602  typename tuple_type<A13>::const_reference get() const { return m_x; }
1603 private:
1604  typename tuple_type<A13>::reference m_x;
1605 };
1606 
1607 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1608 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 14> : tuple_type<A14> {
1610  typename tuple_type<A14>::reference get() { return m_x; }
1611  typename tuple_type<A14>::const_reference get() const { return m_x; }
1612 private:
1613  typename tuple_type<A14>::reference m_x;
1614 };
1615 
1616 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1617 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 15> : tuple_type<A15> {
1619  typename tuple_type<A15>::reference get() { return m_x; }
1620  typename tuple_type<A15>::const_reference get() const { return m_x; }
1621 private:
1622  typename tuple_type<A15>::reference m_x;
1623 };
1624 
1625 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1626 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 16> : tuple_type<A16> {
1628  typename tuple_type<A16>::reference get() { return m_x; }
1629  typename tuple_type<A16>::const_reference get() const { return m_x; }
1630 private:
1631  typename tuple_type<A16>::reference m_x;
1632 };
1633 
1634 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1635 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 17> : tuple_type<A17> {
1637  typename tuple_type<A17>::reference get() { return m_x; }
1638  typename tuple_type<A17>::const_reference get() const { return m_x; }
1639 private:
1640  typename tuple_type<A17>::reference m_x;
1641 };
1642 
1643 
1644 
1645 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1646 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 0> : tuple_type<A0> {
1648  typename tuple_type<A0>::reference get() { return m_x; }
1649  typename tuple_type<A0>::const_reference get() const { return m_x; }
1650 private:
1651  typename tuple_type<A0>::reference m_x;
1652 };
1653 
1654 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1655 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 1> : tuple_type<A1> {
1657  typename tuple_type<A1>::reference get() { return m_x; }
1658  typename tuple_type<A1>::const_reference get() const { return m_x; }
1659 private:
1660  typename tuple_type<A1>::reference m_x;
1661 };
1662 
1663 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1664 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 2> : tuple_type<A2> {
1666  typename tuple_type<A2>::reference get() { return m_x; }
1667  typename tuple_type<A2>::const_reference get() const { return m_x; }
1668 private:
1669  typename tuple_type<A2>::reference m_x;
1670 };
1671 
1672 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1673 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 3> : tuple_type<A3> {
1675  typename tuple_type<A3>::reference get() { return m_x; }
1676  typename tuple_type<A3>::const_reference get() const { return m_x; }
1677 private:
1678  typename tuple_type<A3>::reference m_x;
1679 };
1680 
1681 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1682 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 4> : tuple_type<A4> {
1684  typename tuple_type<A4>::reference get() { return m_x; }
1685  typename tuple_type<A4>::const_reference get() const { return m_x; }
1686 private:
1687  typename tuple_type<A4>::reference m_x;
1688 };
1689 
1690 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1691 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 5> : tuple_type<A5> {
1693  typename tuple_type<A5>::reference get() { return m_x; }
1694  typename tuple_type<A5>::const_reference get() const { return m_x; }
1695 private:
1696  typename tuple_type<A5>::reference m_x;
1697 };
1698 
1699 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1700 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 6> : tuple_type<A6> {
1702  typename tuple_type<A6>::reference get() { return m_x; }
1703  typename tuple_type<A6>::const_reference get() const { return m_x; }
1704 private:
1705  typename tuple_type<A6>::reference m_x;
1706 };
1707 
1708 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1709 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 7> : tuple_type<A7> {
1711  typename tuple_type<A7>::reference get() { return m_x; }
1712  typename tuple_type<A7>::const_reference get() const { return m_x; }
1713 private:
1714  typename tuple_type<A7>::reference m_x;
1715 };
1716 
1717 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1718 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 8> : tuple_type<A8> {
1720  typename tuple_type<A8>::reference get() { return m_x; }
1721  typename tuple_type<A8>::const_reference get() const { return m_x; }
1722 private:
1723  typename tuple_type<A8>::reference m_x;
1724 };
1725 
1726 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1727 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 9> : tuple_type<A9> {
1729  typename tuple_type<A9>::reference get() { return m_x; }
1730  typename tuple_type<A9>::const_reference get() const { return m_x; }
1731 private:
1732  typename tuple_type<A9>::reference m_x;
1733 };
1734 
1735 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1736 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 10> : tuple_type<A10> {
1738  typename tuple_type<A10>::reference get() { return m_x; }
1739  typename tuple_type<A10>::const_reference get() const { return m_x; }
1740 private:
1741  typename tuple_type<A10>::reference m_x;
1742 };
1743 
1744 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1745 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 11> : tuple_type<A11> {
1747  typename tuple_type<A11>::reference get() { return m_x; }
1748  typename tuple_type<A11>::const_reference get() const { return m_x; }
1749 private:
1750  typename tuple_type<A11>::reference m_x;
1751 };
1752 
1753 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1754 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 12> : tuple_type<A12> {
1756  typename tuple_type<A12>::reference get() { return m_x; }
1757  typename tuple_type<A12>::const_reference get() const { return m_x; }
1758 private:
1759  typename tuple_type<A12>::reference m_x;
1760 };
1761 
1762 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1763 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 13> : tuple_type<A13> {
1765  typename tuple_type<A13>::reference get() { return m_x; }
1766  typename tuple_type<A13>::const_reference get() const { return m_x; }
1767 private:
1768  typename tuple_type<A13>::reference m_x;
1769 };
1770 
1771 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1772 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 14> : tuple_type<A14> {
1774  typename tuple_type<A14>::reference get() { return m_x; }
1775  typename tuple_type<A14>::const_reference get() const { return m_x; }
1776 private:
1777  typename tuple_type<A14>::reference m_x;
1778 };
1779 
1780 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1781 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 15> : tuple_type<A15> {
1783  typename tuple_type<A15>::reference get() { return m_x; }
1784  typename tuple_type<A15>::const_reference get() const { return m_x; }
1785 private:
1786  typename tuple_type<A15>::reference m_x;
1787 };
1788 
1789 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1790 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 16> : tuple_type<A16> {
1792  typename tuple_type<A16>::reference get() { return m_x; }
1793  typename tuple_type<A16>::const_reference get() const { return m_x; }
1794 private:
1795  typename tuple_type<A16>::reference m_x;
1796 };
1797 
1798 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1799 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 17> : tuple_type<A17> {
1801  typename tuple_type<A17>::reference get() { return m_x; }
1802  typename tuple_type<A17>::const_reference get() const { return m_x; }
1803 private:
1804  typename tuple_type<A17>::reference m_x;
1805 };
1806 
1807 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1808 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 18> : tuple_type<A18> {
1810  typename tuple_type<A18>::reference get() { return m_x; }
1811  typename tuple_type<A18>::const_reference get() const { return m_x; }
1812 private:
1813  typename tuple_type<A18>::reference m_x;
1814 };
1815 
1816 
1817 
1818 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1819 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 0> : tuple_type<A0> {
1821  typename tuple_type<A0>::reference get() { return m_x; }
1822  typename tuple_type<A0>::const_reference get() const { return m_x; }
1823 private:
1824  typename tuple_type<A0>::reference m_x;
1825 };
1826 
1827 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1828 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 1> : tuple_type<A1> {
1830  typename tuple_type<A1>::reference get() { return m_x; }
1831  typename tuple_type<A1>::const_reference get() const { return m_x; }
1832 private:
1833  typename tuple_type<A1>::reference m_x;
1834 };
1835 
1836 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1837 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 2> : tuple_type<A2> {
1839  typename tuple_type<A2>::reference get() { return m_x; }
1840  typename tuple_type<A2>::const_reference get() const { return m_x; }
1841 private:
1842  typename tuple_type<A2>::reference m_x;
1843 };
1844 
1845 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1846 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 3> : tuple_type<A3> {
1848  typename tuple_type<A3>::reference get() { return m_x; }
1849  typename tuple_type<A3>::const_reference get() const { return m_x; }
1850 private:
1851  typename tuple_type<A3>::reference m_x;
1852 };
1853 
1854 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1855 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 4> : tuple_type<A4> {
1857  typename tuple_type<A4>::reference get() { return m_x; }
1858  typename tuple_type<A4>::const_reference get() const { return m_x; }
1859 private:
1860  typename tuple_type<A4>::reference m_x;
1861 };
1862 
1863 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1864 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 5> : tuple_type<A5> {
1866  typename tuple_type<A5>::reference get() { return m_x; }
1867  typename tuple_type<A5>::const_reference get() const { return m_x; }
1868 private:
1869  typename tuple_type<A5>::reference m_x;
1870 };
1871 
1872 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1873 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 6> : tuple_type<A6> {
1875  typename tuple_type<A6>::reference get() { return m_x; }
1876  typename tuple_type<A6>::const_reference get() const { return m_x; }
1877 private:
1878  typename tuple_type<A6>::reference m_x;
1879 };
1880 
1881 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1882 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 7> : tuple_type<A7> {
1884  typename tuple_type<A7>::reference get() { return m_x; }
1885  typename tuple_type<A7>::const_reference get() const { return m_x; }
1886 private:
1887  typename tuple_type<A7>::reference m_x;
1888 };
1889 
1890 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1891 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 8> : tuple_type<A8> {
1893  typename tuple_type<A8>::reference get() { return m_x; }
1894  typename tuple_type<A8>::const_reference get() const { return m_x; }
1895 private:
1896  typename tuple_type<A8>::reference m_x;
1897 };
1898 
1899 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1900 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 9> : tuple_type<A9> {
1902  typename tuple_type<A9>::reference get() { return m_x; }
1903  typename tuple_type<A9>::const_reference get() const { return m_x; }
1904 private:
1905  typename tuple_type<A9>::reference m_x;
1906 };
1907 
1908 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1909 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 10> : tuple_type<A10> {
1911  typename tuple_type<A10>::reference get() { return m_x; }
1912  typename tuple_type<A10>::const_reference get() const { return m_x; }
1913 private:
1914  typename tuple_type<A10>::reference m_x;
1915 };
1916 
1917 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1918 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 11> : tuple_type<A11> {
1920  typename tuple_type<A11>::reference get() { return m_x; }
1921  typename tuple_type<A11>::const_reference get() const { return m_x; }
1922 private:
1923  typename tuple_type<A11>::reference m_x;
1924 };
1925 
1926 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1927 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 12> : tuple_type<A12> {
1929  typename tuple_type<A12>::reference get() { return m_x; }
1930  typename tuple_type<A12>::const_reference get() const { return m_x; }
1931 private:
1932  typename tuple_type<A12>::reference m_x;
1933 };
1934 
1935 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1936 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 13> : tuple_type<A13> {
1938  typename tuple_type<A13>::reference get() { return m_x; }
1939  typename tuple_type<A13>::const_reference get() const { return m_x; }
1940 private:
1941  typename tuple_type<A13>::reference m_x;
1942 };
1943 
1944 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1945 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 14> : tuple_type<A14> {
1947  typename tuple_type<A14>::reference get() { return m_x; }
1948  typename tuple_type<A14>::const_reference get() const { return m_x; }
1949 private:
1950  typename tuple_type<A14>::reference m_x;
1951 };
1952 
1953 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1954 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 15> : tuple_type<A15> {
1956  typename tuple_type<A15>::reference get() { return m_x; }
1957  typename tuple_type<A15>::const_reference get() const { return m_x; }
1958 private:
1959  typename tuple_type<A15>::reference m_x;
1960 };
1961 
1962 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1963 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 16> : tuple_type<A16> {
1965  typename tuple_type<A16>::reference get() { return m_x; }
1966  typename tuple_type<A16>::const_reference get() const { return m_x; }
1967 private:
1968  typename tuple_type<A16>::reference m_x;
1969 };
1970 
1971 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1972 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 17> : tuple_type<A17> {
1974  typename tuple_type<A17>::reference get() { return m_x; }
1975  typename tuple_type<A17>::const_reference get() const { return m_x; }
1976 private:
1977  typename tuple_type<A17>::reference m_x;
1978 };
1979 
1980 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1981 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 18> : tuple_type<A18> {
1983  typename tuple_type<A18>::reference get() { return m_x; }
1984  typename tuple_type<A18>::const_reference get() const { return m_x; }
1985 private:
1986  typename tuple_type<A18>::reference m_x;
1987 };
1988 
1989 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1990 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 19> : tuple_type<A19> {
1992  typename tuple_type<A19>::reference get() { return m_x; }
1993  typename tuple_type<A19>::const_reference get() const { return m_x; }
1994 private:
1995  typename tuple_type<A19>::reference m_x;
1996 };
1997 
1998 
1999 
2000 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2001 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 0> : tuple_type<A0> {
2003  typename tuple_type<A0>::reference get() { return m_x; }
2004  typename tuple_type<A0>::const_reference get() const { return m_x; }
2005 private:
2006  typename tuple_type<A0>::reference m_x;
2007 };
2008 
2009 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2010 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 1> : tuple_type<A1> {
2012  typename tuple_type<A1>::reference get() { return m_x; }
2013  typename tuple_type<A1>::const_reference get() const { return m_x; }
2014 private:
2015  typename tuple_type<A1>::reference m_x;
2016 };
2017 
2018 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2019 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 2> : tuple_type<A2> {
2021  typename tuple_type<A2>::reference get() { return m_x; }
2022  typename tuple_type<A2>::const_reference get() const { return m_x; }
2023 private:
2024  typename tuple_type<A2>::reference m_x;
2025 };
2026 
2027 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2028 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 3> : tuple_type<A3> {
2030  typename tuple_type<A3>::reference get() { return m_x; }
2031  typename tuple_type<A3>::const_reference get() const { return m_x; }
2032 private:
2033  typename tuple_type<A3>::reference m_x;
2034 };
2035 
2036 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2037 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 4> : tuple_type<A4> {
2039  typename tuple_type<A4>::reference get() { return m_x; }
2040  typename tuple_type<A4>::const_reference get() const { return m_x; }
2041 private:
2042  typename tuple_type<A4>::reference m_x;
2043 };
2044 
2045 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2046 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 5> : tuple_type<A5> {
2048  typename tuple_type<A5>::reference get() { return m_x; }
2049  typename tuple_type<A5>::const_reference get() const { return m_x; }
2050 private:
2051  typename tuple_type<A5>::reference m_x;
2052 };
2053 
2054 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2055 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 6> : tuple_type<A6> {
2057  typename tuple_type<A6>::reference get() { return m_x; }
2058  typename tuple_type<A6>::const_reference get() const { return m_x; }
2059 private:
2060  typename tuple_type<A6>::reference m_x;
2061 };
2062 
2063 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2064 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 7> : tuple_type<A7> {
2066  typename tuple_type<A7>::reference get() { return m_x; }
2067  typename tuple_type<A7>::const_reference get() const { return m_x; }
2068 private:
2069  typename tuple_type<A7>::reference m_x;
2070 };
2071 
2072 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2073 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 8> : tuple_type<A8> {
2075  typename tuple_type<A8>::reference get() { return m_x; }
2076  typename tuple_type<A8>::const_reference get() const { return m_x; }
2077 private:
2078  typename tuple_type<A8>::reference m_x;
2079 };
2080 
2081 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2082 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 9> : tuple_type<A9> {
2084  typename tuple_type<A9>::reference get() { return m_x; }
2085  typename tuple_type<A9>::const_reference get() const { return m_x; }
2086 private:
2087  typename tuple_type<A9>::reference m_x;
2088 };
2089 
2090 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2091 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 10> : tuple_type<A10> {
2093  typename tuple_type<A10>::reference get() { return m_x; }
2094  typename tuple_type<A10>::const_reference get() const { return m_x; }
2095 private:
2096  typename tuple_type<A10>::reference m_x;
2097 };
2098 
2099 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2100 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 11> : tuple_type<A11> {
2102  typename tuple_type<A11>::reference get() { return m_x; }
2103  typename tuple_type<A11>::const_reference get() const { return m_x; }
2104 private:
2105  typename tuple_type<A11>::reference m_x;
2106 };
2107 
2108 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2109 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 12> : tuple_type<A12> {
2111  typename tuple_type<A12>::reference get() { return m_x; }
2112  typename tuple_type<A12>::const_reference get() const { return m_x; }
2113 private:
2114  typename tuple_type<A12>::reference m_x;
2115 };
2116 
2117 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2118 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 13> : tuple_type<A13> {
2120  typename tuple_type<A13>::reference get() { return m_x; }
2121  typename tuple_type<A13>::const_reference get() const { return m_x; }
2122 private:
2123  typename tuple_type<A13>::reference m_x;
2124 };
2125 
2126 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2127 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 14> : tuple_type<A14> {
2129  typename tuple_type<A14>::reference get() { return m_x; }
2130  typename tuple_type<A14>::const_reference get() const { return m_x; }
2131 private:
2132  typename tuple_type<A14>::reference m_x;
2133 };
2134 
2135 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2136 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 15> : tuple_type<A15> {
2138  typename tuple_type<A15>::reference get() { return m_x; }
2139  typename tuple_type<A15>::const_reference get() const { return m_x; }
2140 private:
2141  typename tuple_type<A15>::reference m_x;
2142 };
2143 
2144 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2145 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 16> : tuple_type<A16> {
2147  typename tuple_type<A16>::reference get() { return m_x; }
2148  typename tuple_type<A16>::const_reference get() const { return m_x; }
2149 private:
2150  typename tuple_type<A16>::reference m_x;
2151 };
2152 
2153 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2154 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 17> : tuple_type<A17> {
2156  typename tuple_type<A17>::reference get() { return m_x; }
2157  typename tuple_type<A17>::const_reference get() const { return m_x; }
2158 private:
2159  typename tuple_type<A17>::reference m_x;
2160 };
2161 
2162 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2163 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 18> : tuple_type<A18> {
2165  typename tuple_type<A18>::reference get() { return m_x; }
2166  typename tuple_type<A18>::const_reference get() const { return m_x; }
2167 private:
2168  typename tuple_type<A18>::reference m_x;
2169 };
2170 
2171 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2172 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 19> : tuple_type<A19> {
2174  typename tuple_type<A19>::reference get() { return m_x; }
2175  typename tuple_type<A19>::const_reference get() const { return m_x; }
2176 private:
2177  typename tuple_type<A19>::reference m_x;
2178 };
2179 
2180 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2181 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 20> : tuple_type<A20> {
2183  typename tuple_type<A20>::reference get() { return m_x; }
2184  typename tuple_type<A20>::const_reference get() const { return m_x; }
2185 private:
2186  typename tuple_type<A20>::reference m_x;
2187 };
2188 
2189 
2190 
2191 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2192 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 0> : tuple_type<A0> {
2194  typename tuple_type<A0>::reference get() { return m_x; }
2195  typename tuple_type<A0>::const_reference get() const { return m_x; }
2196 private:
2197  typename tuple_type<A0>::reference m_x;
2198 };
2199 
2200 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2201 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 1> : tuple_type<A1> {
2203  typename tuple_type<A1>::reference get() { return m_x; }
2204  typename tuple_type<A1>::const_reference get() const { return m_x; }
2205 private:
2206  typename tuple_type<A1>::reference m_x;
2207 };
2208 
2209 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2210 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 2> : tuple_type<A2> {
2212  typename tuple_type<A2>::reference get() { return m_x; }
2213  typename tuple_type<A2>::const_reference get() const { return m_x; }
2214 private:
2215  typename tuple_type<A2>::reference m_x;
2216 };
2217 
2218 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2219 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 3> : tuple_type<A3> {
2221  typename tuple_type<A3>::reference get() { return m_x; }
2222  typename tuple_type<A3>::const_reference get() const { return m_x; }
2223 private:
2224  typename tuple_type<A3>::reference m_x;
2225 };
2226 
2227 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2228 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 4> : tuple_type<A4> {
2230  typename tuple_type<A4>::reference get() { return m_x; }
2231  typename tuple_type<A4>::const_reference get() const { return m_x; }
2232 private:
2233  typename tuple_type<A4>::reference m_x;
2234 };
2235 
2236 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2237 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 5> : tuple_type<A5> {
2239  typename tuple_type<A5>::reference get() { return m_x; }
2240  typename tuple_type<A5>::const_reference get() const { return m_x; }
2241 private:
2242  typename tuple_type<A5>::reference m_x;
2243 };
2244 
2245 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2246 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 6> : tuple_type<A6> {
2248  typename tuple_type<A6>::reference get() { return m_x; }
2249  typename tuple_type<A6>::const_reference get() const { return m_x; }
2250 private:
2251  typename tuple_type<A6>::reference m_x;
2252 };
2253 
2254 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2255 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 7> : tuple_type<A7> {
2257  typename tuple_type<A7>::reference get() { return m_x; }
2258  typename tuple_type<A7>::const_reference get() const { return m_x; }
2259 private:
2260  typename tuple_type<A7>::reference m_x;
2261 };
2262 
2263 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2264 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 8> : tuple_type<A8> {
2266  typename tuple_type<A8>::reference get() { return m_x; }
2267  typename tuple_type<A8>::const_reference get() const { return m_x; }
2268 private:
2269  typename tuple_type<A8>::reference m_x;
2270 };
2271 
2272 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2273 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 9> : tuple_type<A9> {
2275  typename tuple_type<A9>::reference get() { return m_x; }
2276  typename tuple_type<A9>::const_reference get() const { return m_x; }
2277 private:
2278  typename tuple_type<A9>::reference m_x;
2279 };
2280 
2281 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2282 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 10> : tuple_type<A10> {
2284  typename tuple_type<A10>::reference get() { return m_x; }
2285  typename tuple_type<A10>::const_reference get() const { return m_x; }
2286 private:
2287  typename tuple_type<A10>::reference m_x;
2288 };
2289 
2290 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2291 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 11> : tuple_type<A11> {
2293  typename tuple_type<A11>::reference get() { return m_x; }
2294  typename tuple_type<A11>::const_reference get() const { return m_x; }
2295 private:
2296  typename tuple_type<A11>::reference m_x;
2297 };
2298 
2299 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2300 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 12> : tuple_type<A12> {
2302  typename tuple_type<A12>::reference get() { return m_x; }
2303  typename tuple_type<A12>::const_reference get() const { return m_x; }
2304 private:
2305  typename tuple_type<A12>::reference m_x;
2306 };
2307 
2308 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2309 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 13> : tuple_type<A13> {
2311  typename tuple_type<A13>::reference get() { return m_x; }
2312  typename tuple_type<A13>::const_reference get() const { return m_x; }
2313 private:
2314  typename tuple_type<A13>::reference m_x;
2315 };
2316 
2317 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2318 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 14> : tuple_type<A14> {
2320  typename tuple_type<A14>::reference get() { return m_x; }
2321  typename tuple_type<A14>::const_reference get() const { return m_x; }
2322 private:
2323  typename tuple_type<A14>::reference m_x;
2324 };
2325 
2326 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2327 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 15> : tuple_type<A15> {
2329  typename tuple_type<A15>::reference get() { return m_x; }
2330  typename tuple_type<A15>::const_reference get() const { return m_x; }
2331 private:
2332  typename tuple_type<A15>::reference m_x;
2333 };
2334 
2335 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2336 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 16> : tuple_type<A16> {
2338  typename tuple_type<A16>::reference get() { return m_x; }
2339  typename tuple_type<A16>::const_reference get() const { return m_x; }
2340 private:
2341  typename tuple_type<A16>::reference m_x;
2342 };
2343 
2344 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2345 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 17> : tuple_type<A17> {
2347  typename tuple_type<A17>::reference get() { return m_x; }
2348  typename tuple_type<A17>::const_reference get() const { return m_x; }
2349 private:
2350  typename tuple_type<A17>::reference m_x;
2351 };
2352 
2353 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2354 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 18> : tuple_type<A18> {
2356  typename tuple_type<A18>::reference get() { return m_x; }
2357  typename tuple_type<A18>::const_reference get() const { return m_x; }
2358 private:
2359  typename tuple_type<A18>::reference m_x;
2360 };
2361 
2362 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2363 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 19> : tuple_type<A19> {
2365  typename tuple_type<A19>::reference get() { return m_x; }
2366  typename tuple_type<A19>::const_reference get() const { return m_x; }
2367 private:
2368  typename tuple_type<A19>::reference m_x;
2369 };
2370 
2371 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2372 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 20> : tuple_type<A20> {
2374  typename tuple_type<A20>::reference get() { return m_x; }
2375  typename tuple_type<A20>::const_reference get() const { return m_x; }
2376 private:
2377  typename tuple_type<A20>::reference m_x;
2378 };
2379 
2380 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2381 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 21> : tuple_type<A21> {
2383  typename tuple_type<A21>::reference get() { return m_x; }
2384  typename tuple_type<A21>::const_reference get() const { return m_x; }
2385 private:
2386  typename tuple_type<A21>::reference m_x;
2387 };
2388 
2389 
2390 
2391 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2392 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 0> : tuple_type<A0> {
2394  typename tuple_type<A0>::reference get() { return m_x; }
2395  typename tuple_type<A0>::const_reference get() const { return m_x; }
2396 private:
2397  typename tuple_type<A0>::reference m_x;
2398 };
2399 
2400 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2401 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 1> : tuple_type<A1> {
2403  typename tuple_type<A1>::reference get() { return m_x; }
2404  typename tuple_type<A1>::const_reference get() const { return m_x; }
2405 private:
2406  typename tuple_type<A1>::reference m_x;
2407 };
2408 
2409 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2410 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 2> : tuple_type<A2> {
2412  typename tuple_type<A2>::reference get() { return m_x; }
2413  typename tuple_type<A2>::const_reference get() const { return m_x; }
2414 private:
2415  typename tuple_type<A2>::reference m_x;
2416 };
2417 
2418 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2419 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 3> : tuple_type<A3> {
2421  typename tuple_type<A3>::reference get() { return m_x; }
2422  typename tuple_type<A3>::const_reference get() const { return m_x; }
2423 private:
2424  typename tuple_type<A3>::reference m_x;
2425 };
2426 
2427 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2428 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 4> : tuple_type<A4> {
2430  typename tuple_type<A4>::reference get() { return m_x; }
2431  typename tuple_type<A4>::const_reference get() const { return m_x; }
2432 private:
2433  typename tuple_type<A4>::reference m_x;
2434 };
2435 
2436 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2437 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 5> : tuple_type<A5> {
2439  typename tuple_type<A5>::reference get() { return m_x; }
2440  typename tuple_type<A5>::const_reference get() const { return m_x; }
2441 private:
2442  typename tuple_type<A5>::reference m_x;
2443 };
2444 
2445 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2446 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 6> : tuple_type<A6> {
2448  typename tuple_type<A6>::reference get() { return m_x; }
2449  typename tuple_type<A6>::const_reference get() const { return m_x; }
2450 private:
2451  typename tuple_type<A6>::reference m_x;
2452 };
2453 
2454 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2455 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 7> : tuple_type<A7> {
2457  typename tuple_type<A7>::reference get() { return m_x; }
2458  typename tuple_type<A7>::const_reference get() const { return m_x; }
2459 private:
2460  typename tuple_type<A7>::reference m_x;
2461 };
2462 
2463 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2464 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 8> : tuple_type<A8> {
2466  typename tuple_type<A8>::reference get() { return m_x; }
2467  typename tuple_type<A8>::const_reference get() const { return m_x; }
2468 private:
2469  typename tuple_type<A8>::reference m_x;
2470 };
2471 
2472 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2473 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 9> : tuple_type<A9> {
2475  typename tuple_type<A9>::reference get() { return m_x; }
2476  typename tuple_type<A9>::const_reference get() const { return m_x; }
2477 private:
2478  typename tuple_type<A9>::reference m_x;
2479 };
2480 
2481 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2482 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 10> : tuple_type<A10> {
2484  typename tuple_type<A10>::reference get() { return m_x; }
2485  typename tuple_type<A10>::const_reference get() const { return m_x; }
2486 private:
2487  typename tuple_type<A10>::reference m_x;
2488 };
2489 
2490 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2491 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 11> : tuple_type<A11> {
2493  typename tuple_type<A11>::reference get() { return m_x; }
2494  typename tuple_type<A11>::const_reference get() const { return m_x; }
2495 private:
2496  typename tuple_type<A11>::reference m_x;
2497 };
2498 
2499 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2500 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 12> : tuple_type<A12> {
2502  typename tuple_type<A12>::reference get() { return m_x; }
2503  typename tuple_type<A12>::const_reference get() const { return m_x; }
2504 private:
2505  typename tuple_type<A12>::reference m_x;
2506 };
2507 
2508 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2509 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 13> : tuple_type<A13> {
2511  typename tuple_type<A13>::reference get() { return m_x; }
2512  typename tuple_type<A13>::const_reference get() const { return m_x; }
2513 private:
2514  typename tuple_type<A13>::reference m_x;
2515 };
2516 
2517 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2518 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 14> : tuple_type<A14> {
2520  typename tuple_type<A14>::reference get() { return m_x; }
2521  typename tuple_type<A14>::const_reference get() const { return m_x; }
2522 private:
2523  typename tuple_type<A14>::reference m_x;
2524 };
2525 
2526 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2527 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 15> : tuple_type<A15> {
2529  typename tuple_type<A15>::reference get() { return m_x; }
2530  typename tuple_type<A15>::const_reference get() const { return m_x; }
2531 private:
2532  typename tuple_type<A15>::reference m_x;
2533 };
2534 
2535 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2536 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 16> : tuple_type<A16> {
2538  typename tuple_type<A16>::reference get() { return m_x; }
2539  typename tuple_type<A16>::const_reference get() const { return m_x; }
2540 private:
2541  typename tuple_type<A16>::reference m_x;
2542 };
2543 
2544 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2545 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 17> : tuple_type<A17> {
2547  typename tuple_type<A17>::reference get() { return m_x; }
2548  typename tuple_type<A17>::const_reference get() const { return m_x; }
2549 private:
2550  typename tuple_type<A17>::reference m_x;
2551 };
2552 
2553 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2554 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 18> : tuple_type<A18> {
2556  typename tuple_type<A18>::reference get() { return m_x; }
2557  typename tuple_type<A18>::const_reference get() const { return m_x; }
2558 private:
2559  typename tuple_type<A18>::reference m_x;
2560 };
2561 
2562 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2563 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 19> : tuple_type<A19> {
2565  typename tuple_type<A19>::reference get() { return m_x; }
2566  typename tuple_type<A19>::const_reference get() const { return m_x; }
2567 private:
2568  typename tuple_type<A19>::reference m_x;
2569 };
2570 
2571 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2572 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 20> : tuple_type<A20> {
2574  typename tuple_type<A20>::reference get() { return m_x; }
2575  typename tuple_type<A20>::const_reference get() const { return m_x; }
2576 private:
2577  typename tuple_type<A20>::reference m_x;
2578 };
2579 
2580 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2581 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 21> : tuple_type<A21> {
2583  typename tuple_type<A21>::reference get() { return m_x; }
2584  typename tuple_type<A21>::const_reference get() const { return m_x; }
2585 private:
2586  typename tuple_type<A21>::reference m_x;
2587 };
2588 
2589 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2590 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 22> : tuple_type<A22> {
2592  typename tuple_type<A22>::reference get() { return m_x; }
2593  typename tuple_type<A22>::const_reference get() const { return m_x; }
2594 private:
2595  typename tuple_type<A22>::reference m_x;
2596 };
2597 
2598 
2599 
2600 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2601 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 0> : tuple_type<A0> {
2603  typename tuple_type<A0>::reference get() { return m_x; }
2604  typename tuple_type<A0>::const_reference get() const { return m_x; }
2605 private:
2606  typename tuple_type<A0>::reference m_x;
2607 };
2608 
2609 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2610 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 1> : tuple_type<A1> {
2612  typename tuple_type<A1>::reference get() { return m_x; }
2613  typename tuple_type<A1>::const_reference get() const { return m_x; }
2614 private:
2615  typename tuple_type<A1>::reference m_x;
2616 };
2617 
2618 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2619 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 2> : tuple_type<A2> {
2621  typename tuple_type<A2>::reference get() { return m_x; }
2622  typename tuple_type<A2>::const_reference get() const { return m_x; }
2623 private:
2624  typename tuple_type<A2>::reference m_x;
2625 };
2626 
2627 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2628 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 3> : tuple_type<A3> {
2630  typename tuple_type<A3>::reference get() { return m_x; }
2631  typename tuple_type<A3>::const_reference get() const { return m_x; }
2632 private:
2633  typename tuple_type<A3>::reference m_x;
2634 };
2635 
2636 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2637 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 4> : tuple_type<A4> {
2639  typename tuple_type<A4>::reference get() { return m_x; }
2640  typename tuple_type<A4>::const_reference get() const { return m_x; }
2641 private:
2642  typename tuple_type<A4>::reference m_x;
2643 };
2644 
2645 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2646 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 5> : tuple_type<A5> {
2648  typename tuple_type<A5>::reference get() { return m_x; }
2649  typename tuple_type<A5>::const_reference get() const { return m_x; }
2650 private:
2651  typename tuple_type<A5>::reference m_x;
2652 };
2653 
2654 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2655 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 6> : tuple_type<A6> {
2657  typename tuple_type<A6>::reference get() { return m_x; }
2658  typename tuple_type<A6>::const_reference get() const { return m_x; }
2659 private:
2660  typename tuple_type<A6>::reference m_x;
2661 };
2662 
2663 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2664 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 7> : tuple_type<A7> {
2666  typename tuple_type<A7>::reference get() { return m_x; }
2667  typename tuple_type<A7>::const_reference get() const { return m_x; }
2668 private:
2669  typename tuple_type<A7>::reference m_x;
2670 };
2671 
2672 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2673 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 8> : tuple_type<A8> {
2675  typename tuple_type<A8>::reference get() { return m_x; }
2676  typename tuple_type<A8>::const_reference get() const { return m_x; }
2677 private:
2678  typename tuple_type<A8>::reference m_x;
2679 };
2680 
2681 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2682 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 9> : tuple_type<A9> {
2684  typename tuple_type<A9>::reference get() { return m_x; }
2685  typename tuple_type<A9>::const_reference get() const { return m_x; }
2686 private:
2687  typename tuple_type<A9>::reference m_x;
2688 };
2689 
2690 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2691 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 10> : tuple_type<A10> {
2693  typename tuple_type<A10>::reference get() { return m_x; }
2694  typename tuple_type<A10>::const_reference get() const { return m_x; }
2695 private:
2696  typename tuple_type<A10>::reference m_x;
2697 };
2698 
2699 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2700 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 11> : tuple_type<A11> {
2702  typename tuple_type<A11>::reference get() { return m_x; }
2703  typename tuple_type<A11>::const_reference get() const { return m_x; }
2704 private:
2705  typename tuple_type<A11>::reference m_x;
2706 };
2707 
2708 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2709 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 12> : tuple_type<A12> {
2711  typename tuple_type<A12>::reference get() { return m_x; }
2712  typename tuple_type<A12>::const_reference get() const { return m_x; }
2713 private:
2714  typename tuple_type<A12>::reference m_x;
2715 };
2716 
2717 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2718 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 13> : tuple_type<A13> {
2720  typename tuple_type<A13>::reference get() { return m_x; }
2721  typename tuple_type<A13>::const_reference get() const { return m_x; }
2722 private:
2723  typename tuple_type<A13>::reference m_x;
2724 };
2725 
2726 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2727 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 14> : tuple_type<A14> {
2729  typename tuple_type<A14>::reference get() { return m_x; }
2730  typename tuple_type<A14>::const_reference get() const { return m_x; }
2731 private:
2732  typename tuple_type<A14>::reference m_x;
2733 };
2734 
2735 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2736 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 15> : tuple_type<A15> {
2738  typename tuple_type<A15>::reference get() { return m_x; }
2739  typename tuple_type<A15>::const_reference get() const { return m_x; }
2740 private:
2741  typename tuple_type<A15>::reference m_x;
2742 };
2743 
2744 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2745 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 16> : tuple_type<A16> {
2747  typename tuple_type<A16>::reference get() { return m_x; }
2748  typename tuple_type<A16>::const_reference get() const { return m_x; }
2749 private:
2750  typename tuple_type<A16>::reference m_x;
2751 };
2752 
2753 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2754 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 17> : tuple_type<A17> {
2756  typename tuple_type<A17>::reference get() { return m_x; }
2757  typename tuple_type<A17>::const_reference get() const { return m_x; }
2758 private:
2759  typename tuple_type<A17>::reference m_x;
2760 };
2761 
2762 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2763 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 18> : tuple_type<A18> {
2765  typename tuple_type<A18>::reference get() { return m_x; }
2766  typename tuple_type<A18>::const_reference get() const { return m_x; }
2767 private:
2768  typename tuple_type<A18>::reference m_x;
2769 };
2770 
2771 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2772 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 19> : tuple_type<A19> {
2774  typename tuple_type<A19>::reference get() { return m_x; }
2775  typename tuple_type<A19>::const_reference get() const { return m_x; }
2776 private:
2777  typename tuple_type<A19>::reference m_x;
2778 };
2779 
2780 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2781 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 20> : tuple_type<A20> {
2783  typename tuple_type<A20>::reference get() { return m_x; }
2784  typename tuple_type<A20>::const_reference get() const { return m_x; }
2785 private:
2786  typename tuple_type<A20>::reference m_x;
2787 };
2788 
2789 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2790 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 21> : tuple_type<A21> {
2792  typename tuple_type<A21>::reference get() { return m_x; }
2793  typename tuple_type<A21>::const_reference get() const { return m_x; }
2794 private:
2795  typename tuple_type<A21>::reference m_x;
2796 };
2797 
2798 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2799 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 22> : tuple_type<A22> {
2801  typename tuple_type<A22>::reference get() { return m_x; }
2802  typename tuple_type<A22>::const_reference get() const { return m_x; }
2803 private:
2804  typename tuple_type<A22>::reference m_x;
2805 };
2806 
2807 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2808 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 23> : tuple_type<A23> {
2810  typename tuple_type<A23>::reference get() { return m_x; }
2811  typename tuple_type<A23>::const_reference get() const { return m_x; }
2812 private:
2813  typename tuple_type<A23>::reference m_x;
2814 };
2815 
2816 
2817 
2818 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2819 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 0> : tuple_type<A0> {
2821  typename tuple_type<A0>::reference get() { return m_x; }
2822  typename tuple_type<A0>::const_reference get() const { return m_x; }
2823 private:
2824  typename tuple_type<A0>::reference m_x;
2825 };
2826 
2827 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2828 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 1> : tuple_type<A1> {
2830  typename tuple_type<A1>::reference get() { return m_x; }
2831  typename tuple_type<A1>::const_reference get() const { return m_x; }
2832 private:
2833  typename tuple_type<A1>::reference m_x;
2834 };
2835 
2836 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2837 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 2> : tuple_type<A2> {
2839  typename tuple_type<A2>::reference get() { return m_x; }
2840  typename tuple_type<A2>::const_reference get() const { return m_x; }
2841 private:
2842  typename tuple_type<A2>::reference m_x;
2843 };
2844 
2845 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2846 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 3> : tuple_type<A3> {
2848  typename tuple_type<A3>::reference get() { return m_x; }
2849  typename tuple_type<A3>::const_reference get() const { return m_x; }
2850 private:
2851  typename tuple_type<A3>::reference m_x;
2852 };
2853 
2854 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2855 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 4> : tuple_type<A4> {
2857  typename tuple_type<A4>::reference get() { return m_x; }
2858  typename tuple_type<A4>::const_reference get() const { return m_x; }
2859 private:
2860  typename tuple_type<A4>::reference m_x;
2861 };
2862 
2863 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2864 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 5> : tuple_type<A5> {
2866  typename tuple_type<A5>::reference get() { return m_x; }
2867  typename tuple_type<A5>::const_reference get() const { return m_x; }
2868 private:
2869  typename tuple_type<A5>::reference m_x;
2870 };
2871 
2872 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2873 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 6> : tuple_type<A6> {
2875  typename tuple_type<A6>::reference get() { return m_x; }
2876  typename tuple_type<A6>::const_reference get() const { return m_x; }
2877 private:
2878  typename tuple_type<A6>::reference m_x;
2879 };
2880 
2881 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2882 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 7> : tuple_type<A7> {
2884  typename tuple_type<A7>::reference get() { return m_x; }
2885  typename tuple_type<A7>::const_reference get() const { return m_x; }
2886 private:
2887  typename tuple_type<A7>::reference m_x;
2888 };
2889 
2890 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2891 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 8> : tuple_type<A8> {
2893  typename tuple_type<A8>::reference get() { return m_x; }
2894  typename tuple_type<A8>::const_reference get() const { return m_x; }
2895 private:
2896  typename tuple_type<A8>::reference m_x;
2897 };
2898 
2899 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2900 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 9> : tuple_type<A9> {
2902  typename tuple_type<A9>::reference get() { return m_x; }
2903  typename tuple_type<A9>::const_reference get() const { return m_x; }
2904 private:
2905  typename tuple_type<A9>::reference m_x;
2906 };
2907 
2908 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2909 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 10> : tuple_type<A10> {
2911  typename tuple_type<A10>::reference get() { return m_x; }
2912  typename tuple_type<A10>::const_reference get() const { return m_x; }
2913 private:
2914  typename tuple_type<A10>::reference m_x;
2915 };
2916 
2917 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2918 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 11> : tuple_type<A11> {
2920  typename tuple_type<A11>::reference get() { return m_x; }
2921  typename tuple_type<A11>::const_reference get() const { return m_x; }
2922 private:
2923  typename tuple_type<A11>::reference m_x;
2924 };
2925 
2926 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2927 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 12> : tuple_type<A12> {
2929  typename tuple_type<A12>::reference get() { return m_x; }
2930  typename tuple_type<A12>::const_reference get() const { return m_x; }
2931 private:
2932  typename tuple_type<A12>::reference m_x;
2933 };
2934 
2935 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2936 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 13> : tuple_type<A13> {
2938  typename tuple_type<A13>::reference get() { return m_x; }
2939  typename tuple_type<A13>::const_reference get() const { return m_x; }
2940 private:
2941  typename tuple_type<A13>::reference m_x;
2942 };
2943 
2944 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2945 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 14> : tuple_type<A14> {
2947  typename tuple_type<A14>::reference get() { return m_x; }
2948  typename tuple_type<A14>::const_reference get() const { return m_x; }
2949 private:
2950  typename tuple_type<A14>::reference m_x;
2951 };
2952 
2953 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2954 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 15> : tuple_type<A15> {
2956  typename tuple_type<A15>::reference get() { return m_x; }
2957  typename tuple_type<A15>::const_reference get() const { return m_x; }
2958 private:
2959  typename tuple_type<A15>::reference m_x;
2960 };
2961 
2962 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2963 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 16> : tuple_type<A16> {
2965  typename tuple_type<A16>::reference get() { return m_x; }
2966  typename tuple_type<A16>::const_reference get() const { return m_x; }
2967 private:
2968  typename tuple_type<A16>::reference m_x;
2969 };
2970 
2971 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2972 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 17> : tuple_type<A17> {
2974  typename tuple_type<A17>::reference get() { return m_x; }
2975  typename tuple_type<A17>::const_reference get() const { return m_x; }
2976 private:
2977  typename tuple_type<A17>::reference m_x;
2978 };
2979 
2980 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2981 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 18> : tuple_type<A18> {
2983  typename tuple_type<A18>::reference get() { return m_x; }
2984  typename tuple_type<A18>::const_reference get() const { return m_x; }
2985 private:
2986  typename tuple_type<A18>::reference m_x;
2987 };
2988 
2989 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2990 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 19> : tuple_type<A19> {
2992  typename tuple_type<A19>::reference get() { return m_x; }
2993  typename tuple_type<A19>::const_reference get() const { return m_x; }
2994 private:
2995  typename tuple_type<A19>::reference m_x;
2996 };
2997 
2998 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2999 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 20> : tuple_type<A20> {
3001  typename tuple_type<A20>::reference get() { return m_x; }
3002  typename tuple_type<A20>::const_reference get() const { return m_x; }
3003 private:
3004  typename tuple_type<A20>::reference m_x;
3005 };
3006 
3007 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
3008 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 21> : tuple_type<A21> {
3010  typename tuple_type<A21>::reference get() { return m_x; }
3011  typename tuple_type<A21>::const_reference get() const { return m_x; }
3012 private:
3013  typename tuple_type<A21>::reference m_x;
3014 };
3015 
3016 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
3017 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 22> : tuple_type<A22> {
3019  typename tuple_type<A22>::reference get() { return m_x; }
3020  typename tuple_type<A22>::const_reference get() const { return m_x; }
3021 private:
3022  typename tuple_type<A22>::reference m_x;
3023 };
3024 
3025 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
3026 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 23> : tuple_type<A23> {
3028  typename tuple_type<A23>::reference get() { return m_x; }
3029  typename tuple_type<A23>::const_reference get() const { return m_x; }
3030 private:
3031  typename tuple_type<A23>::reference m_x;
3032 };
3033 
3034 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
3035 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 24> : tuple_type<A24> {
3037  typename tuple_type<A24>::reference get() { return m_x; }
3038  typename tuple_type<A24>::const_reference get() const { return m_x; }
3039 private:
3040  typename tuple_type<A24>::reference m_x;
3041 };
3042 
3043 
3044 
3045 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3046 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 0> : tuple_type<A0> {
3048  typename tuple_type<A0>::reference get() { return m_x; }
3049  typename tuple_type<A0>::const_reference get() const { return m_x; }
3050 private:
3051  typename tuple_type<A0>::reference m_x;
3052 };
3053 
3054 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3055 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 1> : tuple_type<A1> {
3057  typename tuple_type<A1>::reference get() { return m_x; }
3058  typename tuple_type<A1>::const_reference get() const { return m_x; }
3059 private:
3060  typename tuple_type<A1>::reference m_x;
3061 };
3062 
3063 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3064 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 2> : tuple_type<A2> {
3066  typename tuple_type<A2>::reference get() { return m_x; }
3067  typename tuple_type<A2>::const_reference get() const { return m_x; }
3068 private:
3069  typename tuple_type<A2>::reference m_x;
3070 };
3071 
3072 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3073 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 3> : tuple_type<A3> {
3075  typename tuple_type<A3>::reference get() { return m_x; }
3076  typename tuple_type<A3>::const_reference get() const { return m_x; }
3077 private:
3078  typename tuple_type<A3>::reference m_x;
3079 };
3080 
3081 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3082 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 4> : tuple_type<A4> {
3084  typename tuple_type<A4>::reference get() { return m_x; }
3085  typename tuple_type<A4>::const_reference get() const { return m_x; }
3086 private:
3087  typename tuple_type<A4>::reference m_x;
3088 };
3089 
3090 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3091 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 5> : tuple_type<A5> {
3093  typename tuple_type<A5>::reference get() { return m_x; }
3094  typename tuple_type<A5>::const_reference get() const { return m_x; }
3095 private:
3096  typename tuple_type<A5>::reference m_x;
3097 };
3098 
3099 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3100 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 6> : tuple_type<A6> {
3102  typename tuple_type<A6>::reference get() { return m_x; }
3103  typename tuple_type<A6>::const_reference get() const { return m_x; }
3104 private:
3105  typename tuple_type<A6>::reference m_x;
3106 };
3107 
3108 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3109 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 7> : tuple_type<A7> {
3111  typename tuple_type<A7>::reference get() { return m_x; }
3112  typename tuple_type<A7>::const_reference get() const { return m_x; }
3113 private:
3114  typename tuple_type<A7>::reference m_x;
3115 };
3116 
3117 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3118 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 8> : tuple_type<A8> {
3120  typename tuple_type<A8>::reference get() { return m_x; }
3121  typename tuple_type<A8>::const_reference get() const { return m_x; }
3122 private:
3123  typename tuple_type<A8>::reference m_x;
3124 };
3125 
3126 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3127 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 9> : tuple_type<A9> {
3129  typename tuple_type<A9>::reference get() { return m_x; }
3130  typename tuple_type<A9>::const_reference get() const { return m_x; }
3131 private:
3132  typename tuple_type<A9>::reference m_x;
3133 };
3134 
3135 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3136 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 10> : tuple_type<A10> {
3138  typename tuple_type<A10>::reference get() { return m_x; }
3139  typename tuple_type<A10>::const_reference get() const { return m_x; }
3140 private:
3141  typename tuple_type<A10>::reference m_x;
3142 };
3143 
3144 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3145 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 11> : tuple_type<A11> {
3147  typename tuple_type<A11>::reference get() { return m_x; }
3148  typename tuple_type<A11>::const_reference get() const { return m_x; }
3149 private:
3150  typename tuple_type<A11>::reference m_x;
3151 };
3152 
3153 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3154 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 12> : tuple_type<A12> {
3156  typename tuple_type<A12>::reference get() { return m_x; }
3157  typename tuple_type<A12>::const_reference get() const { return m_x; }
3158 private:
3159  typename tuple_type<A12>::reference m_x;
3160 };
3161 
3162 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3163 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 13> : tuple_type<A13> {
3165  typename tuple_type<A13>::reference get() { return m_x; }
3166  typename tuple_type<A13>::const_reference get() const { return m_x; }
3167 private:
3168  typename tuple_type<A13>::reference m_x;
3169 };
3170 
3171 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3172 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 14> : tuple_type<A14> {
3174  typename tuple_type<A14>::reference get() { return m_x; }
3175  typename tuple_type<A14>::const_reference get() const { return m_x; }
3176 private:
3177  typename tuple_type<A14>::reference m_x;
3178 };
3179 
3180 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3181 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 15> : tuple_type<A15> {
3183  typename tuple_type<A15>::reference get() { return m_x; }
3184  typename tuple_type<A15>::const_reference get() const { return m_x; }
3185 private:
3186  typename tuple_type<A15>::reference m_x;
3187 };
3188 
3189 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3190 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 16> : tuple_type<A16> {
3192  typename tuple_type<A16>::reference get() { return m_x; }
3193  typename tuple_type<A16>::const_reference get() const { return m_x; }
3194 private:
3195  typename tuple_type<A16>::reference m_x;
3196 };
3197 
3198 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3199 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 17> : tuple_type<A17> {
3201  typename tuple_type<A17>::reference get() { return m_x; }
3202  typename tuple_type<A17>::const_reference get() const { return m_x; }
3203 private:
3204  typename tuple_type<A17>::reference m_x;
3205 };
3206 
3207 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3208 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 18> : tuple_type<A18> {
3210  typename tuple_type<A18>::reference get() { return m_x; }
3211  typename tuple_type<A18>::const_reference get() const { return m_x; }
3212 private:
3213  typename tuple_type<A18>::reference m_x;
3214 };
3215 
3216 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3217 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 19> : tuple_type<A19> {
3219  typename tuple_type<A19>::reference get() { return m_x; }
3220  typename tuple_type<A19>::const_reference get() const { return m_x; }
3221 private:
3222  typename tuple_type<A19>::reference m_x;
3223 };
3224 
3225 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3226 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 20> : tuple_type<A20> {
3228  typename tuple_type<A20>::reference get() { return m_x; }
3229  typename tuple_type<A20>::const_reference get() const { return m_x; }
3230 private:
3231  typename tuple_type<A20>::reference m_x;
3232 };
3233 
3234 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3235 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 21> : tuple_type<A21> {
3237  typename tuple_type<A21>::reference get() { return m_x; }
3238  typename tuple_type<A21>::const_reference get() const { return m_x; }
3239 private:
3240  typename tuple_type<A21>::reference m_x;
3241 };
3242 
3243 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3244 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 22> : tuple_type<A22> {
3246  typename tuple_type<A22>::reference get() { return m_x; }
3247  typename tuple_type<A22>::const_reference get() const { return m_x; }
3248 private:
3249  typename tuple_type<A22>::reference m_x;
3250 };
3251 
3252 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3253 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 23> : tuple_type<A23> {
3255  typename tuple_type<A23>::reference get() { return m_x; }
3256  typename tuple_type<A23>::const_reference get() const { return m_x; }
3257 private:
3258  typename tuple_type<A23>::reference m_x;
3259 };
3260 
3261 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3262 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 24> : tuple_type<A24> {
3264  typename tuple_type<A24>::reference get() { return m_x; }
3265  typename tuple_type<A24>::const_reference get() const { return m_x; }
3266 private:
3267  typename tuple_type<A24>::reference m_x;
3268 };
3269 
3270 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3271 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 25> : tuple_type<A25> {
3273  typename tuple_type<A25>::reference get() { return m_x; }
3274  typename tuple_type<A25>::const_reference get() const { return m_x; }
3275 private:
3276  typename tuple_type<A25>::reference m_x;
3277 };
3278 
3279 
3280 
3281 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3282 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 0> : tuple_type<A0> {
3284  typename tuple_type<A0>::reference get() { return m_x; }
3285  typename tuple_type<A0>::const_reference get() const { return m_x; }
3286 private:
3287  typename tuple_type<A0>::reference m_x;
3288 };
3289 
3290 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3291 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 1> : tuple_type<A1> {
3293  typename tuple_type<A1>::reference get() { return m_x; }
3294  typename tuple_type<A1>::const_reference get() const { return m_x; }
3295 private:
3296  typename tuple_type<A1>::reference m_x;
3297 };
3298 
3299 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3300 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 2> : tuple_type<A2> {
3302  typename tuple_type<A2>::reference get() { return m_x; }
3303  typename tuple_type<A2>::const_reference get() const { return m_x; }
3304 private:
3305  typename tuple_type<A2>::reference m_x;
3306 };
3307 
3308 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3309 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 3> : tuple_type<A3> {
3311  typename tuple_type<A3>::reference get() { return m_x; }
3312  typename tuple_type<A3>::const_reference get() const { return m_x; }
3313 private:
3314  typename tuple_type<A3>::reference m_x;
3315 };
3316 
3317 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3318 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 4> : tuple_type<A4> {
3320  typename tuple_type<A4>::reference get() { return m_x; }
3321  typename tuple_type<A4>::const_reference get() const { return m_x; }
3322 private:
3323  typename tuple_type<A4>::reference m_x;
3324 };
3325 
3326 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3327 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 5> : tuple_type<A5> {
3329  typename tuple_type<A5>::reference get() { return m_x; }
3330  typename tuple_type<A5>::const_reference get() const { return m_x; }
3331 private:
3332  typename tuple_type<A5>::reference m_x;
3333 };
3334 
3335 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3336 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 6> : tuple_type<A6> {
3338  typename tuple_type<A6>::reference get() { return m_x; }
3339  typename tuple_type<A6>::const_reference get() const { return m_x; }
3340 private:
3341  typename tuple_type<A6>::reference m_x;
3342 };
3343 
3344 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3345 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 7> : tuple_type<A7> {
3347  typename tuple_type<A7>::reference get() { return m_x; }
3348  typename tuple_type<A7>::const_reference get() const { return m_x; }
3349 private:
3350  typename tuple_type<A7>::reference m_x;
3351 };
3352 
3353 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3354 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 8> : tuple_type<A8> {
3356  typename tuple_type<A8>::reference get() { return m_x; }
3357  typename tuple_type<A8>::const_reference get() const { return m_x; }
3358 private:
3359  typename tuple_type<A8>::reference m_x;
3360 };
3361 
3362 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3363 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 9> : tuple_type<A9> {
3365  typename tuple_type<A9>::reference get() { return m_x; }
3366  typename tuple_type<A9>::const_reference get() const { return m_x; }
3367 private:
3368  typename tuple_type<A9>::reference m_x;
3369 };
3370 
3371 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3372 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 10> : tuple_type<A10> {
3374  typename tuple_type<A10>::reference get() { return m_x; }
3375  typename tuple_type<A10>::const_reference get() const { return m_x; }
3376 private:
3377  typename tuple_type<A10>::reference m_x;
3378 };
3379 
3380 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3381 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 11> : tuple_type<A11> {
3383  typename tuple_type<A11>::reference get() { return m_x; }
3384  typename tuple_type<A11>::const_reference get() const { return m_x; }
3385 private:
3386  typename tuple_type<A11>::reference m_x;
3387 };
3388 
3389 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3390 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 12> : tuple_type<A12> {
3392  typename tuple_type<A12>::reference get() { return m_x; }
3393  typename tuple_type<A12>::const_reference get() const { return m_x; }
3394 private:
3395  typename tuple_type<A12>::reference m_x;
3396 };
3397 
3398 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3399 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 13> : tuple_type<A13> {
3401  typename tuple_type<A13>::reference get() { return m_x; }
3402  typename tuple_type<A13>::const_reference get() const { return m_x; }
3403 private:
3404  typename tuple_type<A13>::reference m_x;
3405 };
3406 
3407 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3408 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 14> : tuple_type<A14> {
3410  typename tuple_type<A14>::reference get() { return m_x; }
3411  typename tuple_type<A14>::const_reference get() const { return m_x; }
3412 private:
3413  typename tuple_type<A14>::reference m_x;
3414 };
3415 
3416 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3417 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 15> : tuple_type<A15> {
3419  typename tuple_type<A15>::reference get() { return m_x; }
3420  typename tuple_type<A15>::const_reference get() const { return m_x; }
3421 private:
3422  typename tuple_type<A15>::reference m_x;
3423 };
3424 
3425 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3426 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 16> : tuple_type<A16> {
3428  typename tuple_type<A16>::reference get() { return m_x; }
3429  typename tuple_type<A16>::const_reference get() const { return m_x; }
3430 private:
3431  typename tuple_type<A16>::reference m_x;
3432 };
3433 
3434 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3435 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 17> : tuple_type<A17> {
3437  typename tuple_type<A17>::reference get() { return m_x; }
3438  typename tuple_type<A17>::const_reference get() const { return m_x; }
3439 private:
3440  typename tuple_type<A17>::reference m_x;
3441 };
3442 
3443 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3444 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 18> : tuple_type<A18> {
3446  typename tuple_type<A18>::reference get() { return m_x; }
3447  typename tuple_type<A18>::const_reference get() const { return m_x; }
3448 private:
3449  typename tuple_type<A18>::reference m_x;
3450 };
3451 
3452 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3453 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 19> : tuple_type<A19> {
3455  typename tuple_type<A19>::reference get() { return m_x; }
3456  typename tuple_type<A19>::const_reference get() const { return m_x; }
3457 private:
3458  typename tuple_type<A19>::reference m_x;
3459 };
3460 
3461 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3462 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 20> : tuple_type<A20> {
3464  typename tuple_type<A20>::reference get() { return m_x; }
3465  typename tuple_type<A20>::const_reference get() const { return m_x; }
3466 private:
3467  typename tuple_type<A20>::reference m_x;
3468 };
3469 
3470 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3471 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 21> : tuple_type<A21> {
3473  typename tuple_type<A21>::reference get() { return m_x; }
3474  typename tuple_type<A21>::const_reference get() const { return m_x; }
3475 private:
3476  typename tuple_type<A21>::reference m_x;
3477 };
3478 
3479 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3480 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 22> : tuple_type<A22> {
3482  typename tuple_type<A22>::reference get() { return m_x; }
3483  typename tuple_type<A22>::const_reference get() const { return m_x; }
3484 private:
3485  typename tuple_type<A22>::reference m_x;
3486 };
3487 
3488 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3489 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 23> : tuple_type<A23> {
3491  typename tuple_type<A23>::reference get() { return m_x; }
3492  typename tuple_type<A23>::const_reference get() const { return m_x; }
3493 private:
3494  typename tuple_type<A23>::reference m_x;
3495 };
3496 
3497 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3498 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 24> : tuple_type<A24> {
3500  typename tuple_type<A24>::reference get() { return m_x; }
3501  typename tuple_type<A24>::const_reference get() const { return m_x; }
3502 private:
3503  typename tuple_type<A24>::reference m_x;
3504 };
3505 
3506 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3507 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 25> : tuple_type<A25> {
3509  typename tuple_type<A25>::reference get() { return m_x; }
3510  typename tuple_type<A25>::const_reference get() const { return m_x; }
3511 private:
3512  typename tuple_type<A25>::reference m_x;
3513 };
3514 
3515 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3516 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 26> : tuple_type<A26> {
3518  typename tuple_type<A26>::reference get() { return m_x; }
3519  typename tuple_type<A26>::const_reference get() const { return m_x; }
3520 private:
3521  typename tuple_type<A26>::reference m_x;
3522 };
3523 
3524 
3525 
3526 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3527 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 0> : tuple_type<A0> {
3529  typename tuple_type<A0>::reference get() { return m_x; }
3530  typename tuple_type<A0>::const_reference get() const { return m_x; }
3531 private:
3532  typename tuple_type<A0>::reference m_x;
3533 };
3534 
3535 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3536 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 1> : tuple_type<A1> {
3538  typename tuple_type<A1>::reference get() { return m_x; }
3539  typename tuple_type<A1>::const_reference get() const { return m_x; }
3540 private:
3541  typename tuple_type<A1>::reference m_x;
3542 };
3543 
3544 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3545 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 2> : tuple_type<A2> {
3547  typename tuple_type<A2>::reference get() { return m_x; }
3548  typename tuple_type<A2>::const_reference get() const { return m_x; }
3549 private:
3550  typename tuple_type<A2>::reference m_x;
3551 };
3552 
3553 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3554 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 3> : tuple_type<A3> {
3556  typename tuple_type<A3>::reference get() { return m_x; }
3557  typename tuple_type<A3>::const_reference get() const { return m_x; }
3558 private:
3559  typename tuple_type<A3>::reference m_x;
3560 };
3561 
3562 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3563 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 4> : tuple_type<A4> {
3565  typename tuple_type<A4>::reference get() { return m_x; }
3566  typename tuple_type<A4>::const_reference get() const { return m_x; }
3567 private:
3568  typename tuple_type<A4>::reference m_x;
3569 };
3570 
3571 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3572 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 5> : tuple_type<A5> {
3574  typename tuple_type<A5>::reference get() { return m_x; }
3575  typename tuple_type<A5>::const_reference get() const { return m_x; }
3576 private:
3577  typename tuple_type<A5>::reference m_x;
3578 };
3579 
3580 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3581 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 6> : tuple_type<A6> {
3583  typename tuple_type<A6>::reference get() { return m_x; }
3584  typename tuple_type<A6>::const_reference get() const { return m_x; }
3585 private:
3586  typename tuple_type<A6>::reference m_x;
3587 };
3588 
3589 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3590 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 7> : tuple_type<A7> {
3592  typename tuple_type<A7>::reference get() { return m_x; }
3593  typename tuple_type<A7>::const_reference get() const { return m_x; }
3594 private:
3595  typename tuple_type<A7>::reference m_x;
3596 };
3597 
3598 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3599 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 8> : tuple_type<A8> {
3601  typename tuple_type<A8>::reference get() { return m_x; }
3602  typename tuple_type<A8>::const_reference get() const { return m_x; }
3603 private:
3604  typename tuple_type<A8>::reference m_x;
3605 };
3606 
3607 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3608 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 9> : tuple_type<A9> {
3610  typename tuple_type<A9>::reference get() { return m_x; }
3611  typename tuple_type<A9>::const_reference get() const { return m_x; }
3612 private:
3613  typename tuple_type<A9>::reference m_x;
3614 };
3615 
3616 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3617 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 10> : tuple_type<A10> {
3619  typename tuple_type<A10>::reference get() { return m_x; }
3620  typename tuple_type<A10>::const_reference get() const { return m_x; }
3621 private:
3622  typename tuple_type<A10>::reference m_x;
3623 };
3624 
3625 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3626 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 11> : tuple_type<A11> {
3628  typename tuple_type<A11>::reference get() { return m_x; }
3629  typename tuple_type<A11>::const_reference get() const { return m_x; }
3630 private:
3631  typename tuple_type<A11>::reference m_x;
3632 };
3633 
3634 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3635 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 12> : tuple_type<A12> {
3637  typename tuple_type<A12>::reference get() { return m_x; }
3638  typename tuple_type<A12>::const_reference get() const { return m_x; }
3639 private:
3640  typename tuple_type<A12>::reference m_x;
3641 };
3642 
3643 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3644 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 13> : tuple_type<A13> {
3646  typename tuple_type<A13>::reference get() { return m_x; }
3647  typename tuple_type<A13>::const_reference get() const { return m_x; }
3648 private:
3649  typename tuple_type<A13>::reference m_x;
3650 };
3651 
3652 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3653 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 14> : tuple_type<A14> {
3655  typename tuple_type<A14>::reference get() { return m_x; }
3656  typename tuple_type<A14>::const_reference get() const { return m_x; }
3657 private:
3658  typename tuple_type<A14>::reference m_x;
3659 };
3660 
3661 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3662 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 15> : tuple_type<A15> {
3664  typename tuple_type<A15>::reference get() { return m_x; }
3665  typename tuple_type<A15>::const_reference get() const { return m_x; }
3666 private:
3667  typename tuple_type<A15>::reference m_x;
3668 };
3669 
3670 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3671 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 16> : tuple_type<A16> {
3673  typename tuple_type<A16>::reference get() { return m_x; }
3674  typename tuple_type<A16>::const_reference get() const { return m_x; }
3675 private:
3676  typename tuple_type<A16>::reference m_x;
3677 };
3678 
3679 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3680 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 17> : tuple_type<A17> {
3682  typename tuple_type<A17>::reference get() { return m_x; }
3683  typename tuple_type<A17>::const_reference get() const { return m_x; }
3684 private:
3685  typename tuple_type<A17>::reference m_x;
3686 };
3687 
3688 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3689 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 18> : tuple_type<A18> {
3691  typename tuple_type<A18>::reference get() { return m_x; }
3692  typename tuple_type<A18>::const_reference get() const { return m_x; }
3693 private:
3694  typename tuple_type<A18>::reference m_x;
3695 };
3696 
3697 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3698 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 19> : tuple_type<A19> {
3700  typename tuple_type<A19>::reference get() { return m_x; }
3701  typename tuple_type<A19>::const_reference get() const { return m_x; }
3702 private:
3703  typename tuple_type<A19>::reference m_x;
3704 };
3705 
3706 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3707 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 20> : tuple_type<A20> {
3709  typename tuple_type<A20>::reference get() { return m_x; }
3710  typename tuple_type<A20>::const_reference get() const { return m_x; }
3711 private:
3712  typename tuple_type<A20>::reference m_x;
3713 };
3714 
3715 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3716 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 21> : tuple_type<A21> {
3718  typename tuple_type<A21>::reference get() { return m_x; }
3719  typename tuple_type<A21>::const_reference get() const { return m_x; }
3720 private:
3721  typename tuple_type<A21>::reference m_x;
3722 };
3723 
3724 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3725 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 22> : tuple_type<A22> {
3727  typename tuple_type<A22>::reference get() { return m_x; }
3728  typename tuple_type<A22>::const_reference get() const { return m_x; }
3729 private:
3730  typename tuple_type<A22>::reference m_x;
3731 };
3732 
3733 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3734 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 23> : tuple_type<A23> {
3736  typename tuple_type<A23>::reference get() { return m_x; }
3737  typename tuple_type<A23>::const_reference get() const { return m_x; }
3738 private:
3739  typename tuple_type<A23>::reference m_x;
3740 };
3741 
3742 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3743 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 24> : tuple_type<A24> {
3745  typename tuple_type<A24>::reference get() { return m_x; }
3746  typename tuple_type<A24>::const_reference get() const { return m_x; }
3747 private:
3748  typename tuple_type<A24>::reference m_x;
3749 };
3750 
3751 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3752 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 25> : tuple_type<A25> {
3754  typename tuple_type<A25>::reference get() { return m_x; }
3755  typename tuple_type<A25>::const_reference get() const { return m_x; }
3756 private:
3757  typename tuple_type<A25>::reference m_x;
3758 };
3759 
3760 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3761 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 26> : tuple_type<A26> {
3763  typename tuple_type<A26>::reference get() { return m_x; }
3764  typename tuple_type<A26>::const_reference get() const { return m_x; }
3765 private:
3766  typename tuple_type<A26>::reference m_x;
3767 };
3768 
3769 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3770 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 27> : tuple_type<A27> {
3772  typename tuple_type<A27>::reference get() { return m_x; }
3773  typename tuple_type<A27>::const_reference get() const { return m_x; }
3774 private:
3775  typename tuple_type<A27>::reference m_x;
3776 };
3777 
3778 
3779 
3780 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3781 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 0> : tuple_type<A0> {
3783  typename tuple_type<A0>::reference get() { return m_x; }
3784  typename tuple_type<A0>::const_reference get() const { return m_x; }
3785 private:
3786  typename tuple_type<A0>::reference m_x;
3787 };
3788 
3789 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3790 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 1> : tuple_type<A1> {
3792  typename tuple_type<A1>::reference get() { return m_x; }
3793  typename tuple_type<A1>::const_reference get() const { return m_x; }
3794 private:
3795  typename tuple_type<A1>::reference m_x;
3796 };
3797 
3798 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3799 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 2> : tuple_type<A2> {
3801  typename tuple_type<A2>::reference get() { return m_x; }
3802  typename tuple_type<A2>::const_reference get() const { return m_x; }
3803 private:
3804  typename tuple_type<A2>::reference m_x;
3805 };
3806 
3807 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3808 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 3> : tuple_type<A3> {
3810  typename tuple_type<A3>::reference get() { return m_x; }
3811  typename tuple_type<A3>::const_reference get() const { return m_x; }
3812 private:
3813  typename tuple_type<A3>::reference m_x;
3814 };
3815 
3816 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3817 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 4> : tuple_type<A4> {
3819  typename tuple_type<A4>::reference get() { return m_x; }
3820  typename tuple_type<A4>::const_reference get() const { return m_x; }
3821 private:
3822  typename tuple_type<A4>::reference m_x;
3823 };
3824 
3825 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3826 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 5> : tuple_type<A5> {
3828  typename tuple_type<A5>::reference get() { return m_x; }
3829  typename tuple_type<A5>::const_reference get() const { return m_x; }
3830 private:
3831  typename tuple_type<A5>::reference m_x;
3832 };
3833 
3834 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3835 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 6> : tuple_type<A6> {
3837  typename tuple_type<A6>::reference get() { return m_x; }
3838  typename tuple_type<A6>::const_reference get() const { return m_x; }
3839 private:
3840  typename tuple_type<A6>::reference m_x;
3841 };
3842 
3843 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3844 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 7> : tuple_type<A7> {
3846  typename tuple_type<A7>::reference get() { return m_x; }
3847  typename tuple_type<A7>::const_reference get() const { return m_x; }
3848 private:
3849  typename tuple_type<A7>::reference m_x;
3850 };
3851 
3852 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3853 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 8> : tuple_type<A8> {
3855  typename tuple_type<A8>::reference get() { return m_x; }
3856  typename tuple_type<A8>::const_reference get() const { return m_x; }
3857 private:
3858  typename tuple_type<A8>::reference m_x;
3859 };
3860 
3861 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3862 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 9> : tuple_type<A9> {
3864  typename tuple_type<A9>::reference get() { return m_x; }
3865  typename tuple_type<A9>::const_reference get() const { return m_x; }
3866 private:
3867  typename tuple_type<A9>::reference m_x;
3868 };
3869 
3870 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3871 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 10> : tuple_type<A10> {
3873  typename tuple_type<A10>::reference get() { return m_x; }
3874  typename tuple_type<A10>::const_reference get() const { return m_x; }
3875 private:
3876  typename tuple_type<A10>::reference m_x;
3877 };
3878 
3879 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3880 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 11> : tuple_type<A11> {
3882  typename tuple_type<A11>::reference get() { return m_x; }
3883  typename tuple_type<A11>::const_reference get() const { return m_x; }
3884 private:
3885  typename tuple_type<A11>::reference m_x;
3886 };
3887 
3888 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3889 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 12> : tuple_type<A12> {
3891  typename tuple_type<A12>::reference get() { return m_x; }
3892  typename tuple_type<A12>::const_reference get() const { return m_x; }
3893 private:
3894  typename tuple_type<A12>::reference m_x;
3895 };
3896 
3897 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3898 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 13> : tuple_type<A13> {
3900  typename tuple_type<A13>::reference get() { return m_x; }
3901  typename tuple_type<A13>::const_reference get() const { return m_x; }
3902 private:
3903  typename tuple_type<A13>::reference m_x;
3904 };
3905 
3906 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3907 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 14> : tuple_type<A14> {
3909  typename tuple_type<A14>::reference get() { return m_x; }
3910  typename tuple_type<A14>::const_reference get() const { return m_x; }
3911 private:
3912  typename tuple_type<A14>::reference m_x;
3913 };
3914 
3915 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3916 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 15> : tuple_type<A15> {
3918  typename tuple_type<A15>::reference get() { return m_x; }
3919  typename tuple_type<A15>::const_reference get() const { return m_x; }
3920 private:
3921  typename tuple_type<A15>::reference m_x;
3922 };
3923 
3924 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3925 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 16> : tuple_type<A16> {
3927  typename tuple_type<A16>::reference get() { return m_x; }
3928  typename tuple_type<A16>::const_reference get() const { return m_x; }
3929 private:
3930  typename tuple_type<A16>::reference m_x;
3931 };
3932 
3933 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3934 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 17> : tuple_type<A17> {
3936  typename tuple_type<A17>::reference get() { return m_x; }
3937  typename tuple_type<A17>::const_reference get() const { return m_x; }
3938 private:
3939  typename tuple_type<A17>::reference m_x;
3940 };
3941 
3942 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3943 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 18> : tuple_type<A18> {
3945  typename tuple_type<A18>::reference get() { return m_x; }
3946  typename tuple_type<A18>::const_reference get() const { return m_x; }
3947 private:
3948  typename tuple_type<A18>::reference m_x;
3949 };
3950 
3951 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3952 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 19> : tuple_type<A19> {
3954  typename tuple_type<A19>::reference get() { return m_x; }
3955  typename tuple_type<A19>::const_reference get() const { return m_x; }
3956 private:
3957  typename tuple_type<A19>::reference m_x;
3958 };
3959 
3960 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3961 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 20> : tuple_type<A20> {
3963  typename tuple_type<A20>::reference get() { return m_x; }
3964  typename tuple_type<A20>::const_reference get() const { return m_x; }
3965 private:
3966  typename tuple_type<A20>::reference m_x;
3967 };
3968 
3969 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3970 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 21> : tuple_type<A21> {
3972  typename tuple_type<A21>::reference get() { return m_x; }
3973  typename tuple_type<A21>::const_reference get() const { return m_x; }
3974 private:
3975  typename tuple_type<A21>::reference m_x;
3976 };
3977 
3978 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3979 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 22> : tuple_type<A22> {
3981  typename tuple_type<A22>::reference get() { return m_x; }
3982  typename tuple_type<A22>::const_reference get() const { return m_x; }
3983 private:
3984  typename tuple_type<A22>::reference m_x;
3985 };
3986 
3987 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3988 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 23> : tuple_type<A23> {
3990  typename tuple_type<A23>::reference get() { return m_x; }
3991  typename tuple_type<A23>::const_reference get() const { return m_x; }
3992 private:
3993  typename tuple_type<A23>::reference m_x;
3994 };
3995 
3996 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3997 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 24> : tuple_type<A24> {
3999  typename tuple_type<A24>::reference get() { return m_x; }
4000  typename tuple_type<A24>::const_reference get() const { return m_x; }
4001 private:
4002  typename tuple_type<A24>::reference m_x;
4003 };
4004 
4005 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
4006 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 25> : tuple_type<A25> {
4008  typename tuple_type<A25>::reference get() { return m_x; }
4009  typename tuple_type<A25>::const_reference get() const { return m_x; }
4010 private:
4011  typename tuple_type<A25>::reference m_x;
4012 };
4013 
4014 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
4015 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 26> : tuple_type<A26> {
4017  typename tuple_type<A26>::reference get() { return m_x; }
4018  typename tuple_type<A26>::const_reference get() const { return m_x; }
4019 private:
4020  typename tuple_type<A26>::reference m_x;
4021 };
4022 
4023 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
4024 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 27> : tuple_type<A27> {
4026  typename tuple_type<A27>::reference get() { return m_x; }
4027  typename tuple_type<A27>::const_reference get() const { return m_x; }
4028 private:
4029  typename tuple_type<A27>::reference m_x;
4030 };
4031 
4032 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
4033 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 28> : tuple_type<A28> {
4035  typename tuple_type<A28>::reference get() { return m_x; }
4036  typename tuple_type<A28>::const_reference get() const { return m_x; }
4037 private:
4038  typename tuple_type<A28>::reference m_x;
4039 };
4040 
4041 
4042 
4043 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4044 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 0> : tuple_type<A0> {
4046  typename tuple_type<A0>::reference get() { return m_x; }
4047  typename tuple_type<A0>::const_reference get() const { return m_x; }
4048 private:
4049  typename tuple_type<A0>::reference m_x;
4050 };
4051 
4052 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4053 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 1> : tuple_type<A1> {
4055  typename tuple_type<A1>::reference get() { return m_x; }
4056  typename tuple_type<A1>::const_reference get() const { return m_x; }
4057 private:
4058  typename tuple_type<A1>::reference m_x;
4059 };
4060 
4061 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4062 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 2> : tuple_type<A2> {
4064  typename tuple_type<A2>::reference get() { return m_x; }
4065  typename tuple_type<A2>::const_reference get() const { return m_x; }
4066 private:
4067  typename tuple_type<A2>::reference m_x;
4068 };
4069 
4070 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4071 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 3> : tuple_type<A3> {
4073  typename tuple_type<A3>::reference get() { return m_x; }
4074  typename tuple_type<A3>::const_reference get() const { return m_x; }
4075 private:
4076  typename tuple_type<A3>::reference m_x;
4077 };
4078 
4079 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4080 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 4> : tuple_type<A4> {
4082  typename tuple_type<A4>::reference get() { return m_x; }
4083  typename tuple_type<A4>::const_reference get() const { return m_x; }
4084 private:
4085  typename tuple_type<A4>::reference m_x;
4086 };
4087 
4088 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4089 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 5> : tuple_type<A5> {
4091  typename tuple_type<A5>::reference get() { return m_x; }
4092  typename tuple_type<A5>::const_reference get() const { return m_x; }
4093 private:
4094  typename tuple_type<A5>::reference m_x;
4095 };
4096 
4097 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4098 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 6> : tuple_type<A6> {
4100  typename tuple_type<A6>::reference get() { return m_x; }
4101  typename tuple_type<A6>::const_reference get() const { return m_x; }
4102 private:
4103  typename tuple_type<A6>::reference m_x;
4104 };
4105 
4106 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4107 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 7> : tuple_type<A7> {
4109  typename tuple_type<A7>::reference get() { return m_x; }
4110  typename tuple_type<A7>::const_reference get() const { return m_x; }
4111 private:
4112  typename tuple_type<A7>::reference m_x;
4113 };
4114 
4115 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4116 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 8> : tuple_type<A8> {
4118  typename tuple_type<A8>::reference get() { return m_x; }
4119  typename tuple_type<A8>::const_reference get() const { return m_x; }
4120 private:
4121  typename tuple_type<A8>::reference m_x;
4122 };
4123 
4124 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4125 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 9> : tuple_type<A9> {
4127  typename tuple_type<A9>::reference get() { return m_x; }
4128  typename tuple_type<A9>::const_reference get() const { return m_x; }
4129 private:
4130  typename tuple_type<A9>::reference m_x;
4131 };
4132 
4133 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4134 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 10> : tuple_type<A10> {
4136  typename tuple_type<A10>::reference get() { return m_x; }
4137  typename tuple_type<A10>::const_reference get() const { return m_x; }
4138 private:
4139  typename tuple_type<A10>::reference m_x;
4140 };
4141 
4142 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4143 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 11> : tuple_type<A11> {
4145  typename tuple_type<A11>::reference get() { return m_x; }
4146  typename tuple_type<A11>::const_reference get() const { return m_x; }
4147 private:
4148  typename tuple_type<A11>::reference m_x;
4149 };
4150 
4151 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4152 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 12> : tuple_type<A12> {
4154  typename tuple_type<A12>::reference get() { return m_x; }
4155  typename tuple_type<A12>::const_reference get() const { return m_x; }
4156 private:
4157  typename tuple_type<A12>::reference m_x;
4158 };
4159 
4160 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4161 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 13> : tuple_type<A13> {
4163  typename tuple_type<A13>::reference get() { return m_x; }
4164  typename tuple_type<A13>::const_reference get() const { return m_x; }
4165 private:
4166  typename tuple_type<A13>::reference m_x;
4167 };
4168 
4169 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4170 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 14> : tuple_type<A14> {
4172  typename tuple_type<A14>::reference get() { return m_x; }
4173  typename tuple_type<A14>::const_reference get() const { return m_x; }
4174 private:
4175  typename tuple_type<A14>::reference m_x;
4176 };
4177 
4178 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4179 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 15> : tuple_type<A15> {
4181  typename tuple_type<A15>::reference get() { return m_x; }
4182  typename tuple_type<A15>::const_reference get() const { return m_x; }
4183 private:
4184  typename tuple_type<A15>::reference m_x;
4185 };
4186 
4187 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4188 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 16> : tuple_type<A16> {
4190  typename tuple_type<A16>::reference get() { return m_x; }
4191  typename tuple_type<A16>::const_reference get() const { return m_x; }
4192 private:
4193  typename tuple_type<A16>::reference m_x;
4194 };
4195 
4196 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4197 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 17> : tuple_type<A17> {
4199  typename tuple_type<A17>::reference get() { return m_x; }
4200  typename tuple_type<A17>::const_reference get() const { return m_x; }
4201 private:
4202  typename tuple_type<A17>::reference m_x;
4203 };
4204 
4205 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4206 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 18> : tuple_type<A18> {
4208  typename tuple_type<A18>::reference get() { return m_x; }
4209  typename tuple_type<A18>::const_reference get() const { return m_x; }
4210 private:
4211  typename tuple_type<A18>::reference m_x;
4212 };
4213 
4214 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4215 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 19> : tuple_type<A19> {
4217  typename tuple_type<A19>::reference get() { return m_x; }
4218  typename tuple_type<A19>::const_reference get() const { return m_x; }
4219 private:
4220  typename tuple_type<A19>::reference m_x;
4221 };
4222 
4223 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4224 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 20> : tuple_type<A20> {
4226  typename tuple_type<A20>::reference get() { return m_x; }
4227  typename tuple_type<A20>::const_reference get() const { return m_x; }
4228 private:
4229  typename tuple_type<A20>::reference m_x;
4230 };
4231 
4232 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4233 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 21> : tuple_type<A21> {
4235  typename tuple_type<A21>::reference get() { return m_x; }
4236  typename tuple_type<A21>::const_reference get() const { return m_x; }
4237 private:
4238  typename tuple_type<A21>::reference m_x;
4239 };
4240 
4241 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4242 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 22> : tuple_type<A22> {
4244  typename tuple_type<A22>::reference get() { return m_x; }
4245  typename tuple_type<A22>::const_reference get() const { return m_x; }
4246 private:
4247  typename tuple_type<A22>::reference m_x;
4248 };
4249 
4250 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4251 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 23> : tuple_type<A23> {
4253  typename tuple_type<A23>::reference get() { return m_x; }
4254  typename tuple_type<A23>::const_reference get() const { return m_x; }
4255 private:
4256  typename tuple_type<A23>::reference m_x;
4257 };
4258 
4259 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4260 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 24> : tuple_type<A24> {
4262  typename tuple_type<A24>::reference get() { return m_x; }
4263  typename tuple_type<A24>::const_reference get() const { return m_x; }
4264 private:
4265  typename tuple_type<A24>::reference m_x;
4266 };
4267 
4268 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4269 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 25> : tuple_type<A25> {
4271  typename tuple_type<A25>::reference get() { return m_x; }
4272  typename tuple_type<A25>::const_reference get() const { return m_x; }
4273 private:
4274  typename tuple_type<A25>::reference m_x;
4275 };
4276 
4277 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4278 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 26> : tuple_type<A26> {
4280  typename tuple_type<A26>::reference get() { return m_x; }
4281  typename tuple_type<A26>::const_reference get() const { return m_x; }
4282 private:
4283  typename tuple_type<A26>::reference m_x;
4284 };
4285 
4286 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4287 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 27> : tuple_type<A27> {
4289  typename tuple_type<A27>::reference get() { return m_x; }
4290  typename tuple_type<A27>::const_reference get() const { return m_x; }
4291 private:
4292  typename tuple_type<A27>::reference m_x;
4293 };
4294 
4295 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4296 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 28> : tuple_type<A28> {
4298  typename tuple_type<A28>::reference get() { return m_x; }
4299  typename tuple_type<A28>::const_reference get() const { return m_x; }
4300 private:
4301  typename tuple_type<A28>::reference m_x;
4302 };
4303 
4304 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
4305 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 29> : tuple_type<A29> {
4307  typename tuple_type<A29>::reference get() { return m_x; }
4308  typename tuple_type<A29>::const_reference get() const { return m_x; }
4309 private:
4310  typename tuple_type<A29>::reference m_x;
4311 };
4312 
4313 
4314 
4315 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4316 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 0> : tuple_type<A0> {
4318  typename tuple_type<A0>::reference get() { return m_x; }
4319  typename tuple_type<A0>::const_reference get() const { return m_x; }
4320 private:
4321  typename tuple_type<A0>::reference m_x;
4322 };
4323 
4324 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4325 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 1> : tuple_type<A1> {
4327  typename tuple_type<A1>::reference get() { return m_x; }
4328  typename tuple_type<A1>::const_reference get() const { return m_x; }
4329 private:
4330  typename tuple_type<A1>::reference m_x;
4331 };
4332 
4333 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4334 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 2> : tuple_type<A2> {
4336  typename tuple_type<A2>::reference get() { return m_x; }
4337  typename tuple_type<A2>::const_reference get() const { return m_x; }
4338 private:
4339  typename tuple_type<A2>::reference m_x;
4340 };
4341 
4342 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4343 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 3> : tuple_type<A3> {
4345  typename tuple_type<A3>::reference get() { return m_x; }
4346  typename tuple_type<A3>::const_reference get() const { return m_x; }
4347 private:
4348  typename tuple_type<A3>::reference m_x;
4349 };
4350 
4351 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4352 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 4> : tuple_type<A4> {
4354  typename tuple_type<A4>::reference get() { return m_x; }
4355  typename tuple_type<A4>::const_reference get() const { return m_x; }
4356 private:
4357  typename tuple_type<A4>::reference m_x;
4358 };
4359 
4360 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4361 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 5> : tuple_type<A5> {
4363  typename tuple_type<A5>::reference get() { return m_x; }
4364  typename tuple_type<A5>::const_reference get() const { return m_x; }
4365 private:
4366  typename tuple_type<A5>::reference m_x;
4367 };
4368 
4369 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4370 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 6> : tuple_type<A6> {
4372  typename tuple_type<A6>::reference get() { return m_x; }
4373  typename tuple_type<A6>::const_reference get() const { return m_x; }
4374 private:
4375  typename tuple_type<A6>::reference m_x;
4376 };
4377 
4378 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4379 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 7> : tuple_type<A7> {
4381  typename tuple_type<A7>::reference get() { return m_x; }
4382  typename tuple_type<A7>::const_reference get() const { return m_x; }
4383 private:
4384  typename tuple_type<A7>::reference m_x;
4385 };
4386 
4387 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4388 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 8> : tuple_type<A8> {
4390  typename tuple_type<A8>::reference get() { return m_x; }
4391  typename tuple_type<A8>::const_reference get() const { return m_x; }
4392 private:
4393  typename tuple_type<A8>::reference m_x;
4394 };
4395 
4396 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4397 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 9> : tuple_type<A9> {
4399  typename tuple_type<A9>::reference get() { return m_x; }
4400  typename tuple_type<A9>::const_reference get() const { return m_x; }
4401 private:
4402  typename tuple_type<A9>::reference m_x;
4403 };
4404 
4405 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4406 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 10> : tuple_type<A10> {
4408  typename tuple_type<A10>::reference get() { return m_x; }
4409  typename tuple_type<A10>::const_reference get() const { return m_x; }
4410 private:
4411  typename tuple_type<A10>::reference m_x;
4412 };
4413 
4414 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4415 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 11> : tuple_type<A11> {
4417  typename tuple_type<A11>::reference get() { return m_x; }
4418  typename tuple_type<A11>::const_reference get() const { return m_x; }
4419 private:
4420  typename tuple_type<A11>::reference m_x;
4421 };
4422 
4423 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4424 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 12> : tuple_type<A12> {
4426  typename tuple_type<A12>::reference get() { return m_x; }
4427  typename tuple_type<A12>::const_reference get() const { return m_x; }
4428 private:
4429  typename tuple_type<A12>::reference m_x;
4430 };
4431 
4432 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4433 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 13> : tuple_type<A13> {
4435  typename tuple_type<A13>::reference get() { return m_x; }
4436  typename tuple_type<A13>::const_reference get() const { return m_x; }
4437 private:
4438  typename tuple_type<A13>::reference m_x;
4439 };
4440 
4441 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4442 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 14> : tuple_type<A14> {
4444  typename tuple_type<A14>::reference get() { return m_x; }
4445  typename tuple_type<A14>::const_reference get() const { return m_x; }
4446 private:
4447  typename tuple_type<A14>::reference m_x;
4448 };
4449 
4450 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4451 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 15> : tuple_type<A15> {
4453  typename tuple_type<A15>::reference get() { return m_x; }
4454  typename tuple_type<A15>::const_reference get() const { return m_x; }
4455 private:
4456  typename tuple_type<A15>::reference m_x;
4457 };
4458 
4459 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4460 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 16> : tuple_type<A16> {
4462  typename tuple_type<A16>::reference get() { return m_x; }
4463  typename tuple_type<A16>::const_reference get() const { return m_x; }
4464 private:
4465  typename tuple_type<A16>::reference m_x;
4466 };
4467 
4468 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4469 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 17> : tuple_type<A17> {
4471  typename tuple_type<A17>::reference get() { return m_x; }
4472  typename tuple_type<A17>::const_reference get() const { return m_x; }
4473 private:
4474  typename tuple_type<A17>::reference m_x;
4475 };
4476 
4477 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4478 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 18> : tuple_type<A18> {
4480  typename tuple_type<A18>::reference get() { return m_x; }
4481  typename tuple_type<A18>::const_reference get() const { return m_x; }
4482 private:
4483  typename tuple_type<A18>::reference m_x;
4484 };
4485 
4486 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4487 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 19> : tuple_type<A19> {
4489  typename tuple_type<A19>::reference get() { return m_x; }
4490  typename tuple_type<A19>::const_reference get() const { return m_x; }
4491 private:
4492  typename tuple_type<A19>::reference m_x;
4493 };
4494 
4495 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4496 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 20> : tuple_type<A20> {
4498  typename tuple_type<A20>::reference get() { return m_x; }
4499  typename tuple_type<A20>::const_reference get() const { return m_x; }
4500 private:
4501  typename tuple_type<A20>::reference m_x;
4502 };
4503 
4504 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4505 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 21> : tuple_type<A21> {
4507  typename tuple_type<A21>::reference get() { return m_x; }
4508  typename tuple_type<A21>::const_reference get() const { return m_x; }
4509 private:
4510  typename tuple_type<A21>::reference m_x;
4511 };
4512 
4513 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4514 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 22> : tuple_type<A22> {
4516  typename tuple_type<A22>::reference get() { return m_x; }
4517  typename tuple_type<A22>::const_reference get() const { return m_x; }
4518 private:
4519  typename tuple_type<A22>::reference m_x;
4520 };
4521 
4522 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4523 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 23> : tuple_type<A23> {
4525  typename tuple_type<A23>::reference get() { return m_x; }
4526  typename tuple_type<A23>::const_reference get() const { return m_x; }
4527 private:
4528  typename tuple_type<A23>::reference m_x;
4529 };
4530 
4531 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4532 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 24> : tuple_type<A24> {
4534  typename tuple_type<A24>::reference get() { return m_x; }
4535  typename tuple_type<A24>::const_reference get() const { return m_x; }
4536 private:
4537  typename tuple_type<A24>::reference m_x;
4538 };
4539 
4540 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4541 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 25> : tuple_type<A25> {
4543  typename tuple_type<A25>::reference get() { return m_x; }
4544  typename tuple_type<A25>::const_reference get() const { return m_x; }
4545 private:
4546  typename tuple_type<A25>::reference m_x;
4547 };
4548 
4549 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4550 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 26> : tuple_type<A26> {
4552  typename tuple_type<A26>::reference get() { return m_x; }
4553  typename tuple_type<A26>::const_reference get() const { return m_x; }
4554 private:
4555  typename tuple_type<A26>::reference m_x;
4556 };
4557 
4558 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4559 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 27> : tuple_type<A27> {
4561  typename tuple_type<A27>::reference get() { return m_x; }
4562  typename tuple_type<A27>::const_reference get() const { return m_x; }
4563 private:
4564  typename tuple_type<A27>::reference m_x;
4565 };
4566 
4567 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4568 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 28> : tuple_type<A28> {
4570  typename tuple_type<A28>::reference get() { return m_x; }
4571  typename tuple_type<A28>::const_reference get() const { return m_x; }
4572 private:
4573  typename tuple_type<A28>::reference m_x;
4574 };
4575 
4576 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4577 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 29> : tuple_type<A29> {
4579  typename tuple_type<A29>::reference get() { return m_x; }
4580  typename tuple_type<A29>::const_reference get() const { return m_x; }
4581 private:
4582  typename tuple_type<A29>::reference m_x;
4583 };
4584 
4585 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
4586 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 30> : tuple_type<A30> {
4588  typename tuple_type<A30>::reference get() { return m_x; }
4589  typename tuple_type<A30>::const_reference get() const { return m_x; }
4590 private:
4591  typename tuple_type<A30>::reference m_x;
4592 };
4593 
4594 
4595 
4596 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4597 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 0> : tuple_type<A0> {
4599  typename tuple_type<A0>::reference get() { return m_x; }
4600  typename tuple_type<A0>::const_reference get() const { return m_x; }
4601 private:
4602  typename tuple_type<A0>::reference m_x;
4603 };
4604 
4605 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4606 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 1> : tuple_type<A1> {
4608  typename tuple_type<A1>::reference get() { return m_x; }
4609  typename tuple_type<A1>::const_reference get() const { return m_x; }
4610 private:
4611  typename tuple_type<A1>::reference m_x;
4612 };
4613 
4614 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4615 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 2> : tuple_type<A2> {
4617  typename tuple_type<A2>::reference get() { return m_x; }
4618  typename tuple_type<A2>::const_reference get() const { return m_x; }
4619 private:
4620  typename tuple_type<A2>::reference m_x;
4621 };
4622 
4623 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4624 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 3> : tuple_type<A3> {
4626  typename tuple_type<A3>::reference get() { return m_x; }
4627  typename tuple_type<A3>::const_reference get() const { return m_x; }
4628 private:
4629  typename tuple_type<A3>::reference m_x;
4630 };
4631 
4632 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4633 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 4> : tuple_type<A4> {
4635  typename tuple_type<A4>::reference get() { return m_x; }
4636  typename tuple_type<A4>::const_reference get() const { return m_x; }
4637 private:
4638  typename tuple_type<A4>::reference m_x;
4639 };
4640 
4641 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4642 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 5> : tuple_type<A5> {
4644  typename tuple_type<A5>::reference get() { return m_x; }
4645  typename tuple_type<A5>::const_reference get() const { return m_x; }
4646 private:
4647  typename tuple_type<A5>::reference m_x;
4648 };
4649 
4650 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4651 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 6> : tuple_type<A6> {
4653  typename tuple_type<A6>::reference get() { return m_x; }
4654  typename tuple_type<A6>::const_reference get() const { return m_x; }
4655 private:
4656  typename tuple_type<A6>::reference m_x;
4657 };
4658 
4659 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4660 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 7> : tuple_type<A7> {
4662  typename tuple_type<A7>::reference get() { return m_x; }
4663  typename tuple_type<A7>::const_reference get() const { return m_x; }
4664 private:
4665  typename tuple_type<A7>::reference m_x;
4666 };
4667 
4668 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4669 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 8> : tuple_type<A8> {
4671  typename tuple_type<A8>::reference get() { return m_x; }
4672  typename tuple_type<A8>::const_reference get() const { return m_x; }
4673 private:
4674  typename tuple_type<A8>::reference m_x;
4675 };
4676 
4677 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4678 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 9> : tuple_type<A9> {
4680  typename tuple_type<A9>::reference get() { return m_x; }
4681  typename tuple_type<A9>::const_reference get() const { return m_x; }
4682 private:
4683  typename tuple_type<A9>::reference m_x;
4684 };
4685 
4686 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4687 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 10> : tuple_type<A10> {
4689  typename tuple_type<A10>::reference get() { return m_x; }
4690  typename tuple_type<A10>::const_reference get() const { return m_x; }
4691 private:
4692  typename tuple_type<A10>::reference m_x;
4693 };
4694 
4695 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4696 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 11> : tuple_type<A11> {
4698  typename tuple_type<A11>::reference get() { return m_x; }
4699  typename tuple_type<A11>::const_reference get() const { return m_x; }
4700 private:
4701  typename tuple_type<A11>::reference m_x;
4702 };
4703 
4704 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4705 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 12> : tuple_type<A12> {
4707  typename tuple_type<A12>::reference get() { return m_x; }
4708  typename tuple_type<A12>::const_reference get() const { return m_x; }
4709 private:
4710  typename tuple_type<A12>::reference m_x;
4711 };
4712 
4713 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4714 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 13> : tuple_type<A13> {
4716  typename tuple_type<A13>::reference get() { return m_x; }
4717  typename tuple_type<A13>::const_reference get() const { return m_x; }
4718 private:
4719  typename tuple_type<A13>::reference m_x;
4720 };
4721 
4722 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4723 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 14> : tuple_type<A14> {
4725  typename tuple_type<A14>::reference get() { return m_x; }
4726  typename tuple_type<A14>::const_reference get() const { return m_x; }
4727 private:
4728  typename tuple_type<A14>::reference m_x;
4729 };
4730 
4731 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4732 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 15> : tuple_type<A15> {
4734  typename tuple_type<A15>::reference get() { return m_x; }
4735  typename tuple_type<A15>::const_reference get() const { return m_x; }
4736 private:
4737  typename tuple_type<A15>::reference m_x;
4738 };
4739 
4740 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4741 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 16> : tuple_type<A16> {
4743  typename tuple_type<A16>::reference get() { return m_x; }
4744  typename tuple_type<A16>::const_reference get() const { return m_x; }
4745 private:
4746  typename tuple_type<A16>::reference m_x;
4747 };
4748 
4749 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4750 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 17> : tuple_type<A17> {
4752  typename tuple_type<A17>::reference get() { return m_x; }
4753  typename tuple_type<A17>::const_reference get() const { return m_x; }
4754 private:
4755  typename tuple_type<A17>::reference m_x;
4756 };
4757 
4758 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4759 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 18> : tuple_type<A18> {
4761  typename tuple_type<A18>::reference get() { return m_x; }
4762  typename tuple_type<A18>::const_reference get() const { return m_x; }
4763 private:
4764  typename tuple_type<A18>::reference m_x;
4765 };
4766 
4767 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4768 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 19> : tuple_type<A19> {
4770  typename tuple_type<A19>::reference get() { return m_x; }
4771  typename tuple_type<A19>::const_reference get() const { return m_x; }
4772 private:
4773  typename tuple_type<A19>::reference m_x;
4774 };
4775 
4776 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4777 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 20> : tuple_type<A20> {
4779  typename tuple_type<A20>::reference get() { return m_x; }
4780  typename tuple_type<A20>::const_reference get() const { return m_x; }
4781 private:
4782  typename tuple_type<A20>::reference m_x;
4783 };
4784 
4785 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4786 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 21> : tuple_type<A21> {
4788  typename tuple_type<A21>::reference get() { return m_x; }
4789  typename tuple_type<A21>::const_reference get() const { return m_x; }
4790 private:
4791  typename tuple_type<A21>::reference m_x;
4792 };
4793 
4794 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4795 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 22> : tuple_type<A22> {
4797  typename tuple_type<A22>::reference get() { return m_x; }
4798  typename tuple_type<A22>::const_reference get() const { return m_x; }
4799 private:
4800  typename tuple_type<A22>::reference m_x;
4801 };
4802 
4803 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4804 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 23> : tuple_type<A23> {
4806  typename tuple_type<A23>::reference get() { return m_x; }
4807  typename tuple_type<A23>::const_reference get() const { return m_x; }
4808 private:
4809  typename tuple_type<A23>::reference m_x;
4810 };
4811 
4812 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4813 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 24> : tuple_type<A24> {
4815  typename tuple_type<A24>::reference get() { return m_x; }
4816  typename tuple_type<A24>::const_reference get() const { return m_x; }
4817 private:
4818  typename tuple_type<A24>::reference m_x;
4819 };
4820 
4821 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4822 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 25> : tuple_type<A25> {
4824  typename tuple_type<A25>::reference get() { return m_x; }
4825  typename tuple_type<A25>::const_reference get() const { return m_x; }
4826 private:
4827  typename tuple_type<A25>::reference m_x;
4828 };
4829 
4830 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4831 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 26> : tuple_type<A26> {
4833  typename tuple_type<A26>::reference get() { return m_x; }
4834  typename tuple_type<A26>::const_reference get() const { return m_x; }
4835 private:
4836  typename tuple_type<A26>::reference m_x;
4837 };
4838 
4839 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4840 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 27> : tuple_type<A27> {
4842  typename tuple_type<A27>::reference get() { return m_x; }
4843  typename tuple_type<A27>::const_reference get() const { return m_x; }
4844 private:
4845  typename tuple_type<A27>::reference m_x;
4846 };
4847 
4848 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4849 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 28> : tuple_type<A28> {
4851  typename tuple_type<A28>::reference get() { return m_x; }
4852  typename tuple_type<A28>::const_reference get() const { return m_x; }
4853 private:
4854  typename tuple_type<A28>::reference m_x;
4855 };
4856 
4857 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4858 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 29> : tuple_type<A29> {
4860  typename tuple_type<A29>::reference get() { return m_x; }
4861  typename tuple_type<A29>::const_reference get() const { return m_x; }
4862 private:
4863  typename tuple_type<A29>::reference m_x;
4864 };
4865 
4866 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4867 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 30> : tuple_type<A30> {
4869  typename tuple_type<A30>::reference get() { return m_x; }
4870  typename tuple_type<A30>::const_reference get() const { return m_x; }
4871 private:
4872  typename tuple_type<A30>::reference m_x;
4873 };
4874 
4875 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
4876 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 31> : tuple_type<A31> {
4878  typename tuple_type<A31>::reference get() { return m_x; }
4879  typename tuple_type<A31>::const_reference get() const { return m_x; }
4880 private:
4881  typename tuple_type<A31>::reference m_x;
4882 };
4883 
4884 
4885 
4886 
4887 
4888 template <typename A0>
4889 struct const_tuple_element<tuple<A0>, 0> : tuple_type<A0> {
4890  const_tuple_element(const tuple<A0>& x) : m_x(x.a0) {}
4891  typename tuple_type<A0>::const_reference get() const { return m_x; }
4892 private:
4893  typename tuple_type<A0>::const_reference m_x;
4894 };
4895 
4896 
4897 
4898 template <typename A0, typename A1>
4899 struct const_tuple_element<tuple<A0, A1>, 0> : tuple_type<A0> {
4900  const_tuple_element(const tuple<A0, A1>& x) : m_x(x.a0) {}
4901  typename tuple_type<A0>::const_reference get() const { return m_x; }
4902 private:
4903  typename tuple_type<A0>::const_reference m_x;
4904 };
4905 
4906 template <typename A0, typename A1>
4907 struct const_tuple_element<tuple<A0, A1>, 1> : tuple_type<A1> {
4908  const_tuple_element(const tuple<A0, A1>& x) : m_x(x.a1) {}
4909  typename tuple_type<A1>::const_reference get() const { return m_x; }
4910 private:
4911  typename tuple_type<A1>::const_reference m_x;
4912 };
4913 
4914 
4915 
4916 template <typename A0, typename A1, typename A2>
4917 struct const_tuple_element<tuple<A0, A1, A2>, 0> : tuple_type<A0> {
4918  const_tuple_element(const tuple<A0, A1, A2>& x) : m_x(x.a0) {}
4919  typename tuple_type<A0>::const_reference get() const { return m_x; }
4920 private:
4921  typename tuple_type<A0>::const_reference m_x;
4922 };
4923 
4924 template <typename A0, typename A1, typename A2>
4925 struct const_tuple_element<tuple<A0, A1, A2>, 1> : tuple_type<A1> {
4926  const_tuple_element(const tuple<A0, A1, A2>& x) : m_x(x.a1) {}
4927  typename tuple_type<A1>::const_reference get() const { return m_x; }
4928 private:
4929  typename tuple_type<A1>::const_reference m_x;
4930 };
4931 
4932 template <typename A0, typename A1, typename A2>
4933 struct const_tuple_element<tuple<A0, A1, A2>, 2> : tuple_type<A2> {
4934  const_tuple_element(const tuple<A0, A1, A2>& x) : m_x(x.a2) {}
4935  typename tuple_type<A2>::const_reference get() const { return m_x; }
4936 private:
4937  typename tuple_type<A2>::const_reference m_x;
4938 };
4939 
4940 
4941 
4942 template <typename A0, typename A1, typename A2, typename A3>
4943 struct const_tuple_element<tuple<A0, A1, A2, A3>, 0> : tuple_type<A0> {
4944  const_tuple_element(const tuple<A0, A1, A2, A3>& x) : m_x(x.a0) {}
4945  typename tuple_type<A0>::const_reference get() const { return m_x; }
4946 private:
4947  typename tuple_type<A0>::const_reference m_x;
4948 };
4949 
4950 template <typename A0, typename A1, typename A2, typename A3>
4951 struct const_tuple_element<tuple<A0, A1, A2, A3>, 1> : tuple_type<A1> {
4952  const_tuple_element(const tuple<A0, A1, A2, A3>& x) : m_x(x.a1) {}
4953  typename tuple_type<A1>::const_reference get() const { return m_x; }
4954 private:
4955  typename tuple_type<A1>::const_reference m_x;
4956 };
4957 
4958 template <typename A0, typename A1, typename A2, typename A3>
4959 struct const_tuple_element<tuple<A0, A1, A2, A3>, 2> : tuple_type<A2> {
4960  const_tuple_element(const tuple<A0, A1, A2, A3>& x) : m_x(x.a2) {}
4961  typename tuple_type<A2>::const_reference get() const { return m_x; }
4962 private:
4963  typename tuple_type<A2>::const_reference m_x;
4964 };
4965 
4966 template <typename A0, typename A1, typename A2, typename A3>
4967 struct const_tuple_element<tuple<A0, A1, A2, A3>, 3> : tuple_type<A3> {
4968  const_tuple_element(const tuple<A0, A1, A2, A3>& x) : m_x(x.a3) {}
4969  typename tuple_type<A3>::const_reference get() const { return m_x; }
4970 private:
4971  typename tuple_type<A3>::const_reference m_x;
4972 };
4973 
4974 
4975 
4976 template <typename A0, typename A1, typename A2, typename A3, typename A4>
4977 struct const_tuple_element<tuple<A0, A1, A2, A3, A4>, 0> : tuple_type<A0> {
4978  const_tuple_element(const tuple<A0, A1, A2, A3, A4>& x) : m_x(x.a0) {}
4979  typename tuple_type<A0>::const_reference get() const { return m_x; }
4980 private:
4981  typename tuple_type<A0>::const_reference m_x;
4982 };
4983 
4984 template <typename A0, typename A1, typename A2, typename A3, typename A4>
4985 struct const_tuple_element<tuple<A0, A1, A2, A3, A4>, 1> : tuple_type<A1> {
4986  const_tuple_element(const tuple<A0, A1, A2, A3, A4>& x) : m_x(x.a1) {}
4987  typename tuple_type<A1>::const_reference get() const { return m_x; }
4988 private:
4989  typename tuple_type<A1>::const_reference m_x;
4990 };
4991 
4992 template <typename A0, typename A1, typename A2, typename A3, typename A4>
4993 struct const_tuple_element<tuple<A0, A1, A2, A3, A4>, 2> : tuple_type<A2> {
4994  const_tuple_element(const tuple<A0, A1, A2, A3, A4>& x) : m_x(x.a2) {}
4995  typename tuple_type<A2>::const_reference get() const { return m_x; }
4996 private:
4997  typename tuple_type<A2>::const_reference m_x;
4998 };
4999 
5000 template <typename A0, typename A1, typename A2, typename A3, typename A4>
5001 struct const_tuple_element<tuple<A0, A1, A2, A3, A4>, 3> : tuple_type<A3> {
5002  const_tuple_element(const tuple<A0, A1, A2, A3, A4>& x) : m_x(x.a3) {}
5003  typename tuple_type<A3>::const_reference get() const { return m_x; }
5004 private:
5005  typename tuple_type<A3>::const_reference m_x;
5006 };
5007 
5008 template <typename A0, typename A1, typename A2, typename A3, typename A4>
5009 struct const_tuple_element<tuple<A0, A1, A2, A3, A4>, 4> : tuple_type<A4> {
5010  const_tuple_element(const tuple<A0, A1, A2, A3, A4>& x) : m_x(x.a4) {}
5011  typename tuple_type<A4>::const_reference get() const { return m_x; }
5012 private:
5013  typename tuple_type<A4>::const_reference m_x;
5014 };
5015 
5016 
5017 
5018 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
5019 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 0> : tuple_type<A0> {
5020  const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a0) {}
5021  typename tuple_type<A0>::const_reference get() const { return m_x; }
5022 private:
5023  typename tuple_type<A0>::const_reference m_x;
5024 };
5025 
5026 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
5027 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 1> : tuple_type<A1> {
5028  const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a1) {}
5029  typename tuple_type<A1>::const_reference get() const { return m_x; }
5030 private:
5031  typename tuple_type<A1>::const_reference m_x;
5032 };
5033 
5034 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
5035 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 2> : tuple_type<A2> {
5036  const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a2) {}
5037  typename tuple_type<A2>::const_reference get() const { return m_x; }
5038 private:
5039  typename tuple_type<A2>::const_reference m_x;
5040 };
5041 
5042 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
5043 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 3> : tuple_type<A3> {
5044  const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a3) {}
5045  typename tuple_type<A3>::const_reference get() const { return m_x; }
5046 private:
5047  typename tuple_type<A3>::const_reference m_x;
5048 };
5049 
5050 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
5051 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 4> : tuple_type<A4> {
5052  const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a4) {}
5053  typename tuple_type<A4>::const_reference get() const { return m_x; }
5054 private:
5055  typename tuple_type<A4>::const_reference m_x;
5056 };
5057 
5058 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
5059 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 5> : tuple_type<A5> {
5060  const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a5) {}
5061  typename tuple_type<A5>::const_reference get() const { return m_x; }
5062 private:
5063  typename tuple_type<A5>::const_reference m_x;
5064 };
5065 
5066 
5067 
5068 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
5069 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 0> : tuple_type<A0> {
5071  typename tuple_type<A0>::const_reference get() const { return m_x; }
5072 private:
5073  typename tuple_type<A0>::const_reference m_x;
5074 };
5075 
5076 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
5077 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 1> : tuple_type<A1> {
5079  typename tuple_type<A1>::const_reference get() const { return m_x; }
5080 private:
5081  typename tuple_type<A1>::const_reference m_x;
5082 };
5083 
5084 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
5085 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 2> : tuple_type<A2> {
5087  typename tuple_type<A2>::const_reference get() const { return m_x; }
5088 private:
5089  typename tuple_type<A2>::const_reference m_x;
5090 };
5091 
5092 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
5093 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 3> : tuple_type<A3> {
5095  typename tuple_type<A3>::const_reference get() const { return m_x; }
5096 private:
5097  typename tuple_type<A3>::const_reference m_x;
5098 };
5099 
5100 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
5101 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 4> : tuple_type<A4> {
5103  typename tuple_type<A4>::const_reference get() const { return m_x; }
5104 private:
5105  typename tuple_type<A4>::const_reference m_x;
5106 };
5107 
5108 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
5109 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 5> : tuple_type<A5> {
5111  typename tuple_type<A5>::const_reference get() const { return m_x; }
5112 private:
5113  typename tuple_type<A5>::const_reference m_x;
5114 };
5115 
5116 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
5117 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 6> : tuple_type<A6> {
5119  typename tuple_type<A6>::const_reference get() const { return m_x; }
5120 private:
5121  typename tuple_type<A6>::const_reference m_x;
5122 };
5123 
5124 
5125 
5126 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
5127 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 0> : tuple_type<A0> {
5129  typename tuple_type<A0>::const_reference get() const { return m_x; }
5130 private:
5131  typename tuple_type<A0>::const_reference m_x;
5132 };
5133 
5134 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
5135 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 1> : tuple_type<A1> {
5137  typename tuple_type<A1>::const_reference get() const { return m_x; }
5138 private:
5139  typename tuple_type<A1>::const_reference m_x;
5140 };
5141 
5142 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
5143 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 2> : tuple_type<A2> {
5145  typename tuple_type<A2>::const_reference get() const { return m_x; }
5146 private:
5147  typename tuple_type<A2>::const_reference m_x;
5148 };
5149 
5150 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
5151 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 3> : tuple_type<A3> {
5153  typename tuple_type<A3>::const_reference get() const { return m_x; }
5154 private:
5155  typename tuple_type<A3>::const_reference m_x;
5156 };
5157 
5158 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
5159 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 4> : tuple_type<A4> {
5161  typename tuple_type<A4>::const_reference get() const { return m_x; }
5162 private:
5163  typename tuple_type<A4>::const_reference m_x;
5164 };
5165 
5166 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
5167 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 5> : tuple_type<A5> {
5169  typename tuple_type<A5>::const_reference get() const { return m_x; }
5170 private:
5171  typename tuple_type<A5>::const_reference m_x;
5172 };
5173 
5174 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
5175 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 6> : tuple_type<A6> {
5177  typename tuple_type<A6>::const_reference get() const { return m_x; }
5178 private:
5179  typename tuple_type<A6>::const_reference m_x;
5180 };
5181 
5182 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
5183 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 7> : tuple_type<A7> {
5185  typename tuple_type<A7>::const_reference get() const { return m_x; }
5186 private:
5187  typename tuple_type<A7>::const_reference m_x;
5188 };
5189 
5190 
5191 
5192 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
5193 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 0> : tuple_type<A0> {
5195  typename tuple_type<A0>::const_reference get() const { return m_x; }
5196 private:
5197  typename tuple_type<A0>::const_reference m_x;
5198 };
5199 
5200 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
5201 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 1> : tuple_type<A1> {
5203  typename tuple_type<A1>::const_reference get() const { return m_x; }
5204 private:
5205  typename tuple_type<A1>::const_reference m_x;
5206 };
5207 
5208 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
5209 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 2> : tuple_type<A2> {
5211  typename tuple_type<A2>::const_reference get() const { return m_x; }
5212 private:
5213  typename tuple_type<A2>::const_reference m_x;
5214 };
5215 
5216 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
5217 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 3> : tuple_type<A3> {
5219  typename tuple_type<A3>::const_reference get() const { return m_x; }
5220 private:
5221  typename tuple_type<A3>::const_reference m_x;
5222 };
5223 
5224 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
5225 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 4> : tuple_type<A4> {
5227  typename tuple_type<A4>::const_reference get() const { return m_x; }
5228 private:
5229  typename tuple_type<A4>::const_reference m_x;
5230 };
5231 
5232 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
5233 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 5> : tuple_type<A5> {
5235  typename tuple_type<A5>::const_reference get() const { return m_x; }
5236 private:
5237  typename tuple_type<A5>::const_reference m_x;
5238 };
5239 
5240 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
5241 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 6> : tuple_type<A6> {
5243  typename tuple_type<A6>::const_reference get() const { return m_x; }
5244 private:
5245  typename tuple_type<A6>::const_reference m_x;
5246 };
5247 
5248 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
5249 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 7> : tuple_type<A7> {
5251  typename tuple_type<A7>::const_reference get() const { return m_x; }
5252 private:
5253  typename tuple_type<A7>::const_reference m_x;
5254 };
5255 
5256 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
5257 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 8> : tuple_type<A8> {
5259  typename tuple_type<A8>::const_reference get() const { return m_x; }
5260 private:
5261  typename tuple_type<A8>::const_reference m_x;
5262 };
5263 
5264 
5265 
5266 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
5267 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 0> : tuple_type<A0> {
5269  typename tuple_type<A0>::const_reference get() const { return m_x; }
5270 private:
5271  typename tuple_type<A0>::const_reference m_x;
5272 };
5273 
5274 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
5275 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 1> : tuple_type<A1> {
5277  typename tuple_type<A1>::const_reference get() const { return m_x; }
5278 private:
5279  typename tuple_type<A1>::const_reference m_x;
5280 };
5281 
5282 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
5283 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 2> : tuple_type<A2> {
5285  typename tuple_type<A2>::const_reference get() const { return m_x; }
5286 private:
5287  typename tuple_type<A2>::const_reference m_x;
5288 };
5289 
5290 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
5291 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 3> : tuple_type<A3> {
5293  typename tuple_type<A3>::const_reference get() const { return m_x; }
5294 private:
5295  typename tuple_type<A3>::const_reference m_x;
5296 };
5297 
5298 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
5299 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 4> : tuple_type<A4> {
5301  typename tuple_type<A4>::const_reference get() const { return m_x; }
5302 private:
5303  typename tuple_type<A4>::const_reference m_x;
5304 };
5305 
5306 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
5307 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 5> : tuple_type<A5> {
5309  typename tuple_type<A5>::const_reference get() const { return m_x; }
5310 private:
5311  typename tuple_type<A5>::const_reference m_x;
5312 };
5313 
5314 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
5315 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 6> : tuple_type<A6> {
5317  typename tuple_type<A6>::const_reference get() const { return m_x; }
5318 private:
5319  typename tuple_type<A6>::const_reference m_x;
5320 };
5321 
5322 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
5323 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 7> : tuple_type<A7> {
5325  typename tuple_type<A7>::const_reference get() const { return m_x; }
5326 private:
5327  typename tuple_type<A7>::const_reference m_x;
5328 };
5329 
5330 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
5331 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 8> : tuple_type<A8> {
5333  typename tuple_type<A8>::const_reference get() const { return m_x; }
5334 private:
5335  typename tuple_type<A8>::const_reference m_x;
5336 };
5337 
5338 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
5339 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 9> : tuple_type<A9> {
5341  typename tuple_type<A9>::const_reference get() const { return m_x; }
5342 private:
5343  typename tuple_type<A9>::const_reference m_x;
5344 };
5345 
5346 
5347 
5348 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
5349 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 0> : tuple_type<A0> {
5351  typename tuple_type<A0>::const_reference get() const { return m_x; }
5352 private:
5353  typename tuple_type<A0>::const_reference m_x;
5354 };
5355 
5356 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
5357 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 1> : tuple_type<A1> {
5359  typename tuple_type<A1>::const_reference get() const { return m_x; }
5360 private:
5361  typename tuple_type<A1>::const_reference m_x;
5362 };
5363 
5364 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
5365 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 2> : tuple_type<A2> {
5367  typename tuple_type<A2>::const_reference get() const { return m_x; }
5368 private:
5369  typename tuple_type<A2>::const_reference m_x;
5370 };
5371 
5372 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
5373 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 3> : tuple_type<A3> {
5375  typename tuple_type<A3>::const_reference get() const { return m_x; }
5376 private:
5377  typename tuple_type<A3>::const_reference m_x;
5378 };
5379 
5380 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
5381 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 4> : tuple_type<A4> {
5383  typename tuple_type<A4>::const_reference get() const { return m_x; }
5384 private:
5385  typename tuple_type<A4>::const_reference m_x;
5386 };
5387 
5388 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
5389 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 5> : tuple_type<A5> {
5391  typename tuple_type<A5>::const_reference get() const { return m_x; }
5392 private:
5393  typename tuple_type<A5>::const_reference m_x;
5394 };
5395 
5396 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
5397 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 6> : tuple_type<A6> {
5399  typename tuple_type<A6>::const_reference get() const { return m_x; }
5400 private:
5401  typename tuple_type<A6>::const_reference m_x;
5402 };
5403 
5404 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
5405 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 7> : tuple_type<A7> {
5407  typename tuple_type<A7>::const_reference get() const { return m_x; }
5408 private:
5409  typename tuple_type<A7>::const_reference m_x;
5410 };
5411 
5412 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
5413 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 8> : tuple_type<A8> {
5415  typename tuple_type<A8>::const_reference get() const { return m_x; }
5416 private:
5417  typename tuple_type<A8>::const_reference m_x;
5418 };
5419 
5420 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
5421 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 9> : tuple_type<A9> {
5423  typename tuple_type<A9>::const_reference get() const { return m_x; }
5424 private:
5425  typename tuple_type<A9>::const_reference m_x;
5426 };
5427 
5428 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
5429 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 10> : tuple_type<A10> {
5431  typename tuple_type<A10>::const_reference get() const { return m_x; }
5432 private:
5433  typename tuple_type<A10>::const_reference m_x;
5434 };
5435 
5436 
5437 
5438 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5439 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 0> : tuple_type<A0> {
5441  typename tuple_type<A0>::const_reference get() const { return m_x; }
5442 private:
5443  typename tuple_type<A0>::const_reference m_x;
5444 };
5445 
5446 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5447 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 1> : tuple_type<A1> {
5449  typename tuple_type<A1>::const_reference get() const { return m_x; }
5450 private:
5451  typename tuple_type<A1>::const_reference m_x;
5452 };
5453 
5454 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5455 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 2> : tuple_type<A2> {
5457  typename tuple_type<A2>::const_reference get() const { return m_x; }
5458 private:
5459  typename tuple_type<A2>::const_reference m_x;
5460 };
5461 
5462 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5463 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 3> : tuple_type<A3> {
5465  typename tuple_type<A3>::const_reference get() const { return m_x; }
5466 private:
5467  typename tuple_type<A3>::const_reference m_x;
5468 };
5469 
5470 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5471 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 4> : tuple_type<A4> {
5473  typename tuple_type<A4>::const_reference get() const { return m_x; }
5474 private:
5475  typename tuple_type<A4>::const_reference m_x;
5476 };
5477 
5478 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5479 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 5> : tuple_type<A5> {
5481  typename tuple_type<A5>::const_reference get() const { return m_x; }
5482 private:
5483  typename tuple_type<A5>::const_reference m_x;
5484 };
5485 
5486 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5487 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 6> : tuple_type<A6> {
5489  typename tuple_type<A6>::const_reference get() const { return m_x; }
5490 private:
5491  typename tuple_type<A6>::const_reference m_x;
5492 };
5493 
5494 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5495 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 7> : tuple_type<A7> {
5497  typename tuple_type<A7>::const_reference get() const { return m_x; }
5498 private:
5499  typename tuple_type<A7>::const_reference m_x;
5500 };
5501 
5502 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5503 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 8> : tuple_type<A8> {
5505  typename tuple_type<A8>::const_reference get() const { return m_x; }
5506 private:
5507  typename tuple_type<A8>::const_reference m_x;
5508 };
5509 
5510 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5511 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 9> : tuple_type<A9> {
5513  typename tuple_type<A9>::const_reference get() const { return m_x; }
5514 private:
5515  typename tuple_type<A9>::const_reference m_x;
5516 };
5517 
5518 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5519 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 10> : tuple_type<A10> {
5521  typename tuple_type<A10>::const_reference get() const { return m_x; }
5522 private:
5523  typename tuple_type<A10>::const_reference m_x;
5524 };
5525 
5526 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5527 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 11> : tuple_type<A11> {
5529  typename tuple_type<A11>::const_reference get() const { return m_x; }
5530 private:
5531  typename tuple_type<A11>::const_reference m_x;
5532 };
5533 
5534 
5535 
5536 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5537 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 0> : tuple_type<A0> {
5539  typename tuple_type<A0>::const_reference get() const { return m_x; }
5540 private:
5541  typename tuple_type<A0>::const_reference m_x;
5542 };
5543 
5544 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5545 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 1> : tuple_type<A1> {
5547  typename tuple_type<A1>::const_reference get() const { return m_x; }
5548 private:
5549  typename tuple_type<A1>::const_reference m_x;
5550 };
5551 
5552 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5553 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 2> : tuple_type<A2> {
5555  typename tuple_type<A2>::const_reference get() const { return m_x; }
5556 private:
5557  typename tuple_type<A2>::const_reference m_x;
5558 };
5559 
5560 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5561 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 3> : tuple_type<A3> {
5563  typename tuple_type<A3>::const_reference get() const { return m_x; }
5564 private:
5565  typename tuple_type<A3>::const_reference m_x;
5566 };
5567 
5568 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5569 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 4> : tuple_type<A4> {
5571  typename tuple_type<A4>::const_reference get() const { return m_x; }
5572 private:
5573  typename tuple_type<A4>::const_reference m_x;
5574 };
5575 
5576 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5577 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 5> : tuple_type<A5> {
5579  typename tuple_type<A5>::const_reference get() const { return m_x; }
5580 private:
5581  typename tuple_type<A5>::const_reference m_x;
5582 };
5583 
5584 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5585 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 6> : tuple_type<A6> {
5587  typename tuple_type<A6>::const_reference get() const { return m_x; }
5588 private:
5589  typename tuple_type<A6>::const_reference m_x;
5590 };
5591 
5592 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5593 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 7> : tuple_type<A7> {
5595  typename tuple_type<A7>::const_reference get() const { return m_x; }
5596 private:
5597  typename tuple_type<A7>::const_reference m_x;
5598 };
5599 
5600 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5601 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 8> : tuple_type<A8> {
5603  typename tuple_type<A8>::const_reference get() const { return m_x; }
5604 private:
5605  typename tuple_type<A8>::const_reference m_x;
5606 };
5607 
5608 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5609 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 9> : tuple_type<A9> {
5611  typename tuple_type<A9>::const_reference get() const { return m_x; }
5612 private:
5613  typename tuple_type<A9>::const_reference m_x;
5614 };
5615 
5616 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5617 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 10> : tuple_type<A10> {
5619  typename tuple_type<A10>::const_reference get() const { return m_x; }
5620 private:
5621  typename tuple_type<A10>::const_reference m_x;
5622 };
5623 
5624 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5625 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 11> : tuple_type<A11> {
5627  typename tuple_type<A11>::const_reference get() const { return m_x; }
5628 private:
5629  typename tuple_type<A11>::const_reference m_x;
5630 };
5631 
5632 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5633 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 12> : tuple_type<A12> {
5635  typename tuple_type<A12>::const_reference get() const { return m_x; }
5636 private:
5637  typename tuple_type<A12>::const_reference m_x;
5638 };
5639 
5640 
5641 
5642 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5643 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 0> : tuple_type<A0> {
5645  typename tuple_type<A0>::const_reference get() const { return m_x; }
5646 private:
5647  typename tuple_type<A0>::const_reference m_x;
5648 };
5649 
5650 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5651 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 1> : tuple_type<A1> {
5653  typename tuple_type<A1>::const_reference get() const { return m_x; }
5654 private:
5655  typename tuple_type<A1>::const_reference m_x;
5656 };
5657 
5658 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5659 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 2> : tuple_type<A2> {
5661  typename tuple_type<A2>::const_reference get() const { return m_x; }
5662 private:
5663  typename tuple_type<A2>::const_reference m_x;
5664 };
5665 
5666 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5667 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 3> : tuple_type<A3> {
5669  typename tuple_type<A3>::const_reference get() const { return m_x; }
5670 private:
5671  typename tuple_type<A3>::const_reference m_x;
5672 };
5673 
5674 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5675 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 4> : tuple_type<A4> {
5677  typename tuple_type<A4>::const_reference get() const { return m_x; }
5678 private:
5679  typename tuple_type<A4>::const_reference m_x;
5680 };
5681 
5682 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5683 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 5> : tuple_type<A5> {
5685  typename tuple_type<A5>::const_reference get() const { return m_x; }
5686 private:
5687  typename tuple_type<A5>::const_reference m_x;
5688 };
5689 
5690 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5691 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 6> : tuple_type<A6> {
5693  typename tuple_type<A6>::const_reference get() const { return m_x; }
5694 private:
5695  typename tuple_type<A6>::const_reference m_x;
5696 };
5697 
5698 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5699 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 7> : tuple_type<A7> {
5701  typename tuple_type<A7>::const_reference get() const { return m_x; }
5702 private:
5703  typename tuple_type<A7>::const_reference m_x;
5704 };
5705 
5706 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5707 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 8> : tuple_type<A8> {
5709  typename tuple_type<A8>::const_reference get() const { return m_x; }
5710 private:
5711  typename tuple_type<A8>::const_reference m_x;
5712 };
5713 
5714 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5715 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 9> : tuple_type<A9> {
5717  typename tuple_type<A9>::const_reference get() const { return m_x; }
5718 private:
5719  typename tuple_type<A9>::const_reference m_x;
5720 };
5721 
5722 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5723 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 10> : tuple_type<A10> {
5725  typename tuple_type<A10>::const_reference get() const { return m_x; }
5726 private:
5727  typename tuple_type<A10>::const_reference m_x;
5728 };
5729 
5730 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5731 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 11> : tuple_type<A11> {
5733  typename tuple_type<A11>::const_reference get() const { return m_x; }
5734 private:
5735  typename tuple_type<A11>::const_reference m_x;
5736 };
5737 
5738 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5739 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 12> : tuple_type<A12> {
5741  typename tuple_type<A12>::const_reference get() const { return m_x; }
5742 private:
5743  typename tuple_type<A12>::const_reference m_x;
5744 };
5745 
5746 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5747 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 13> : tuple_type<A13> {
5749  typename tuple_type<A13>::const_reference get() const { return m_x; }
5750 private:
5751  typename tuple_type<A13>::const_reference m_x;
5752 };
5753 
5754 
5755 
5756 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5757 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 0> : tuple_type<A0> {
5759  typename tuple_type<A0>::const_reference get() const { return m_x; }
5760 private:
5761  typename tuple_type<A0>::const_reference m_x;
5762 };
5763 
5764 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5765 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 1> : tuple_type<A1> {
5767  typename tuple_type<A1>::const_reference get() const { return m_x; }
5768 private:
5769  typename tuple_type<A1>::const_reference m_x;
5770 };
5771 
5772 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5773 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 2> : tuple_type<A2> {
5775  typename tuple_type<A2>::const_reference get() const { return m_x; }
5776 private:
5777  typename tuple_type<A2>::const_reference m_x;
5778 };
5779 
5780 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5781 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 3> : tuple_type<A3> {
5783  typename tuple_type<A3>::const_reference get() const { return m_x; }
5784 private:
5785  typename tuple_type<A3>::const_reference m_x;
5786 };
5787 
5788 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5789 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 4> : tuple_type<A4> {
5791  typename tuple_type<A4>::const_reference get() const { return m_x; }
5792 private:
5793  typename tuple_type<A4>::const_reference m_x;
5794 };
5795 
5796 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5797 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 5> : tuple_type<A5> {
5799  typename tuple_type<A5>::const_reference get() const { return m_x; }
5800 private:
5801  typename tuple_type<A5>::const_reference m_x;
5802 };
5803 
5804 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5805 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 6> : tuple_type<A6> {
5807  typename tuple_type<A6>::const_reference get() const { return m_x; }
5808 private:
5809  typename tuple_type<A6>::const_reference m_x;
5810 };
5811 
5812 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5813 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 7> : tuple_type<A7> {
5815  typename tuple_type<A7>::const_reference get() const { return m_x; }
5816 private:
5817  typename tuple_type<A7>::const_reference m_x;
5818 };
5819 
5820 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5821 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 8> : tuple_type<A8> {
5823  typename tuple_type<A8>::const_reference get() const { return m_x; }
5824 private:
5825  typename tuple_type<A8>::const_reference m_x;
5826 };
5827 
5828 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5829 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 9> : tuple_type<A9> {
5831  typename tuple_type<A9>::const_reference get() const { return m_x; }
5832 private:
5833  typename tuple_type<A9>::const_reference m_x;
5834 };
5835 
5836 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5837 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 10> : tuple_type<A10> {
5839  typename tuple_type<A10>::const_reference get() const { return m_x; }
5840 private:
5841  typename tuple_type<A10>::const_reference m_x;
5842 };
5843 
5844 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5845 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 11> : tuple_type<A11> {
5847  typename tuple_type<A11>::const_reference get() const { return m_x; }
5848 private:
5849  typename tuple_type<A11>::const_reference m_x;
5850 };
5851 
5852 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5853 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 12> : tuple_type<A12> {
5855  typename tuple_type<A12>::const_reference get() const { return m_x; }
5856 private:
5857  typename tuple_type<A12>::const_reference m_x;
5858 };
5859 
5860 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5861 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 13> : tuple_type<A13> {
5863  typename tuple_type<A13>::const_reference get() const { return m_x; }
5864 private:
5865  typename tuple_type<A13>::const_reference m_x;
5866 };
5867 
5868 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5869 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 14> : tuple_type<A14> {
5871  typename tuple_type<A14>::const_reference get() const { return m_x; }
5872 private:
5873  typename tuple_type<A14>::const_reference m_x;
5874 };
5875 
5876 
5877 
5878 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5879 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 0> : tuple_type<A0> {
5881  typename tuple_type<A0>::const_reference get() const { return m_x; }
5882 private:
5883  typename tuple_type<A0>::const_reference m_x;
5884 };
5885 
5886 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5887 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 1> : tuple_type<A1> {
5889  typename tuple_type<A1>::const_reference get() const { return m_x; }
5890 private:
5891  typename tuple_type<A1>::const_reference m_x;
5892 };
5893 
5894 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5895 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 2> : tuple_type<A2> {
5897  typename tuple_type<A2>::const_reference get() const { return m_x; }
5898 private:
5899  typename tuple_type<A2>::const_reference m_x;
5900 };
5901 
5902 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5903 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 3> : tuple_type<A3> {
5905  typename tuple_type<A3>::const_reference get() const { return m_x; }
5906 private:
5907  typename tuple_type<A3>::const_reference m_x;
5908 };
5909 
5910 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5911 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 4> : tuple_type<A4> {
5913  typename tuple_type<A4>::const_reference get() const { return m_x; }
5914 private:
5915  typename tuple_type<A4>::const_reference m_x;
5916 };
5917 
5918 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5919 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 5> : tuple_type<A5> {
5921  typename tuple_type<A5>::const_reference get() const { return m_x; }
5922 private:
5923  typename tuple_type<A5>::const_reference m_x;
5924 };
5925 
5926 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5927 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 6> : tuple_type<A6> {
5929  typename tuple_type<A6>::const_reference get() const { return m_x; }
5930 private:
5931  typename tuple_type<A6>::const_reference m_x;
5932 };
5933 
5934 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5935 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 7> : tuple_type<A7> {
5937  typename tuple_type<A7>::const_reference get() const { return m_x; }
5938 private:
5939  typename tuple_type<A7>::const_reference m_x;
5940 };
5941 
5942 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5943 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 8> : tuple_type<A8> {
5945  typename tuple_type<A8>::const_reference get() const { return m_x; }
5946 private:
5947  typename tuple_type<A8>::const_reference m_x;
5948 };
5949 
5950 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5951 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 9> : tuple_type<A9> {
5953  typename tuple_type<A9>::const_reference get() const { return m_x; }
5954 private:
5955  typename tuple_type<A9>::const_reference m_x;
5956 };
5957 
5958 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5959 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 10> : tuple_type<A10> {
5961  typename tuple_type<A10>::const_reference get() const { return m_x; }
5962 private:
5963  typename tuple_type<A10>::const_reference m_x;
5964 };
5965 
5966 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5967 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 11> : tuple_type<A11> {
5969  typename tuple_type<A11>::const_reference get() const { return m_x; }
5970 private:
5971  typename tuple_type<A11>::const_reference m_x;
5972 };
5973 
5974 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5975 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 12> : tuple_type<A12> {
5977  typename tuple_type<A12>::const_reference get() const { return m_x; }
5978 private:
5979  typename tuple_type<A12>::const_reference m_x;
5980 };
5981 
5982 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5983 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 13> : tuple_type<A13> {
5985  typename tuple_type<A13>::const_reference get() const { return m_x; }
5986 private:
5987  typename tuple_type<A13>::const_reference m_x;
5988 };
5989 
5990 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5991 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 14> : tuple_type<A14> {
5993  typename tuple_type<A14>::const_reference get() const { return m_x; }
5994 private:
5995  typename tuple_type<A14>::const_reference m_x;
5996 };
5997 
5998 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5999 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 15> : tuple_type<A15> {
6001  typename tuple_type<A15>::const_reference get() const { return m_x; }
6002 private:
6003  typename tuple_type<A15>::const_reference m_x;
6004 };
6005 
6006 
6007 
6008 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6009 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 0> : tuple_type<A0> {
6011  typename tuple_type<A0>::const_reference get() const { return m_x; }
6012 private:
6013  typename tuple_type<A0>::const_reference m_x;
6014 };
6015 
6016 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6017 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 1> : tuple_type<A1> {
6019  typename tuple_type<A1>::const_reference get() const { return m_x; }
6020 private:
6021  typename tuple_type<A1>::const_reference m_x;
6022 };
6023 
6024 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6025 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 2> : tuple_type<A2> {
6027  typename tuple_type<A2>::const_reference get() const { return m_x; }
6028 private:
6029  typename tuple_type<A2>::const_reference m_x;
6030 };
6031 
6032 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6033 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 3> : tuple_type<A3> {
6035  typename tuple_type<A3>::const_reference get() const { return m_x; }
6036 private:
6037  typename tuple_type<A3>::const_reference m_x;
6038 };
6039 
6040 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6041 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 4> : tuple_type<A4> {
6043  typename tuple_type<A4>::const_reference get() const { return m_x; }
6044 private:
6045  typename tuple_type<A4>::const_reference m_x;
6046 };
6047 
6048 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6049 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 5> : tuple_type<A5> {
6051  typename tuple_type<A5>::const_reference get() const { return m_x; }
6052 private:
6053  typename tuple_type<A5>::const_reference m_x;
6054 };
6055 
6056 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6057 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 6> : tuple_type<A6> {
6059  typename tuple_type<A6>::const_reference get() const { return m_x; }
6060 private:
6061  typename tuple_type<A6>::const_reference m_x;
6062 };
6063 
6064 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6065 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 7> : tuple_type<A7> {
6067  typename tuple_type<A7>::const_reference get() const { return m_x; }
6068 private:
6069  typename tuple_type<A7>::const_reference m_x;
6070 };
6071 
6072 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6073 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 8> : tuple_type<A8> {
6075  typename tuple_type<A8>::const_reference get() const { return m_x; }
6076 private:
6077  typename tuple_type<A8>::const_reference m_x;
6078 };
6079 
6080 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6081 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 9> : tuple_type<A9> {
6083  typename tuple_type<A9>::const_reference get() const { return m_x; }
6084 private:
6085  typename tuple_type<A9>::const_reference m_x;
6086 };
6087 
6088 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6089 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 10> : tuple_type<A10> {
6091  typename tuple_type<A10>::const_reference get() const { return m_x; }
6092 private:
6093  typename tuple_type<A10>::const_reference m_x;
6094 };
6095 
6096 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6097 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 11> : tuple_type<A11> {
6099  typename tuple_type<A11>::const_reference get() const { return m_x; }
6100 private:
6101  typename tuple_type<A11>::const_reference m_x;
6102 };
6103 
6104 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6105 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 12> : tuple_type<A12> {
6107  typename tuple_type<A12>::const_reference get() const { return m_x; }
6108 private:
6109  typename tuple_type<A12>::const_reference m_x;
6110 };
6111 
6112 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6113 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 13> : tuple_type<A13> {
6115  typename tuple_type<A13>::const_reference get() const { return m_x; }
6116 private:
6117  typename tuple_type<A13>::const_reference m_x;
6118 };
6119 
6120 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6121 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 14> : tuple_type<A14> {
6123  typename tuple_type<A14>::const_reference get() const { return m_x; }
6124 private:
6125  typename tuple_type<A14>::const_reference m_x;
6126 };
6127 
6128 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6129 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 15> : tuple_type<A15> {
6131  typename tuple_type<A15>::const_reference get() const { return m_x; }
6132 private:
6133  typename tuple_type<A15>::const_reference m_x;
6134 };
6135 
6136 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6137 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, 16> : tuple_type<A16> {
6139  typename tuple_type<A16>::const_reference get() const { return m_x; }
6140 private:
6141  typename tuple_type<A16>::const_reference m_x;
6142 };
6143 
6144 
6145 
6146 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6147 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 0> : tuple_type<A0> {
6149  typename tuple_type<A0>::const_reference get() const { return m_x; }
6150 private:
6151  typename tuple_type<A0>::const_reference m_x;
6152 };
6153 
6154 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6155 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 1> : tuple_type<A1> {
6157  typename tuple_type<A1>::const_reference get() const { return m_x; }
6158 private:
6159  typename tuple_type<A1>::const_reference m_x;
6160 };
6161 
6162 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6163 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 2> : tuple_type<A2> {
6165  typename tuple_type<A2>::const_reference get() const { return m_x; }
6166 private:
6167  typename tuple_type<A2>::const_reference m_x;
6168 };
6169 
6170 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6171 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 3> : tuple_type<A3> {
6173  typename tuple_type<A3>::const_reference get() const { return m_x; }
6174 private:
6175  typename tuple_type<A3>::const_reference m_x;
6176 };
6177 
6178 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6179 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 4> : tuple_type<A4> {
6181  typename tuple_type<A4>::const_reference get() const { return m_x; }
6182 private:
6183  typename tuple_type<A4>::const_reference m_x;
6184 };
6185 
6186 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6187 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 5> : tuple_type<A5> {
6189  typename tuple_type<A5>::const_reference get() const { return m_x; }
6190 private:
6191  typename tuple_type<A5>::const_reference m_x;
6192 };
6193 
6194 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6195 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 6> : tuple_type<A6> {
6197  typename tuple_type<A6>::const_reference get() const { return m_x; }
6198 private:
6199  typename tuple_type<A6>::const_reference m_x;
6200 };
6201 
6202 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6203 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 7> : tuple_type<A7> {
6205  typename tuple_type<A7>::const_reference get() const { return m_x; }
6206 private:
6207  typename tuple_type<A7>::const_reference m_x;
6208 };
6209 
6210 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6211 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 8> : tuple_type<A8> {
6213  typename tuple_type<A8>::const_reference get() const { return m_x; }
6214 private:
6215  typename tuple_type<A8>::const_reference m_x;
6216 };
6217 
6218 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6219 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 9> : tuple_type<A9> {
6221  typename tuple_type<A9>::const_reference get() const { return m_x; }
6222 private:
6223  typename tuple_type<A9>::const_reference m_x;
6224 };
6225 
6226 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6227 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 10> : tuple_type<A10> {
6229  typename tuple_type<A10>::const_reference get() const { return m_x; }
6230 private:
6231  typename tuple_type<A10>::const_reference m_x;
6232 };
6233 
6234 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6235 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 11> : tuple_type<A11> {
6237  typename tuple_type<A11>::const_reference get() const { return m_x; }
6238 private:
6239  typename tuple_type<A11>::const_reference m_x;
6240 };
6241 
6242 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6243 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 12> : tuple_type<A12> {
6245  typename tuple_type<A12>::const_reference get() const { return m_x; }
6246 private:
6247  typename tuple_type<A12>::const_reference m_x;
6248 };
6249 
6250 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6251 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 13> : tuple_type<A13> {
6253  typename tuple_type<A13>::const_reference get() const { return m_x; }
6254 private:
6255  typename tuple_type<A13>::const_reference m_x;
6256 };
6257 
6258 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6259 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 14> : tuple_type<A14> {
6261  typename tuple_type<A14>::const_reference get() const { return m_x; }
6262 private:
6263  typename tuple_type<A14>::const_reference m_x;
6264 };
6265 
6266 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6267 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 15> : tuple_type<A15> {
6269  typename tuple_type<A15>::const_reference get() const { return m_x; }
6270 private:
6271  typename tuple_type<A15>::const_reference m_x;
6272 };
6273 
6274 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6275 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 16> : tuple_type<A16> {
6277  typename tuple_type<A16>::const_reference get() const { return m_x; }
6278 private:
6279  typename tuple_type<A16>::const_reference m_x;
6280 };
6281 
6282 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6283 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, 17> : tuple_type<A17> {
6285  typename tuple_type<A17>::const_reference get() const { return m_x; }
6286 private:
6287  typename tuple_type<A17>::const_reference m_x;
6288 };
6289 
6290 
6291 
6292 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6293 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 0> : tuple_type<A0> {
6295  typename tuple_type<A0>::const_reference get() const { return m_x; }
6296 private:
6297  typename tuple_type<A0>::const_reference m_x;
6298 };
6299 
6300 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6301 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 1> : tuple_type<A1> {
6303  typename tuple_type<A1>::const_reference get() const { return m_x; }
6304 private:
6305  typename tuple_type<A1>::const_reference m_x;
6306 };
6307 
6308 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6309 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 2> : tuple_type<A2> {
6311  typename tuple_type<A2>::const_reference get() const { return m_x; }
6312 private:
6313  typename tuple_type<A2>::const_reference m_x;
6314 };
6315 
6316 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6317 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 3> : tuple_type<A3> {
6319  typename tuple_type<A3>::const_reference get() const { return m_x; }
6320 private:
6321  typename tuple_type<A3>::const_reference m_x;
6322 };
6323 
6324 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6325 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 4> : tuple_type<A4> {
6327  typename tuple_type<A4>::const_reference get() const { return m_x; }
6328 private:
6329  typename tuple_type<A4>::const_reference m_x;
6330 };
6331 
6332 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6333 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 5> : tuple_type<A5> {
6335  typename tuple_type<A5>::const_reference get() const { return m_x; }
6336 private:
6337  typename tuple_type<A5>::const_reference m_x;
6338 };
6339 
6340 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6341 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 6> : tuple_type<A6> {
6343  typename tuple_type<A6>::const_reference get() const { return m_x; }
6344 private:
6345  typename tuple_type<A6>::const_reference m_x;
6346 };
6347 
6348 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6349 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 7> : tuple_type<A7> {
6351  typename tuple_type<A7>::const_reference get() const { return m_x; }
6352 private:
6353  typename tuple_type<A7>::const_reference m_x;
6354 };
6355 
6356 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6357 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 8> : tuple_type<A8> {
6359  typename tuple_type<A8>::const_reference get() const { return m_x; }
6360 private:
6361  typename tuple_type<A8>::const_reference m_x;
6362 };
6363 
6364 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6365 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 9> : tuple_type<A9> {
6367  typename tuple_type<A9>::const_reference get() const { return m_x; }
6368 private:
6369  typename tuple_type<A9>::const_reference m_x;
6370 };
6371 
6372 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6373 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 10> : tuple_type<A10> {
6375  typename tuple_type<A10>::const_reference get() const { return m_x; }
6376 private:
6377  typename tuple_type<A10>::const_reference m_x;
6378 };
6379 
6380 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6381 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 11> : tuple_type<A11> {
6383  typename tuple_type<A11>::const_reference get() const { return m_x; }
6384 private:
6385  typename tuple_type<A11>::const_reference m_x;
6386 };
6387 
6388 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6389 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 12> : tuple_type<A12> {
6391  typename tuple_type<A12>::const_reference get() const { return m_x; }
6392 private:
6393  typename tuple_type<A12>::const_reference m_x;
6394 };
6395 
6396 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6397 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 13> : tuple_type<A13> {
6399  typename tuple_type<A13>::const_reference get() const { return m_x; }
6400 private:
6401  typename tuple_type<A13>::const_reference m_x;
6402 };
6403 
6404 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6405 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 14> : tuple_type<A14> {
6407  typename tuple_type<A14>::const_reference get() const { return m_x; }
6408 private:
6409  typename tuple_type<A14>::const_reference m_x;
6410 };
6411 
6412 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6413 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 15> : tuple_type<A15> {
6415  typename tuple_type<A15>::const_reference get() const { return m_x; }
6416 private:
6417  typename tuple_type<A15>::const_reference m_x;
6418 };
6419 
6420 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6421 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 16> : tuple_type<A16> {
6423  typename tuple_type<A16>::const_reference get() const { return m_x; }
6424 private:
6425  typename tuple_type<A16>::const_reference m_x;
6426 };
6427 
6428 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6429 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 17> : tuple_type<A17> {
6431  typename tuple_type<A17>::const_reference get() const { return m_x; }
6432 private:
6433  typename tuple_type<A17>::const_reference m_x;
6434 };
6435 
6436 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6437 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, 18> : tuple_type<A18> {
6439  typename tuple_type<A18>::const_reference get() const { return m_x; }
6440 private:
6441  typename tuple_type<A18>::const_reference m_x;
6442 };
6443 
6444 
6445 
6446 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6447 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 0> : tuple_type<A0> {
6449  typename tuple_type<A0>::const_reference get() const { return m_x; }
6450 private:
6451  typename tuple_type<A0>::const_reference m_x;
6452 };
6453 
6454 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6455 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 1> : tuple_type<A1> {
6457  typename tuple_type<A1>::const_reference get() const { return m_x; }
6458 private:
6459  typename tuple_type<A1>::const_reference m_x;
6460 };
6461 
6462 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6463 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 2> : tuple_type<A2> {
6465  typename tuple_type<A2>::const_reference get() const { return m_x; }
6466 private:
6467  typename tuple_type<A2>::const_reference m_x;
6468 };
6469 
6470 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6471 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 3> : tuple_type<A3> {
6473  typename tuple_type<A3>::const_reference get() const { return m_x; }
6474 private:
6475  typename tuple_type<A3>::const_reference m_x;
6476 };
6477 
6478 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6479 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 4> : tuple_type<A4> {
6481  typename tuple_type<A4>::const_reference get() const { return m_x; }
6482 private:
6483  typename tuple_type<A4>::const_reference m_x;
6484 };
6485 
6486 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6487 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 5> : tuple_type<A5> {
6489  typename tuple_type<A5>::const_reference get() const { return m_x; }
6490 private:
6491  typename tuple_type<A5>::const_reference m_x;
6492 };
6493 
6494 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6495 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 6> : tuple_type<A6> {
6497  typename tuple_type<A6>::const_reference get() const { return m_x; }
6498 private:
6499  typename tuple_type<A6>::const_reference m_x;
6500 };
6501 
6502 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6503 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 7> : tuple_type<A7> {
6505  typename tuple_type<A7>::const_reference get() const { return m_x; }
6506 private:
6507  typename tuple_type<A7>::const_reference m_x;
6508 };
6509 
6510 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6511 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 8> : tuple_type<A8> {
6513  typename tuple_type<A8>::const_reference get() const { return m_x; }
6514 private:
6515  typename tuple_type<A8>::const_reference m_x;
6516 };
6517 
6518 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6519 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 9> : tuple_type<A9> {
6521  typename tuple_type<A9>::const_reference get() const { return m_x; }
6522 private:
6523  typename tuple_type<A9>::const_reference m_x;
6524 };
6525 
6526 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6527 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 10> : tuple_type<A10> {
6529  typename tuple_type<A10>::const_reference get() const { return m_x; }
6530 private:
6531  typename tuple_type<A10>::const_reference m_x;
6532 };
6533 
6534 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6535 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 11> : tuple_type<A11> {
6537  typename tuple_type<A11>::const_reference get() const { return m_x; }
6538 private:
6539  typename tuple_type<A11>::const_reference m_x;
6540 };
6541 
6542 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6543 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 12> : tuple_type<A12> {
6545  typename tuple_type<A12>::const_reference get() const { return m_x; }
6546 private:
6547  typename tuple_type<A12>::const_reference m_x;
6548 };
6549 
6550 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6551 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 13> : tuple_type<A13> {
6553  typename tuple_type<A13>::const_reference get() const { return m_x; }
6554 private:
6555  typename tuple_type<A13>::const_reference m_x;
6556 };
6557 
6558 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6559 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 14> : tuple_type<A14> {
6561  typename tuple_type<A14>::const_reference get() const { return m_x; }
6562 private:
6563  typename tuple_type<A14>::const_reference m_x;
6564 };
6565 
6566 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6567 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 15> : tuple_type<A15> {
6569  typename tuple_type<A15>::const_reference get() const { return m_x; }
6570 private:
6571  typename tuple_type<A15>::const_reference m_x;
6572 };
6573 
6574 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6575 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 16> : tuple_type<A16> {
6577  typename tuple_type<A16>::const_reference get() const { return m_x; }
6578 private:
6579  typename tuple_type<A16>::const_reference m_x;
6580 };
6581 
6582 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6583 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 17> : tuple_type<A17> {
6585  typename tuple_type<A17>::const_reference get() const { return m_x; }
6586 private:
6587  typename tuple_type<A17>::const_reference m_x;
6588 };
6589 
6590 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6591 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 18> : tuple_type<A18> {
6593  typename tuple_type<A18>::const_reference get() const { return m_x; }
6594 private:
6595  typename tuple_type<A18>::const_reference m_x;
6596 };
6597 
6598 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6599 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, 19> : tuple_type<A19> {
6601  typename tuple_type<A19>::const_reference get() const { return m_x; }
6602 private:
6603  typename tuple_type<A19>::const_reference m_x;
6604 };
6605 
6606 
6607 
6608 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6609 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 0> : tuple_type<A0> {
6611  typename tuple_type<A0>::const_reference get() const { return m_x; }
6612 private:
6613  typename tuple_type<A0>::const_reference m_x;
6614 };
6615 
6616 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6617 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 1> : tuple_type<A1> {
6619  typename tuple_type<A1>::const_reference get() const { return m_x; }
6620 private:
6621  typename tuple_type<A1>::const_reference m_x;
6622 };
6623 
6624 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6625 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 2> : tuple_type<A2> {
6627  typename tuple_type<A2>::const_reference get() const { return m_x; }
6628 private:
6629  typename tuple_type<A2>::const_reference m_x;
6630 };
6631 
6632 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6633 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 3> : tuple_type<A3> {
6635  typename tuple_type<A3>::const_reference get() const { return m_x; }
6636 private:
6637  typename tuple_type<A3>::const_reference m_x;
6638 };
6639 
6640 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6641 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 4> : tuple_type<A4> {
6643  typename tuple_type<A4>::const_reference get() const { return m_x; }
6644 private:
6645  typename tuple_type<A4>::const_reference m_x;
6646 };
6647 
6648 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6649 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 5> : tuple_type<A5> {
6651  typename tuple_type<A5>::const_reference get() const { return m_x; }
6652 private:
6653  typename tuple_type<A5>::const_reference m_x;
6654 };
6655 
6656 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6657 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 6> : tuple_type<A6> {
6659  typename tuple_type<A6>::const_reference get() const { return m_x; }
6660 private:
6661  typename tuple_type<A6>::const_reference m_x;
6662 };
6663 
6664 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6665 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 7> : tuple_type<A7> {
6667  typename tuple_type<A7>::const_reference get() const { return m_x; }
6668 private:
6669  typename tuple_type<A7>::const_reference m_x;
6670 };
6671 
6672 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6673 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 8> : tuple_type<A8> {
6675  typename tuple_type<A8>::const_reference get() const { return m_x; }
6676 private:
6677  typename tuple_type<A8>::const_reference m_x;
6678 };
6679 
6680 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6681 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 9> : tuple_type<A9> {
6683  typename tuple_type<A9>::const_reference get() const { return m_x; }
6684 private:
6685  typename tuple_type<A9>::const_reference m_x;
6686 };
6687 
6688 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6689 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 10> : tuple_type<A10> {
6691  typename tuple_type<A10>::const_reference get() const { return m_x; }
6692 private:
6693  typename tuple_type<A10>::const_reference m_x;
6694 };
6695 
6696 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6697 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 11> : tuple_type<A11> {
6699  typename tuple_type<A11>::const_reference get() const { return m_x; }
6700 private:
6701  typename tuple_type<A11>::const_reference m_x;
6702 };
6703 
6704 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6705 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 12> : tuple_type<A12> {
6707  typename tuple_type<A12>::const_reference get() const { return m_x; }
6708 private:
6709  typename tuple_type<A12>::const_reference m_x;
6710 };
6711 
6712 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6713 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 13> : tuple_type<A13> {
6715  typename tuple_type<A13>::const_reference get() const { return m_x; }
6716 private:
6717  typename tuple_type<A13>::const_reference m_x;
6718 };
6719 
6720 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6721 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 14> : tuple_type<A14> {
6723  typename tuple_type<A14>::const_reference get() const { return m_x; }
6724 private:
6725  typename tuple_type<A14>::const_reference m_x;
6726 };
6727 
6728 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6729 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 15> : tuple_type<A15> {
6731  typename tuple_type<A15>::const_reference get() const { return m_x; }
6732 private:
6733  typename tuple_type<A15>::const_reference m_x;
6734 };
6735 
6736 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6737 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 16> : tuple_type<A16> {
6739  typename tuple_type<A16>::const_reference get() const { return m_x; }
6740 private:
6741  typename tuple_type<A16>::const_reference m_x;
6742 };
6743 
6744 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6745 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 17> : tuple_type<A17> {
6747  typename tuple_type<A17>::const_reference get() const { return m_x; }
6748 private:
6749  typename tuple_type<A17>::const_reference m_x;
6750 };
6751 
6752 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6753 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 18> : tuple_type<A18> {
6755  typename tuple_type<A18>::const_reference get() const { return m_x; }
6756 private:
6757  typename tuple_type<A18>::const_reference m_x;
6758 };
6759 
6760 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6761 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 19> : tuple_type<A19> {
6763  typename tuple_type<A19>::const_reference get() const { return m_x; }
6764 private:
6765  typename tuple_type<A19>::const_reference m_x;
6766 };
6767 
6768 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6769 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, 20> : tuple_type<A20> {
6771  typename tuple_type<A20>::const_reference get() const { return m_x; }
6772 private:
6773  typename tuple_type<A20>::const_reference m_x;
6774 };
6775 
6776 
6777 
6778 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6779 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 0> : tuple_type<A0> {
6781  typename tuple_type<A0>::const_reference get() const { return m_x; }
6782 private:
6783  typename tuple_type<A0>::const_reference m_x;
6784 };
6785 
6786 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6787 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 1> : tuple_type<A1> {
6789  typename tuple_type<A1>::const_reference get() const { return m_x; }
6790 private:
6791  typename tuple_type<A1>::const_reference m_x;
6792 };
6793 
6794 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6795 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 2> : tuple_type<A2> {
6797  typename tuple_type<A2>::const_reference get() const { return m_x; }
6798 private:
6799  typename tuple_type<A2>::const_reference m_x;
6800 };
6801 
6802 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6803 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 3> : tuple_type<A3> {
6805  typename tuple_type<A3>::const_reference get() const { return m_x; }
6806 private:
6807  typename tuple_type<A3>::const_reference m_x;
6808 };
6809 
6810 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6811 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 4> : tuple_type<A4> {
6813  typename tuple_type<A4>::const_reference get() const { return m_x; }
6814 private:
6815  typename tuple_type<A4>::const_reference m_x;
6816 };
6817 
6818 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6819 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 5> : tuple_type<A5> {
6821  typename tuple_type<A5>::const_reference get() const { return m_x; }
6822 private:
6823  typename tuple_type<A5>::const_reference m_x;
6824 };
6825 
6826 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6827 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 6> : tuple_type<A6> {
6829  typename tuple_type<A6>::const_reference get() const { return m_x; }
6830 private:
6831  typename tuple_type<A6>::const_reference m_x;
6832 };
6833 
6834 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6835 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 7> : tuple_type<A7> {
6837  typename tuple_type<A7>::const_reference get() const { return m_x; }
6838 private:
6839  typename tuple_type<A7>::const_reference m_x;
6840 };
6841 
6842 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6843 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 8> : tuple_type<A8> {
6845  typename tuple_type<A8>::const_reference get() const { return m_x; }
6846 private:
6847  typename tuple_type<A8>::const_reference m_x;
6848 };
6849 
6850 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6851 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 9> : tuple_type<A9> {
6853  typename tuple_type<A9>::const_reference get() const { return m_x; }
6854 private:
6855  typename tuple_type<A9>::const_reference m_x;
6856 };
6857 
6858 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6859 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 10> : tuple_type<A10> {
6861  typename tuple_type<A10>::const_reference get() const { return m_x; }
6862 private:
6863  typename tuple_type<A10>::const_reference m_x;
6864 };
6865 
6866 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6867 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 11> : tuple_type<A11> {
6869  typename tuple_type<A11>::const_reference get() const { return m_x; }
6870 private:
6871  typename tuple_type<A11>::const_reference m_x;
6872 };
6873 
6874 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6875 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 12> : tuple_type<A12> {
6877  typename tuple_type<A12>::const_reference get() const { return m_x; }
6878 private:
6879  typename tuple_type<A12>::const_reference m_x;
6880 };
6881 
6882 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6883 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 13> : tuple_type<A13> {
6885  typename tuple_type<A13>::const_reference get() const { return m_x; }
6886 private:
6887  typename tuple_type<A13>::const_reference m_x;
6888 };
6889 
6890 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6891 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 14> : tuple_type<A14> {
6893  typename tuple_type<A14>::const_reference get() const { return m_x; }
6894 private:
6895  typename tuple_type<A14>::const_reference m_x;
6896 };
6897 
6898 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6899 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 15> : tuple_type<A15> {
6901  typename tuple_type<A15>::const_reference get() const { return m_x; }
6902 private:
6903  typename tuple_type<A15>::const_reference m_x;
6904 };
6905 
6906 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6907 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 16> : tuple_type<A16> {
6909  typename tuple_type<A16>::const_reference get() const { return m_x; }
6910 private:
6911  typename tuple_type<A16>::const_reference m_x;
6912 };
6913 
6914 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6915 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 17> : tuple_type<A17> {
6917  typename tuple_type<A17>::const_reference get() const { return m_x; }
6918 private:
6919  typename tuple_type<A17>::const_reference m_x;
6920 };
6921 
6922 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6923 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 18> : tuple_type<A18> {
6925  typename tuple_type<A18>::const_reference get() const { return m_x; }
6926 private:
6927  typename tuple_type<A18>::const_reference m_x;
6928 };
6929 
6930 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6931 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 19> : tuple_type<A19> {
6933  typename tuple_type<A19>::const_reference get() const { return m_x; }
6934 private:
6935  typename tuple_type<A19>::const_reference m_x;
6936 };
6937 
6938 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6939 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 20> : tuple_type<A20> {
6941  typename tuple_type<A20>::const_reference get() const { return m_x; }
6942 private:
6943  typename tuple_type<A20>::const_reference m_x;
6944 };
6945 
6946 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6947 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, 21> : tuple_type<A21> {
6949  typename tuple_type<A21>::const_reference get() const { return m_x; }
6950 private:
6951  typename tuple_type<A21>::const_reference m_x;
6952 };
6953 
6954 
6955 
6956 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
6957 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 0> : tuple_type<A0> {
6959  typename tuple_type<A0>::const_reference get() const { return m_x; }
6960 private:
6961  typename tuple_type<A0>::const_reference m_x;
6962 };
6963 
6964 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
6965 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 1> : tuple_type<A1> {
6967  typename tuple_type<A1>::const_reference get() const { return m_x; }
6968 private:
6969  typename tuple_type<A1>::const_reference m_x;
6970 };
6971 
6972 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
6973 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 2> : tuple_type<A2> {
6975  typename tuple_type<A2>::const_reference get() const { return m_x; }
6976 private:
6977  typename tuple_type<A2>::const_reference m_x;
6978 };
6979 
6980 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
6981 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 3> : tuple_type<A3> {
6983  typename tuple_type<A3>::const_reference get() const { return m_x; }
6984 private:
6985  typename tuple_type<A3>::const_reference m_x;
6986 };
6987 
6988 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
6989 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 4> : tuple_type<A4> {
6991  typename tuple_type<A4>::const_reference get() const { return m_x; }
6992 private:
6993  typename tuple_type<A4>::const_reference m_x;
6994 };
6995 
6996 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
6997 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 5> : tuple_type<A5> {
6999  typename tuple_type<A5>::const_reference get() const { return m_x; }
7000 private:
7001  typename tuple_type<A5>::const_reference m_x;
7002 };
7003 
7004 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7005 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 6> : tuple_type<A6> {
7007  typename tuple_type<A6>::const_reference get() const { return m_x; }
7008 private:
7009  typename tuple_type<A6>::const_reference m_x;
7010 };
7011 
7012 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7013 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 7> : tuple_type<A7> {
7015  typename tuple_type<A7>::const_reference get() const { return m_x; }
7016 private:
7017  typename tuple_type<A7>::const_reference m_x;
7018 };
7019 
7020 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7021 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 8> : tuple_type<A8> {
7023  typename tuple_type<A8>::const_reference get() const { return m_x; }
7024 private:
7025  typename tuple_type<A8>::const_reference m_x;
7026 };
7027 
7028 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7029 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 9> : tuple_type<A9> {
7031  typename tuple_type<A9>::const_reference get() const { return m_x; }
7032 private:
7033  typename tuple_type<A9>::const_reference m_x;
7034 };
7035 
7036 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7037 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 10> : tuple_type<A10> {
7039  typename tuple_type<A10>::const_reference get() const { return m_x; }
7040 private:
7041  typename tuple_type<A10>::const_reference m_x;
7042 };
7043 
7044 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7045 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 11> : tuple_type<A11> {
7047  typename tuple_type<A11>::const_reference get() const { return m_x; }
7048 private:
7049  typename tuple_type<A11>::const_reference m_x;
7050 };
7051 
7052 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7053 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 12> : tuple_type<A12> {
7055  typename tuple_type<A12>::const_reference get() const { return m_x; }
7056 private:
7057  typename tuple_type<A12>::const_reference m_x;
7058 };
7059 
7060 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7061 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 13> : tuple_type<A13> {
7063  typename tuple_type<A13>::const_reference get() const { return m_x; }
7064 private:
7065  typename tuple_type<A13>::const_reference m_x;
7066 };
7067 
7068 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7069 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 14> : tuple_type<A14> {
7071  typename tuple_type<A14>::const_reference get() const { return m_x; }
7072 private:
7073  typename tuple_type<A14>::const_reference m_x;
7074 };
7075 
7076 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7077 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 15> : tuple_type<A15> {
7079  typename tuple_type<A15>::const_reference get() const { return m_x; }
7080 private:
7081  typename tuple_type<A15>::const_reference m_x;
7082 };
7083 
7084 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7085 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 16> : tuple_type<A16> {
7087  typename tuple_type<A16>::const_reference get() const { return m_x; }
7088 private:
7089  typename tuple_type<A16>::const_reference m_x;
7090 };
7091 
7092 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7093 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 17> : tuple_type<A17> {
7095  typename tuple_type<A17>::const_reference get() const { return m_x; }
7096 private:
7097  typename tuple_type<A17>::const_reference m_x;
7098 };
7099 
7100 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7101 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 18> : tuple_type<A18> {
7103  typename tuple_type<A18>::const_reference get() const { return m_x; }
7104 private:
7105  typename tuple_type<A18>::const_reference m_x;
7106 };
7107 
7108 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7109 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 19> : tuple_type<A19> {
7111  typename tuple_type<A19>::const_reference get() const { return m_x; }
7112 private:
7113  typename tuple_type<A19>::const_reference m_x;
7114 };
7115 
7116 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7117 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 20> : tuple_type<A20> {
7119  typename tuple_type<A20>::const_reference get() const { return m_x; }
7120 private:
7121  typename tuple_type<A20>::const_reference m_x;
7122 };
7123 
7124 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7125 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 21> : tuple_type<A21> {
7127  typename tuple_type<A21>::const_reference get() const { return m_x; }
7128 private:
7129  typename tuple_type<A21>::const_reference m_x;
7130 };
7131 
7132 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7133 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>, 22> : tuple_type<A22> {
7135  typename tuple_type<A22>::const_reference get() const { return m_x; }
7136 private:
7137  typename tuple_type<A22>::const_reference m_x;
7138 };
7139 
7140 
7141 
7142 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7143 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 0> : tuple_type<A0> {
7145  typename tuple_type<A0>::const_reference get() const { return m_x; }
7146 private:
7147  typename tuple_type<A0>::const_reference m_x;
7148 };
7149 
7150 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7151 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 1> : tuple_type<A1> {
7153  typename tuple_type<A1>::const_reference get() const { return m_x; }
7154 private:
7155  typename tuple_type<A1>::const_reference m_x;
7156 };
7157 
7158 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7159 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 2> : tuple_type<A2> {
7161  typename tuple_type<A2>::const_reference get() const { return m_x; }
7162 private:
7163  typename tuple_type<A2>::const_reference m_x;
7164 };
7165 
7166 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7167 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 3> : tuple_type<A3> {
7169  typename tuple_type<A3>::const_reference get() const { return m_x; }
7170 private:
7171  typename tuple_type<A3>::const_reference m_x;
7172 };
7173 
7174 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7175 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 4> : tuple_type<A4> {
7177  typename tuple_type<A4>::const_reference get() const { return m_x; }
7178 private:
7179  typename tuple_type<A4>::const_reference m_x;
7180 };
7181 
7182 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7183 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 5> : tuple_type<A5> {
7185  typename tuple_type<A5>::const_reference get() const { return m_x; }
7186 private:
7187  typename tuple_type<A5>::const_reference m_x;
7188 };
7189 
7190 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7191 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 6> : tuple_type<A6> {
7193  typename tuple_type<A6>::const_reference get() const { return m_x; }
7194 private:
7195  typename tuple_type<A6>::const_reference m_x;
7196 };
7197 
7198 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7199 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 7> : tuple_type<A7> {
7201  typename tuple_type<A7>::const_reference get() const { return m_x; }
7202 private:
7203  typename tuple_type<A7>::const_reference m_x;
7204 };
7205 
7206 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7207 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 8> : tuple_type<A8> {
7209  typename tuple_type<A8>::const_reference get() const { return m_x; }
7210 private:
7211  typename tuple_type<A8>::const_reference m_x;
7212 };
7213 
7214 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7215 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 9> : tuple_type<A9> {
7217  typename tuple_type<A9>::const_reference get() const { return m_x; }
7218 private:
7219  typename tuple_type<A9>::const_reference m_x;
7220 };
7221 
7222 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7223 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 10> : tuple_type<A10> {
7225  typename tuple_type<A10>::const_reference get() const { return m_x; }
7226 private:
7227  typename tuple_type<A10>::const_reference m_x;
7228 };
7229 
7230 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7231 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 11> : tuple_type<A11> {
7233  typename tuple_type<A11>::const_reference get() const { return m_x; }
7234 private:
7235  typename tuple_type<A11>::const_reference m_x;
7236 };
7237 
7238 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7239 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 12> : tuple_type<A12> {
7241  typename tuple_type<A12>::const_reference get() const { return m_x; }
7242 private:
7243  typename tuple_type<A12>::const_reference m_x;
7244 };
7245 
7246 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7247 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 13> : tuple_type<A13> {
7249  typename tuple_type<A13>::const_reference get() const { return m_x; }
7250 private:
7251  typename tuple_type<A13>::const_reference m_x;
7252 };
7253 
7254 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7255 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 14> : tuple_type<A14> {
7257  typename tuple_type<A14>::const_reference get() const { return m_x; }
7258 private:
7259  typename tuple_type<A14>::const_reference m_x;
7260 };
7261 
7262 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7263 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 15> : tuple_type<A15> {
7265  typename tuple_type<A15>::const_reference get() const { return m_x; }
7266 private:
7267  typename tuple_type<A15>::const_reference m_x;
7268 };
7269 
7270 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7271 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 16> : tuple_type<A16> {
7273  typename tuple_type<A16>::const_reference get() const { return m_x; }
7274 private:
7275  typename tuple_type<A16>::const_reference m_x;
7276 };
7277 
7278 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7279 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 17> : tuple_type<A17> {
7281  typename tuple_type<A17>::const_reference get() const { return m_x; }
7282 private:
7283  typename tuple_type<A17>::const_reference m_x;
7284 };
7285 
7286 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7287 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 18> : tuple_type<A18> {
7289  typename tuple_type<A18>::const_reference get() const { return m_x; }
7290 private:
7291  typename tuple_type<A18>::const_reference m_x;
7292 };
7293 
7294 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7295 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 19> : tuple_type<A19> {
7297  typename tuple_type<A19>::const_reference get() const { return m_x; }
7298 private:
7299  typename tuple_type<A19>::const_reference m_x;
7300 };
7301 
7302 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7303 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 20> : tuple_type<A20> {
7305  typename tuple_type<A20>::const_reference get() const { return m_x; }
7306 private:
7307  typename tuple_type<A20>::const_reference m_x;
7308 };
7309 
7310 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7311 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 21> : tuple_type<A21> {
7313  typename tuple_type<A21>::const_reference get() const { return m_x; }
7314 private:
7315  typename tuple_type<A21>::const_reference m_x;
7316 };
7317 
7318 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7319 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 22> : tuple_type<A22> {
7321  typename tuple_type<A22>::const_reference get() const { return m_x; }
7322 private:
7323  typename tuple_type<A22>::const_reference m_x;
7324 };
7325 
7326 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7327 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>, 23> : tuple_type<A23> {
7329  typename tuple_type<A23>::const_reference get() const { return m_x; }
7330 private:
7331  typename tuple_type<A23>::const_reference m_x;
7332 };
7333 
7334 
7335 
7336 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7337 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 0> : tuple_type<A0> {
7339  typename tuple_type<A0>::const_reference get() const { return m_x; }
7340 private:
7341  typename tuple_type<A0>::const_reference m_x;
7342 };
7343 
7344 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7345 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 1> : tuple_type<A1> {
7347  typename tuple_type<A1>::const_reference get() const { return m_x; }
7348 private:
7349  typename tuple_type<A1>::const_reference m_x;
7350 };
7351 
7352 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7353 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 2> : tuple_type<A2> {
7355  typename tuple_type<A2>::const_reference get() const { return m_x; }
7356 private:
7357  typename tuple_type<A2>::const_reference m_x;
7358 };
7359 
7360 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7361 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 3> : tuple_type<A3> {
7363  typename tuple_type<A3>::const_reference get() const { return m_x; }
7364 private:
7365  typename tuple_type<A3>::const_reference m_x;
7366 };
7367 
7368 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7369 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 4> : tuple_type<A4> {
7371  typename tuple_type<A4>::const_reference get() const { return m_x; }
7372 private:
7373  typename tuple_type<A4>::const_reference m_x;
7374 };
7375 
7376 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7377 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 5> : tuple_type<A5> {
7379  typename tuple_type<A5>::const_reference get() const { return m_x; }
7380 private:
7381  typename tuple_type<A5>::const_reference m_x;
7382 };
7383 
7384 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7385 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 6> : tuple_type<A6> {
7387  typename tuple_type<A6>::const_reference get() const { return m_x; }
7388 private:
7389  typename tuple_type<A6>::const_reference m_x;
7390 };
7391 
7392 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7393 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 7> : tuple_type<A7> {
7395  typename tuple_type<A7>::const_reference get() const { return m_x; }
7396 private:
7397  typename tuple_type<A7>::const_reference m_x;
7398 };
7399 
7400 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7401 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 8> : tuple_type<A8> {
7403  typename tuple_type<A8>::const_reference get() const { return m_x; }
7404 private:
7405  typename tuple_type<A8>::const_reference m_x;
7406 };
7407 
7408 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7409 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 9> : tuple_type<A9> {
7411  typename tuple_type<A9>::const_reference get() const { return m_x; }
7412 private:
7413  typename tuple_type<A9>::const_reference m_x;
7414 };
7415 
7416 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7417 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 10> : tuple_type<A10> {
7419  typename tuple_type<A10>::const_reference get() const { return m_x; }
7420 private:
7421  typename tuple_type<A10>::const_reference m_x;
7422 };
7423 
7424 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7425 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 11> : tuple_type<A11> {
7427  typename tuple_type<A11>::const_reference get() const { return m_x; }
7428 private:
7429  typename tuple_type<A11>::const_reference m_x;
7430 };
7431 
7432 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7433 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 12> : tuple_type<A12> {
7435  typename tuple_type<A12>::const_reference get() const { return m_x; }
7436 private:
7437  typename tuple_type<A12>::const_reference m_x;
7438 };
7439 
7440 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7441 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 13> : tuple_type<A13> {
7443  typename tuple_type<A13>::const_reference get() const { return m_x; }
7444 private:
7445  typename tuple_type<A13>::const_reference m_x;
7446 };
7447 
7448 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7449 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 14> : tuple_type<A14> {
7451  typename tuple_type<A14>::const_reference get() const { return m_x; }
7452 private:
7453  typename tuple_type<A14>::const_reference m_x;
7454 };
7455 
7456 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7457 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 15> : tuple_type<A15> {
7459  typename tuple_type<A15>::const_reference get() const { return m_x; }
7460 private:
7461  typename tuple_type<A15>::const_reference m_x;
7462 };
7463 
7464 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7465 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 16> : tuple_type<A16> {
7467  typename tuple_type<A16>::const_reference get() const { return m_x; }
7468 private:
7469  typename tuple_type<A16>::const_reference m_x;
7470 };
7471 
7472 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7473 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 17> : tuple_type<A17> {
7475  typename tuple_type<A17>::const_reference get() const { return m_x; }
7476 private:
7477  typename tuple_type<A17>::const_reference m_x;
7478 };
7479 
7480 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7481 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 18> : tuple_type<A18> {
7483  typename tuple_type<A18>::const_reference get() const { return m_x; }
7484 private:
7485  typename tuple_type<A18>::const_reference m_x;
7486 };
7487 
7488 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7489 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 19> : tuple_type<A19> {
7491  typename tuple_type<A19>::const_reference get() const { return m_x; }
7492 private:
7493  typename tuple_type<A19>::const_reference m_x;
7494 };
7495 
7496 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7497 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 20> : tuple_type<A20> {
7499  typename tuple_type<A20>::const_reference get() const { return m_x; }
7500 private:
7501  typename tuple_type<A20>::const_reference m_x;
7502 };
7503 
7504 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7505 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 21> : tuple_type<A21> {
7507  typename tuple_type<A21>::const_reference get() const { return m_x; }
7508 private:
7509  typename tuple_type<A21>::const_reference m_x;
7510 };
7511 
7512 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7513 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 22> : tuple_type<A22> {
7515  typename tuple_type<A22>::const_reference get() const { return m_x; }
7516 private:
7517  typename tuple_type<A22>::const_reference m_x;
7518 };
7519 
7520 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7521 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 23> : tuple_type<A23> {
7523  typename tuple_type<A23>::const_reference get() const { return m_x; }
7524 private:
7525  typename tuple_type<A23>::const_reference m_x;
7526 };
7527 
7528 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7529 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>, 24> : tuple_type<A24> {
7531  typename tuple_type<A24>::const_reference get() const { return m_x; }
7532 private:
7533  typename tuple_type<A24>::const_reference m_x;
7534 };
7535 
7536 
7537 
7538 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7539 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 0> : tuple_type<A0> {
7541  typename tuple_type<A0>::const_reference get() const { return m_x; }
7542 private:
7543  typename tuple_type<A0>::const_reference m_x;
7544 };
7545 
7546 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7547 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 1> : tuple_type<A1> {
7549  typename tuple_type<A1>::const_reference get() const { return m_x; }
7550 private:
7551  typename tuple_type<A1>::const_reference m_x;
7552 };
7553 
7554 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7555 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 2> : tuple_type<A2> {
7557  typename tuple_type<A2>::const_reference get() const { return m_x; }
7558 private:
7559  typename tuple_type<A2>::const_reference m_x;
7560 };
7561 
7562 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7563 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 3> : tuple_type<A3> {
7565  typename tuple_type<A3>::const_reference get() const { return m_x; }
7566 private:
7567  typename tuple_type<A3>::const_reference m_x;
7568 };
7569 
7570 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7571 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 4> : tuple_type<A4> {
7573  typename tuple_type<A4>::const_reference get() const { return m_x; }
7574 private:
7575  typename tuple_type<A4>::const_reference m_x;
7576 };
7577 
7578 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7579 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 5> : tuple_type<A5> {
7581  typename tuple_type<A5>::const_reference get() const { return m_x; }
7582 private:
7583  typename tuple_type<A5>::const_reference m_x;
7584 };
7585 
7586 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7587 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 6> : tuple_type<A6> {
7589  typename tuple_type<A6>::const_reference get() const { return m_x; }
7590 private:
7591  typename tuple_type<A6>::const_reference m_x;
7592 };
7593 
7594 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7595 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 7> : tuple_type<A7> {
7597  typename tuple_type<A7>::const_reference get() const { return m_x; }
7598 private:
7599  typename tuple_type<A7>::const_reference m_x;
7600 };
7601 
7602 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7603 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 8> : tuple_type<A8> {
7605  typename tuple_type<A8>::const_reference get() const { return m_x; }
7606 private:
7607  typename tuple_type<A8>::const_reference m_x;
7608 };
7609 
7610 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7611 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 9> : tuple_type<A9> {
7613  typename tuple_type<A9>::const_reference get() const { return m_x; }
7614 private:
7615  typename tuple_type<A9>::const_reference m_x;
7616 };
7617 
7618 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7619 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 10> : tuple_type<A10> {
7621  typename tuple_type<A10>::const_reference get() const { return m_x; }
7622 private:
7623  typename tuple_type<A10>::const_reference m_x;
7624 };
7625 
7626 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7627 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 11> : tuple_type<A11> {
7629  typename tuple_type<A11>::const_reference get() const { return m_x; }
7630 private:
7631  typename tuple_type<A11>::const_reference m_x;
7632 };
7633 
7634 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7635 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 12> : tuple_type<A12> {
7637  typename tuple_type<A12>::const_reference get() const { return m_x; }
7638 private:
7639  typename tuple_type<A12>::const_reference m_x;
7640 };
7641 
7642 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7643 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 13> : tuple_type<A13> {
7645  typename tuple_type<A13>::const_reference get() const { return m_x; }
7646 private:
7647  typename tuple_type<A13>::const_reference m_x;
7648 };
7649 
7650 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7651 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 14> : tuple_type<A14> {
7653  typename tuple_type<A14>::const_reference get() const { return m_x; }
7654 private:
7655  typename tuple_type<A14>::const_reference m_x;
7656 };
7657 
7658 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7659 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 15> : tuple_type<A15> {
7661  typename tuple_type<A15>::const_reference get() const { return m_x; }
7662 private:
7663  typename tuple_type<A15>::const_reference m_x;
7664 };
7665 
7666 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7667 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 16> : tuple_type<A16> {
7669  typename tuple_type<A16>::const_reference get() const { return m_x; }
7670 private:
7671  typename tuple_type<A16>::const_reference m_x;
7672 };
7673 
7674 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7675 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 17> : tuple_type<A17> {
7677  typename tuple_type<A17>::const_reference get() const { return m_x; }
7678 private:
7679  typename tuple_type<A17>::const_reference m_x;
7680 };
7681 
7682 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7683 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 18> : tuple_type<A18> {
7685  typename tuple_type<A18>::const_reference get() const { return m_x; }
7686 private:
7687  typename tuple_type<A18>::const_reference m_x;
7688 };
7689 
7690 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7691 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 19> : tuple_type<A19> {
7693  typename tuple_type<A19>::const_reference get() const { return m_x; }
7694 private:
7695  typename tuple_type<A19>::const_reference m_x;
7696 };
7697 
7698 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7699 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 20> : tuple_type<A20> {
7701  typename tuple_type<A20>::const_reference get() const { return m_x; }
7702 private:
7703  typename tuple_type<A20>::const_reference m_x;
7704 };
7705 
7706 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7707 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 21> : tuple_type<A21> {
7709  typename tuple_type<A21>::const_reference get() const { return m_x; }
7710 private:
7711  typename tuple_type<A21>::const_reference m_x;
7712 };
7713 
7714 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7715 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 22> : tuple_type<A22> {
7717  typename tuple_type<A22>::const_reference get() const { return m_x; }
7718 private:
7719  typename tuple_type<A22>::const_reference m_x;
7720 };
7721 
7722 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7723 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 23> : tuple_type<A23> {
7725  typename tuple_type<A23>::const_reference get() const { return m_x; }
7726 private:
7727  typename tuple_type<A23>::const_reference m_x;
7728 };
7729 
7730 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7731 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 24> : tuple_type<A24> {
7733  typename tuple_type<A24>::const_reference get() const { return m_x; }
7734 private:
7735  typename tuple_type<A24>::const_reference m_x;
7736 };
7737 
7738 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7739 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>, 25> : tuple_type<A25> {
7741  typename tuple_type<A25>::const_reference get() const { return m_x; }
7742 private:
7743  typename tuple_type<A25>::const_reference m_x;
7744 };
7745 
7746 
7747 
7748 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7749 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 0> : tuple_type<A0> {
7751  typename tuple_type<A0>::const_reference get() const { return m_x; }
7752 private:
7753  typename tuple_type<A0>::const_reference m_x;
7754 };
7755 
7756 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7757 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 1> : tuple_type<A1> {
7759  typename tuple_type<A1>::const_reference get() const { return m_x; }
7760 private:
7761  typename tuple_type<A1>::const_reference m_x;
7762 };
7763 
7764 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7765 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 2> : tuple_type<A2> {
7767  typename tuple_type<A2>::const_reference get() const { return m_x; }
7768 private:
7769  typename tuple_type<A2>::const_reference m_x;
7770 };
7771 
7772 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7773 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 3> : tuple_type<A3> {
7775  typename tuple_type<A3>::const_reference get() const { return m_x; }
7776 private:
7777  typename tuple_type<A3>::const_reference m_x;
7778 };
7779 
7780 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7781 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 4> : tuple_type<A4> {
7783  typename tuple_type<A4>::const_reference get() const { return m_x; }
7784 private:
7785  typename tuple_type<A4>::const_reference m_x;
7786 };
7787 
7788 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7789 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 5> : tuple_type<A5> {
7791  typename tuple_type<A5>::const_reference get() const { return m_x; }
7792 private:
7793  typename tuple_type<A5>::const_reference m_x;
7794 };
7795 
7796 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7797 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 6> : tuple_type<A6> {
7799  typename tuple_type<A6>::const_reference get() const { return m_x; }
7800 private:
7801  typename tuple_type<A6>::const_reference m_x;
7802 };
7803 
7804 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7805 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 7> : tuple_type<A7> {
7807  typename tuple_type<A7>::const_reference get() const { return m_x; }
7808 private:
7809  typename tuple_type<A7>::const_reference m_x;
7810 };
7811 
7812 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7813 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 8> : tuple_type<A8> {
7815  typename tuple_type<A8>::const_reference get() const { return m_x; }
7816 private:
7817  typename tuple_type<A8>::const_reference m_x;
7818 };
7819 
7820 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7821 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 9> : tuple_type<A9> {
7823  typename tuple_type<A9>::const_reference get() const { return m_x; }
7824 private:
7825  typename tuple_type<A9>::const_reference m_x;
7826 };
7827 
7828 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7829 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 10> : tuple_type<A10> {
7831  typename tuple_type<A10>::const_reference get() const { return m_x; }
7832 private:
7833  typename tuple_type<A10>::const_reference m_x;
7834 };
7835 
7836 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7837 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 11> : tuple_type<A11> {
7839  typename tuple_type<A11>::const_reference get() const { return m_x; }
7840 private:
7841  typename tuple_type<A11>::const_reference m_x;
7842 };
7843 
7844 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7845 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 12> : tuple_type<A12> {
7847  typename tuple_type<A12>::const_reference get() const { return m_x; }
7848 private:
7849  typename tuple_type<A12>::const_reference m_x;
7850 };
7851 
7852 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7853 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 13> : tuple_type<A13> {
7855  typename tuple_type<A13>::const_reference get() const { return m_x; }
7856 private:
7857  typename tuple_type<A13>::const_reference m_x;
7858 };
7859 
7860 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7861 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 14> : tuple_type<A14> {
7863  typename tuple_type<A14>::const_reference get() const { return m_x; }
7864 private:
7865  typename tuple_type<A14>::const_reference m_x;
7866 };
7867 
7868 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7869 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 15> : tuple_type<A15> {
7871  typename tuple_type<A15>::const_reference get() const { return m_x; }
7872 private:
7873  typename tuple_type<A15>::const_reference m_x;
7874 };
7875 
7876 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7877 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 16> : tuple_type<A16> {
7879  typename tuple_type<A16>::const_reference get() const { return m_x; }
7880 private:
7881  typename tuple_type<A16>::const_reference m_x;
7882 };
7883 
7884 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7885 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 17> : tuple_type<A17> {
7887  typename tuple_type<A17>::const_reference get() const { return m_x; }
7888 private:
7889  typename tuple_type<A17>::const_reference m_x;
7890 };
7891 
7892 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7893 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 18> : tuple_type<A18> {
7895  typename tuple_type<A18>::const_reference get() const { return m_x; }
7896 private:
7897  typename tuple_type<A18>::const_reference m_x;
7898 };
7899 
7900 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7901 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 19> : tuple_type<A19> {
7903  typename tuple_type<A19>::const_reference get() const { return m_x; }
7904 private:
7905  typename tuple_type<A19>::const_reference m_x;
7906 };
7907 
7908 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7909 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 20> : tuple_type<A20> {
7911  typename tuple_type<A20>::const_reference get() const { return m_x; }
7912 private:
7913  typename tuple_type<A20>::const_reference m_x;
7914 };
7915 
7916 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7917 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 21> : tuple_type<A21> {
7919  typename tuple_type<A21>::const_reference get() const { return m_x; }
7920 private:
7921  typename tuple_type<A21>::const_reference m_x;
7922 };
7923 
7924 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7925 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 22> : tuple_type<A22> {
7927  typename tuple_type<A22>::const_reference get() const { return m_x; }
7928 private:
7929  typename tuple_type<A22>::const_reference m_x;
7930 };
7931 
7932 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7933 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 23> : tuple_type<A23> {
7935  typename tuple_type<A23>::const_reference get() const { return m_x; }
7936 private:
7937  typename tuple_type<A23>::const_reference m_x;
7938 };
7939 
7940 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7941 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 24> : tuple_type<A24> {
7943  typename tuple_type<A24>::const_reference get() const { return m_x; }
7944 private:
7945  typename tuple_type<A24>::const_reference m_x;
7946 };
7947 
7948 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7949 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 25> : tuple_type<A25> {
7951  typename tuple_type<A25>::const_reference get() const { return m_x; }
7952 private:
7953  typename tuple_type<A25>::const_reference m_x;
7954 };
7955 
7956 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7957 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>, 26> : tuple_type<A26> {
7959  typename tuple_type<A26>::const_reference get() const { return m_x; }
7960 private:
7961  typename tuple_type<A26>::const_reference m_x;
7962 };
7963 
7964 
7965 
7966 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
7967 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 0> : tuple_type<A0> {
7969  typename tuple_type<A0>::const_reference get() const { return m_x; }
7970 private:
7971  typename tuple_type<A0>::const_reference m_x;
7972 };
7973 
7974 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
7975 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 1> : tuple_type<A1> {
7977  typename tuple_type<A1>::const_reference get() const { return m_x; }
7978 private:
7979  typename tuple_type<A1>::const_reference m_x;
7980 };
7981 
7982 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
7983 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 2> : tuple_type<A2> {
7985  typename tuple_type<A2>::const_reference get() const { return m_x; }
7986 private:
7987  typename tuple_type<A2>::const_reference m_x;
7988 };
7989 
7990 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
7991 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 3> : tuple_type<A3> {
7993  typename tuple_type<A3>::const_reference get() const { return m_x; }
7994 private:
7995  typename tuple_type<A3>::const_reference m_x;
7996 };
7997 
7998 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
7999 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 4> : tuple_type<A4> {
8001  typename tuple_type<A4>::const_reference get() const { return m_x; }
8002 private:
8003  typename tuple_type<A4>::const_reference m_x;
8004 };
8005 
8006 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8007 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 5> : tuple_type<A5> {
8009  typename tuple_type<A5>::const_reference get() const { return m_x; }
8010 private:
8011  typename tuple_type<A5>::const_reference m_x;
8012 };
8013 
8014 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8015 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 6> : tuple_type<A6> {
8017  typename tuple_type<A6>::const_reference get() const { return m_x; }
8018 private:
8019  typename tuple_type<A6>::const_reference m_x;
8020 };
8021 
8022 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8023 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 7> : tuple_type<A7> {
8025  typename tuple_type<A7>::const_reference get() const { return m_x; }
8026 private:
8027  typename tuple_type<A7>::const_reference m_x;
8028 };
8029 
8030 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8031 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 8> : tuple_type<A8> {
8033  typename tuple_type<A8>::const_reference get() const { return m_x; }
8034 private:
8035  typename tuple_type<A8>::const_reference m_x;
8036 };
8037 
8038 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8039 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 9> : tuple_type<A9> {
8041  typename tuple_type<A9>::const_reference get() const { return m_x; }
8042 private:
8043  typename tuple_type<A9>::const_reference m_x;
8044 };
8045 
8046 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8047 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 10> : tuple_type<A10> {
8049  typename tuple_type<A10>::const_reference get() const { return m_x; }
8050 private:
8051  typename tuple_type<A10>::const_reference m_x;
8052 };
8053 
8054 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8055 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 11> : tuple_type<A11> {
8057  typename tuple_type<A11>::const_reference get() const { return m_x; }
8058 private:
8059  typename tuple_type<A11>::const_reference m_x;
8060 };
8061 
8062 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8063 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 12> : tuple_type<A12> {
8065  typename tuple_type<A12>::const_reference get() const { return m_x; }
8066 private:
8067  typename tuple_type<A12>::const_reference m_x;
8068 };
8069 
8070 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8071 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 13> : tuple_type<A13> {
8073  typename tuple_type<A13>::const_reference get() const { return m_x; }
8074 private:
8075  typename tuple_type<A13>::const_reference m_x;
8076 };
8077 
8078 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8079 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 14> : tuple_type<A14> {
8081  typename tuple_type<A14>::const_reference get() const { return m_x; }
8082 private:
8083  typename tuple_type<A14>::const_reference m_x;
8084 };
8085 
8086 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8087 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 15> : tuple_type<A15> {
8089  typename tuple_type<A15>::const_reference get() const { return m_x; }
8090 private:
8091  typename tuple_type<A15>::const_reference m_x;
8092 };
8093 
8094 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8095 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 16> : tuple_type<A16> {
8097  typename tuple_type<A16>::const_reference get() const { return m_x; }
8098 private:
8099  typename tuple_type<A16>::const_reference m_x;
8100 };
8101 
8102 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8103 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 17> : tuple_type<A17> {
8105  typename tuple_type<A17>::const_reference get() const { return m_x; }
8106 private:
8107  typename tuple_type<A17>::const_reference m_x;
8108 };
8109 
8110 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8111 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 18> : tuple_type<A18> {
8113  typename tuple_type<A18>::const_reference get() const { return m_x; }
8114 private:
8115  typename tuple_type<A18>::const_reference m_x;
8116 };
8117 
8118 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8119 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 19> : tuple_type<A19> {
8121  typename tuple_type<A19>::const_reference get() const { return m_x; }
8122 private:
8123  typename tuple_type<A19>::const_reference m_x;
8124 };
8125 
8126 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8127 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 20> : tuple_type<A20> {
8129  typename tuple_type<A20>::const_reference get() const { return m_x; }
8130 private:
8131  typename tuple_type<A20>::const_reference m_x;
8132 };
8133 
8134 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8135 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 21> : tuple_type<A21> {
8137  typename tuple_type<A21>::const_reference get() const { return m_x; }
8138 private:
8139  typename tuple_type<A21>::const_reference m_x;
8140 };
8141 
8142 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8143 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 22> : tuple_type<A22> {
8145  typename tuple_type<A22>::const_reference get() const { return m_x; }
8146 private:
8147  typename tuple_type<A22>::const_reference m_x;
8148 };
8149 
8150 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8151 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 23> : tuple_type<A23> {
8153  typename tuple_type<A23>::const_reference get() const { return m_x; }
8154 private:
8155  typename tuple_type<A23>::const_reference m_x;
8156 };
8157 
8158 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8159 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 24> : tuple_type<A24> {
8161  typename tuple_type<A24>::const_reference get() const { return m_x; }
8162 private:
8163  typename tuple_type<A24>::const_reference m_x;
8164 };
8165 
8166 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8167 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 25> : tuple_type<A25> {
8169  typename tuple_type<A25>::const_reference get() const { return m_x; }
8170 private:
8171  typename tuple_type<A25>::const_reference m_x;
8172 };
8173 
8174 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8175 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 26> : tuple_type<A26> {
8177  typename tuple_type<A26>::const_reference get() const { return m_x; }
8178 private:
8179  typename tuple_type<A26>::const_reference m_x;
8180 };
8181 
8182 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8183 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>, 27> : tuple_type<A27> {
8185  typename tuple_type<A27>::const_reference get() const { return m_x; }
8186 private:
8187  typename tuple_type<A27>::const_reference m_x;
8188 };
8189 
8190 
8191 
8192 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8193 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 0> : tuple_type<A0> {
8195  typename tuple_type<A0>::const_reference get() const { return m_x; }
8196 private:
8197  typename tuple_type<A0>::const_reference m_x;
8198 };
8199 
8200 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8201 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 1> : tuple_type<A1> {
8203  typename tuple_type<A1>::const_reference get() const { return m_x; }
8204 private:
8205  typename tuple_type<A1>::const_reference m_x;
8206 };
8207 
8208 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8209 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 2> : tuple_type<A2> {
8211  typename tuple_type<A2>::const_reference get() const { return m_x; }
8212 private:
8213  typename tuple_type<A2>::const_reference m_x;
8214 };
8215 
8216 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8217 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 3> : tuple_type<A3> {
8219  typename tuple_type<A3>::const_reference get() const { return m_x; }
8220 private:
8221  typename tuple_type<A3>::const_reference m_x;
8222 };
8223 
8224 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8225 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 4> : tuple_type<A4> {
8227  typename tuple_type<A4>::const_reference get() const { return m_x; }
8228 private:
8229  typename tuple_type<A4>::const_reference m_x;
8230 };
8231 
8232 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8233 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 5> : tuple_type<A5> {
8235  typename tuple_type<A5>::const_reference get() const { return m_x; }
8236 private:
8237  typename tuple_type<A5>::const_reference m_x;
8238 };
8239 
8240 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8241 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 6> : tuple_type<A6> {
8243  typename tuple_type<A6>::const_reference get() const { return m_x; }
8244 private:
8245  typename tuple_type<A6>::const_reference m_x;
8246 };
8247 
8248 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8249 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 7> : tuple_type<A7> {
8251  typename tuple_type<A7>::const_reference get() const { return m_x; }
8252 private:
8253  typename tuple_type<A7>::const_reference m_x;
8254 };
8255 
8256 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8257 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 8> : tuple_type<A8> {
8259  typename tuple_type<A8>::const_reference get() const { return m_x; }
8260 private:
8261  typename tuple_type<A8>::const_reference m_x;
8262 };
8263 
8264 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8265 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 9> : tuple_type<A9> {
8267  typename tuple_type<A9>::const_reference get() const { return m_x; }
8268 private:
8269  typename tuple_type<A9>::const_reference m_x;
8270 };
8271 
8272 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8273 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 10> : tuple_type<A10> {
8275  typename tuple_type<A10>::const_reference get() const { return m_x; }
8276 private:
8277  typename tuple_type<A10>::const_reference m_x;
8278 };
8279 
8280 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8281 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 11> : tuple_type<A11> {
8283  typename tuple_type<A11>::const_reference get() const { return m_x; }
8284 private:
8285  typename tuple_type<A11>::const_reference m_x;
8286 };
8287 
8288 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8289 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 12> : tuple_type<A12> {
8291  typename tuple_type<A12>::const_reference get() const { return m_x; }
8292 private:
8293  typename tuple_type<A12>::const_reference m_x;
8294 };
8295 
8296 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8297 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 13> : tuple_type<A13> {
8299  typename tuple_type<A13>::const_reference get() const { return m_x; }
8300 private:
8301  typename tuple_type<A13>::const_reference m_x;
8302 };
8303 
8304 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8305 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 14> : tuple_type<A14> {
8307  typename tuple_type<A14>::const_reference get() const { return m_x; }
8308 private:
8309  typename tuple_type<A14>::const_reference m_x;
8310 };
8311 
8312 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8313 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 15> : tuple_type<A15> {
8315  typename tuple_type<A15>::const_reference get() const { return m_x; }
8316 private:
8317  typename tuple_type<A15>::const_reference m_x;
8318 };
8319 
8320 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8321 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 16> : tuple_type<A16> {
8323  typename tuple_type<A16>::const_reference get() const { return m_x; }
8324 private:
8325  typename tuple_type<A16>::const_reference m_x;
8326 };
8327 
8328 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8329 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 17> : tuple_type<A17> {
8331  typename tuple_type<A17>::const_reference get() const { return m_x; }
8332 private:
8333  typename tuple_type<A17>::const_reference m_x;
8334 };
8335 
8336 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8337 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 18> : tuple_type<A18> {
8339  typename tuple_type<A18>::const_reference get() const { return m_x; }
8340 private:
8341  typename tuple_type<A18>::const_reference m_x;
8342 };
8343 
8344 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8345 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 19> : tuple_type<A19> {
8347  typename tuple_type<A19>::const_reference get() const { return m_x; }
8348 private:
8349  typename tuple_type<A19>::const_reference m_x;
8350 };
8351 
8352 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8353 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 20> : tuple_type<A20> {
8355  typename tuple_type<A20>::const_reference get() const { return m_x; }
8356 private:
8357  typename tuple_type<A20>::const_reference m_x;
8358 };
8359 
8360 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8361 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 21> : tuple_type<A21> {
8363  typename tuple_type<A21>::const_reference get() const { return m_x; }
8364 private:
8365  typename tuple_type<A21>::const_reference m_x;
8366 };
8367 
8368 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8369 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 22> : tuple_type<A22> {
8371  typename tuple_type<A22>::const_reference get() const { return m_x; }
8372 private:
8373  typename tuple_type<A22>::const_reference m_x;
8374 };
8375 
8376 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8377 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 23> : tuple_type<A23> {
8379  typename tuple_type<A23>::const_reference get() const { return m_x; }
8380 private:
8381  typename tuple_type<A23>::const_reference m_x;
8382 };
8383 
8384 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8385 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 24> : tuple_type<A24> {
8387  typename tuple_type<A24>::const_reference get() const { return m_x; }
8388 private:
8389  typename tuple_type<A24>::const_reference m_x;
8390 };
8391 
8392 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8393 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 25> : tuple_type<A25> {
8395  typename tuple_type<A25>::const_reference get() const { return m_x; }
8396 private:
8397  typename tuple_type<A25>::const_reference m_x;
8398 };
8399 
8400 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8401 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 26> : tuple_type<A26> {
8403  typename tuple_type<A26>::const_reference get() const { return m_x; }
8404 private:
8405  typename tuple_type<A26>::const_reference m_x;
8406 };
8407 
8408 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8409 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 27> : tuple_type<A27> {
8411  typename tuple_type<A27>::const_reference get() const { return m_x; }
8412 private:
8413  typename tuple_type<A27>::const_reference m_x;
8414 };
8415 
8416 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8417 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>, 28> : tuple_type<A28> {
8419  typename tuple_type<A28>::const_reference get() const { return m_x; }
8420 private:
8421  typename tuple_type<A28>::const_reference m_x;
8422 };
8423 
8424 
8425 
8426 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8427 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 0> : tuple_type<A0> {
8429  typename tuple_type<A0>::const_reference get() const { return m_x; }
8430 private:
8431  typename tuple_type<A0>::const_reference m_x;
8432 };
8433 
8434 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8435 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 1> : tuple_type<A1> {
8437  typename tuple_type<A1>::const_reference get() const { return m_x; }
8438 private:
8439  typename tuple_type<A1>::const_reference m_x;
8440 };
8441 
8442 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8443 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 2> : tuple_type<A2> {
8445  typename tuple_type<A2>::const_reference get() const { return m_x; }
8446 private:
8447  typename tuple_type<A2>::const_reference m_x;
8448 };
8449 
8450 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8451 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 3> : tuple_type<A3> {
8453  typename tuple_type<A3>::const_reference get() const { return m_x; }
8454 private:
8455  typename tuple_type<A3>::const_reference m_x;
8456 };
8457 
8458 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8459 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 4> : tuple_type<A4> {
8461  typename tuple_type<A4>::const_reference get() const { return m_x; }
8462 private:
8463  typename tuple_type<A4>::const_reference m_x;
8464 };
8465 
8466 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8467 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 5> : tuple_type<A5> {
8469  typename tuple_type<A5>::const_reference get() const { return m_x; }
8470 private:
8471  typename tuple_type<A5>::const_reference m_x;
8472 };
8473 
8474 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8475 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 6> : tuple_type<A6> {
8477  typename tuple_type<A6>::const_reference get() const { return m_x; }
8478 private:
8479  typename tuple_type<A6>::const_reference m_x;
8480 };
8481 
8482 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8483 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 7> : tuple_type<A7> {
8485  typename tuple_type<A7>::const_reference get() const { return m_x; }
8486 private:
8487  typename tuple_type<A7>::const_reference m_x;
8488 };
8489 
8490 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8491 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 8> : tuple_type<A8> {
8493  typename tuple_type<A8>::const_reference get() const { return m_x; }
8494 private:
8495  typename tuple_type<A8>::const_reference m_x;
8496 };
8497 
8498 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8499 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 9> : tuple_type<A9> {
8501  typename tuple_type<A9>::const_reference get() const { return m_x; }
8502 private:
8503  typename tuple_type<A9>::const_reference m_x;
8504 };
8505 
8506 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8507 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 10> : tuple_type<A10> {
8509  typename tuple_type<A10>::const_reference get() const { return m_x; }
8510 private:
8511  typename tuple_type<A10>::const_reference m_x;
8512 };
8513 
8514 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8515 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 11> : tuple_type<A11> {
8517  typename tuple_type<A11>::const_reference get() const { return m_x; }
8518 private:
8519  typename tuple_type<A11>::const_reference m_x;
8520 };
8521 
8522 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8523 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 12> : tuple_type<A12> {
8525  typename tuple_type<A12>::const_reference get() const { return m_x; }
8526 private:
8527  typename tuple_type<A12>::const_reference m_x;
8528 };
8529 
8530 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8531 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 13> : tuple_type<A13> {
8533  typename tuple_type<A13>::const_reference get() const { return m_x; }
8534 private:
8535  typename tuple_type<A13>::const_reference m_x;
8536 };
8537 
8538 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8539 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 14> : tuple_type<A14> {
8541  typename tuple_type<A14>::const_reference get() const { return m_x; }
8542 private:
8543  typename tuple_type<A14>::const_reference m_x;
8544 };
8545 
8546 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8547 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 15> : tuple_type<A15> {
8549  typename tuple_type<A15>::const_reference get() const { return m_x; }
8550 private:
8551  typename tuple_type<A15>::const_reference m_x;
8552 };
8553 
8554 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8555 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 16> : tuple_type<A16> {
8557  typename tuple_type<A16>::const_reference get() const { return m_x; }
8558 private:
8559  typename tuple_type<A16>::const_reference m_x;
8560 };
8561 
8562 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8563 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 17> : tuple_type<A17> {
8565  typename tuple_type<A17>::const_reference get() const { return m_x; }
8566 private:
8567  typename tuple_type<A17>::const_reference m_x;
8568 };
8569 
8570 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8571 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 18> : tuple_type<A18> {
8573  typename tuple_type<A18>::const_reference get() const { return m_x; }
8574 private:
8575  typename tuple_type<A18>::const_reference m_x;
8576 };
8577 
8578 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8579 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 19> : tuple_type<A19> {
8581  typename tuple_type<A19>::const_reference get() const { return m_x; }
8582 private:
8583  typename tuple_type<A19>::const_reference m_x;
8584 };
8585 
8586 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8587 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 20> : tuple_type<A20> {
8589  typename tuple_type<A20>::const_reference get() const { return m_x; }
8590 private:
8591  typename tuple_type<A20>::const_reference m_x;
8592 };
8593 
8594 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8595 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 21> : tuple_type<A21> {
8597  typename tuple_type<A21>::const_reference get() const { return m_x; }
8598 private:
8599  typename tuple_type<A21>::const_reference m_x;
8600 };
8601 
8602 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8603 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 22> : tuple_type<A22> {
8605  typename tuple_type<A22>::const_reference get() const { return m_x; }
8606 private:
8607  typename tuple_type<A22>::const_reference m_x;
8608 };
8609 
8610 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8611 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 23> : tuple_type<A23> {
8613  typename tuple_type<A23>::const_reference get() const { return m_x; }
8614 private:
8615  typename tuple_type<A23>::const_reference m_x;
8616 };
8617 
8618 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8619 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 24> : tuple_type<A24> {
8621  typename tuple_type<A24>::const_reference get() const { return m_x; }
8622 private:
8623  typename tuple_type<A24>::const_reference m_x;
8624 };
8625 
8626 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8627 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 25> : tuple_type<A25> {
8629  typename tuple_type<A25>::const_reference get() const { return m_x; }
8630 private:
8631  typename tuple_type<A25>::const_reference m_x;
8632 };
8633 
8634 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8635 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 26> : tuple_type<A26> {
8637  typename tuple_type<A26>::const_reference get() const { return m_x; }
8638 private:
8639  typename tuple_type<A26>::const_reference m_x;
8640 };
8641 
8642 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8643 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 27> : tuple_type<A27> {
8645  typename tuple_type<A27>::const_reference get() const { return m_x; }
8646 private:
8647  typename tuple_type<A27>::const_reference m_x;
8648 };
8649 
8650 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8651 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 28> : tuple_type<A28> {
8653  typename tuple_type<A28>::const_reference get() const { return m_x; }
8654 private:
8655  typename tuple_type<A28>::const_reference m_x;
8656 };
8657 
8658 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
8659 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>, 29> : tuple_type<A29> {
8661  typename tuple_type<A29>::const_reference get() const { return m_x; }
8662 private:
8663  typename tuple_type<A29>::const_reference m_x;
8664 };
8665 
8666 
8667 
8668 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8669 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 0> : tuple_type<A0> {
8671  typename tuple_type<A0>::const_reference get() const { return m_x; }
8672 private:
8673  typename tuple_type<A0>::const_reference m_x;
8674 };
8675 
8676 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8677 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 1> : tuple_type<A1> {
8679  typename tuple_type<A1>::const_reference get() const { return m_x; }
8680 private:
8681  typename tuple_type<A1>::const_reference m_x;
8682 };
8683 
8684 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8685 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 2> : tuple_type<A2> {
8687  typename tuple_type<A2>::const_reference get() const { return m_x; }
8688 private:
8689  typename tuple_type<A2>::const_reference m_x;
8690 };
8691 
8692 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8693 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 3> : tuple_type<A3> {
8695  typename tuple_type<A3>::const_reference get() const { return m_x; }
8696 private:
8697  typename tuple_type<A3>::const_reference m_x;
8698 };
8699 
8700 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8701 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 4> : tuple_type<A4> {
8703  typename tuple_type<A4>::const_reference get() const { return m_x; }
8704 private:
8705  typename tuple_type<A4>::const_reference m_x;
8706 };
8707 
8708 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8709 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 5> : tuple_type<A5> {
8711  typename tuple_type<A5>::const_reference get() const { return m_x; }
8712 private:
8713  typename tuple_type<A5>::const_reference m_x;
8714 };
8715 
8716 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8717 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 6> : tuple_type<A6> {
8719  typename tuple_type<A6>::const_reference get() const { return m_x; }
8720 private:
8721  typename tuple_type<A6>::const_reference m_x;
8722 };
8723 
8724 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8725 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 7> : tuple_type<A7> {
8727  typename tuple_type<A7>::const_reference get() const { return m_x; }
8728 private:
8729  typename tuple_type<A7>::const_reference m_x;
8730 };
8731 
8732 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8733 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 8> : tuple_type<A8> {
8735  typename tuple_type<A8>::const_reference get() const { return m_x; }
8736 private:
8737  typename tuple_type<A8>::const_reference m_x;
8738 };
8739 
8740 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8741 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 9> : tuple_type<A9> {
8743  typename tuple_type<A9>::const_reference get() const { return m_x; }
8744 private:
8745  typename tuple_type<A9>::const_reference m_x;
8746 };
8747 
8748 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8749 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 10> : tuple_type<A10> {
8751  typename tuple_type<A10>::const_reference get() const { return m_x; }
8752 private:
8753  typename tuple_type<A10>::const_reference m_x;
8754 };
8755 
8756 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8757 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 11> : tuple_type<A11> {
8759  typename tuple_type<A11>::const_reference get() const { return m_x; }
8760 private:
8761  typename tuple_type<A11>::const_reference m_x;
8762 };
8763 
8764 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8765 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 12> : tuple_type<A12> {
8767  typename tuple_type<A12>::const_reference get() const { return m_x; }
8768 private:
8769  typename tuple_type<A12>::const_reference m_x;
8770 };
8771 
8772 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8773 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 13> : tuple_type<A13> {
8775  typename tuple_type<A13>::const_reference get() const { return m_x; }
8776 private:
8777  typename tuple_type<A13>::const_reference m_x;
8778 };
8779 
8780 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8781 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 14> : tuple_type<A14> {
8783  typename tuple_type<A14>::const_reference get() const { return m_x; }
8784 private:
8785  typename tuple_type<A14>::const_reference m_x;
8786 };
8787 
8788 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8789 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 15> : tuple_type<A15> {
8791  typename tuple_type<A15>::const_reference get() const { return m_x; }
8792 private:
8793  typename tuple_type<A15>::const_reference m_x;
8794 };
8795 
8796 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8797 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 16> : tuple_type<A16> {
8799  typename tuple_type<A16>::const_reference get() const { return m_x; }
8800 private:
8801  typename tuple_type<A16>::const_reference m_x;
8802 };
8803 
8804 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8805 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 17> : tuple_type<A17> {
8807  typename tuple_type<A17>::const_reference get() const { return m_x; }
8808 private:
8809  typename tuple_type<A17>::const_reference m_x;
8810 };
8811 
8812 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8813 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 18> : tuple_type<A18> {
8815  typename tuple_type<A18>::const_reference get() const { return m_x; }
8816 private:
8817  typename tuple_type<A18>::const_reference m_x;
8818 };
8819 
8820 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8821 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 19> : tuple_type<A19> {
8823  typename tuple_type<A19>::const_reference get() const { return m_x; }
8824 private:
8825  typename tuple_type<A19>::const_reference m_x;
8826 };
8827 
8828 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8829 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 20> : tuple_type<A20> {
8831  typename tuple_type<A20>::const_reference get() const { return m_x; }
8832 private:
8833  typename tuple_type<A20>::const_reference m_x;
8834 };
8835 
8836 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8837 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 21> : tuple_type<A21> {
8839  typename tuple_type<A21>::const_reference get() const { return m_x; }
8840 private:
8841  typename tuple_type<A21>::const_reference m_x;
8842 };
8843 
8844 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8845 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 22> : tuple_type<A22> {
8847  typename tuple_type<A22>::const_reference get() const { return m_x; }
8848 private:
8849  typename tuple_type<A22>::const_reference m_x;
8850 };
8851 
8852 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8853 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 23> : tuple_type<A23> {
8855  typename tuple_type<A23>::const_reference get() const { return m_x; }
8856 private:
8857  typename tuple_type<A23>::const_reference m_x;
8858 };
8859 
8860 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8861 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 24> : tuple_type<A24> {
8863  typename tuple_type<A24>::const_reference get() const { return m_x; }
8864 private:
8865  typename tuple_type<A24>::const_reference m_x;
8866 };
8867 
8868 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8869 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 25> : tuple_type<A25> {
8871  typename tuple_type<A25>::const_reference get() const { return m_x; }
8872 private:
8873  typename tuple_type<A25>::const_reference m_x;
8874 };
8875 
8876 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8877 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 26> : tuple_type<A26> {
8879  typename tuple_type<A26>::const_reference get() const { return m_x; }
8880 private:
8881  typename tuple_type<A26>::const_reference m_x;
8882 };
8883 
8884 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8885 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 27> : tuple_type<A27> {
8887  typename tuple_type<A27>::const_reference get() const { return m_x; }
8888 private:
8889  typename tuple_type<A27>::const_reference m_x;
8890 };
8891 
8892 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8893 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 28> : tuple_type<A28> {
8895  typename tuple_type<A28>::const_reference get() const { return m_x; }
8896 private:
8897  typename tuple_type<A28>::const_reference m_x;
8898 };
8899 
8900 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8901 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 29> : tuple_type<A29> {
8903  typename tuple_type<A29>::const_reference get() const { return m_x; }
8904 private:
8905  typename tuple_type<A29>::const_reference m_x;
8906 };
8907 
8908 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
8909 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>, 30> : tuple_type<A30> {
8911  typename tuple_type<A30>::const_reference get() const { return m_x; }
8912 private:
8913  typename tuple_type<A30>::const_reference m_x;
8914 };
8915 
8916 
8917 
8918 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
8919 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 0> : tuple_type<A0> {
8921  typename tuple_type<A0>::const_reference get() const { return m_x; }
8922 private:
8923  typename tuple_type<A0>::const_reference m_x;
8924 };
8925 
8926 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
8927 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 1> : tuple_type<A1> {
8929  typename tuple_type<A1>::const_reference get() const { return m_x; }
8930 private:
8931  typename tuple_type<A1>::const_reference m_x;
8932 };
8933 
8934 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
8935 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 2> : tuple_type<A2> {
8937  typename tuple_type<A2>::const_reference get() const { return m_x; }
8938 private:
8939  typename tuple_type<A2>::const_reference m_x;
8940 };
8941 
8942 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
8943 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 3> : tuple_type<A3> {
8945  typename tuple_type<A3>::const_reference get() const { return m_x; }
8946 private:
8947  typename tuple_type<A3>::const_reference m_x;
8948 };
8949 
8950 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
8951 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 4> : tuple_type<A4> {
8953  typename tuple_type<A4>::const_reference get() const { return m_x; }
8954 private:
8955  typename tuple_type<A4>::const_reference m_x;
8956 };
8957 
8958 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
8959 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 5> : tuple_type<A5> {
8961  typename tuple_type<A5>::const_reference get() const { return m_x; }
8962 private:
8963  typename tuple_type<A5>::const_reference m_x;
8964 };
8965 
8966 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
8967 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 6> : tuple_type<A6> {
8969  typename tuple_type<A6>::const_reference get() const { return m_x; }
8970 private:
8971  typename tuple_type<A6>::const_reference m_x;
8972 };
8973 
8974 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
8975 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 7> : tuple_type<A7> {
8977  typename tuple_type<A7>::const_reference get() const { return m_x; }
8978 private:
8979  typename tuple_type<A7>::const_reference m_x;
8980 };
8981 
8982 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
8983 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 8> : tuple_type<A8> {
8985  typename tuple_type<A8>::const_reference get() const { return m_x; }
8986 private:
8987  typename tuple_type<A8>::const_reference m_x;
8988 };
8989 
8990 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
8991 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 9> : tuple_type<A9> {
8993  typename tuple_type<A9>::const_reference get() const { return m_x; }
8994 private:
8995  typename tuple_type<A9>::const_reference m_x;
8996 };
8997 
8998 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
8999 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 10> : tuple_type<A10> {
9001  typename tuple_type<A10>::const_reference get() const { return m_x; }
9002 private:
9003  typename tuple_type<A10>::const_reference m_x;
9004 };
9005 
9006 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
9007 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 11> : tuple_type<A11> {
9009  typename tuple_type<A11>::const_reference get() const { return m_x; }
9010 private:
9011  typename tuple_type<A11>::const_reference m_x;
9012 };
9013 
9014 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
9015 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 12> : tuple_type<A12> {
9017  typename tuple_type<A12>::const_reference get() const { return m_x; }
9018 private:
9019  typename tuple_type<A12>::const_reference m_x;
9020 };
9021 
9022 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
9023 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 13> : tuple_type<A13> {
9025  typename tuple_type<A13>::const_reference get() const { return m_x; }
9026 private:
9027  typename tuple_type<A13>::const_reference m_x;
9028 };
9029 
9030 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
9031 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 14> : tuple_type<A14> {
9033  typename tuple_type<A14>::const_reference get() const { return m_x; }
9034 private:
9035  typename tuple_type<A14>::const_reference m_x;
9036 };
9037 
9038 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
9039 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 15> : tuple_type<A15> {
9041  typename tuple_type<A15>::const_reference get() const { return m_x; }
9042 private:
9043  typename tuple_type<A15>::const_reference m_x;
9044 };
9045 
9046 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
9047 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 16> : tuple_type<A16> {
9049  typename tuple_type<A16>::const_reference get() const { return m_x; }
9050 private:
9051  typename tuple_type<A16>::const_reference m_x;
9052 };
9053 
9054 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
9055 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 17> : tuple_type<A17> {
9057  typename tuple_type<A17>::const_reference get() const { return m_x; }
9058 private:
9059  typename tuple_type<A17>::const_reference m_x;
9060 };
9061 
9062 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
9063 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 18> : tuple_type<A18> {
9065  typename tuple_type<A18>::const_reference get() const { return m_x; }
9066 private:
9067  typename tuple_type<A18>::const_reference m_x;
9068 };
9069 
9070 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
9071 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 19> : tuple_type<A19> {
9073  typename tuple_type<A19>::const_reference get() const { return m_x; }
9074 private:
9075  typename tuple_type<A19>::const_reference m_x;
9076 };
9077 
9078 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
9079 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 20> : tuple_type<A20> {
9081  typename tuple_type<A20>::const_reference get() const { return m_x; }
9082 private:
9083  typename tuple_type<A20>::const_reference m_x;
9084 };
9085 
9086 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
9087 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 21> : tuple_type<A21> {
9089  typename tuple_type<A21>::const_reference get() const { return m_x; }
9090 private:
9091  typename tuple_type<A21>::const_reference m_x;
9092 };
9093 
9094 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
9095 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 22> : tuple_type<A22> {
9097  typename tuple_type<A22>::const_reference get() const { return m_x; }
9098 private:
9099  typename tuple_type<A22>::const_reference m_x;
9100 };
9101 
9102 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
9103 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 23> : tuple_type<A23> {
9105  typename tuple_type<A23>::const_reference get() const { return m_x; }
9106 private:
9107  typename tuple_type<A23>::const_reference m_x;
9108 };
9109 
9110 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
9111 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 24> : tuple_type<A24> {
9113  typename tuple_type<A24>::const_reference get() const { return m_x; }
9114 private:
9115  typename tuple_type<A24>::const_reference m_x;
9116 };
9117 
9118 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
9119 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 25> : tuple_type<A25> {
9121  typename tuple_type<A25>::const_reference get() const { return m_x; }
9122 private:
9123  typename tuple_type<A25>::const_reference m_x;
9124 };
9125 
9126 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
9127 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 26> : tuple_type<A26> {
9129  typename tuple_type<A26>::const_reference get() const { return m_x; }
9130 private:
9131  typename tuple_type<A26>::const_reference m_x;
9132 };
9133 
9134 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
9135 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 27> : tuple_type<A27> {
9137  typename tuple_type<A27>::const_reference get() const { return m_x; }
9138 private:
9139  typename tuple_type<A27>::const_reference m_x;
9140 };
9141 
9142 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
9143 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 28> : tuple_type<A28> {
9145  typename tuple_type<A28>::const_reference get() const { return m_x; }
9146 private:
9147  typename tuple_type<A28>::const_reference m_x;
9148 };
9149 
9150 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
9151 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 29> : tuple_type<A29> {
9153  typename tuple_type<A29>::const_reference get() const { return m_x; }
9154 private:
9155  typename tuple_type<A29>::const_reference m_x;
9156 };
9157 
9158 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
9159 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 30> : tuple_type<A30> {
9161  typename tuple_type<A30>::const_reference get() const { return m_x; }
9162 private:
9163  typename tuple_type<A30>::const_reference m_x;
9164 };
9165 
9166 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
9167 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>, 31> : tuple_type<A31> {
9169  typename tuple_type<A31>::const_reference get() const { return m_x; }
9170 private:
9171  typename tuple_type<A31>::const_reference m_x;
9172 };
9173 
9174 
9176 
9177 template <>
9178 struct tuple<> {
9179  tuple() {}
9180  tuple(msgpack::object const& o) { o.convert(*this); }
9182 };
9183 
9185 
9186 template <typename A0>
9187 struct tuple<A0> {
9188  typedef tuple<A0> value_type;
9189  tuple() {}
9190  tuple(typename tuple_type<A0>::transparent_reference _a0) :
9191  a0(_a0) {}
9192  tuple(msgpack::object const& o) { o.convert(*this); }
9193  template <int N> typename tuple_element<value_type, N>::reference get()
9194  { return tuple_element<value_type, N>(*this).get(); }
9195  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9196  { return const_tuple_element<value_type, N>(*this).get(); }
9197 
9198  A0 a0;
9199 };
9200 
9201 template <int N, typename A0>
9203 { return t.template get<N>(); }
9204 template <int N, typename A0>
9206 { return t.template get<N>(); }
9207 
9208 template <typename A0, typename A1>
9209 struct tuple<A0, A1> {
9210  typedef tuple<A0, A1> value_type;
9211  tuple() {}
9213  a0(_a0), a1(_a1) {}
9214  tuple(msgpack::object const& o) { o.convert(*this); }
9215  template <int N> typename tuple_element<value_type, N>::reference get()
9216  { return tuple_element<value_type, N>(*this).get(); }
9217  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9218  { return const_tuple_element<value_type, N>(*this).get(); }
9219 
9220  A0 a0;
9221  A1 a1;
9222 };
9223 
9224 template <int N, typename A0, typename A1>
9226 { return t.template get<N>(); }
9227 template <int N, typename A0, typename A1>
9229 { return t.template get<N>(); }
9230 
9231 template <typename A0, typename A1, typename A2>
9232 struct tuple<A0, A1, A2> {
9233  typedef tuple<A0, A1, A2> value_type;
9234  tuple() {}
9236  a0(_a0), a1(_a1), a2(_a2) {}
9237  tuple(msgpack::object const& o) { o.convert(*this); }
9238  template <int N> typename tuple_element<value_type, N>::reference get()
9239  { return tuple_element<value_type, N>(*this).get(); }
9240  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9241  { return const_tuple_element<value_type, N>(*this).get(); }
9242 
9243  A0 a0;
9244  A1 a1;
9245  A2 a2;
9246 };
9247 
9248 template <int N, typename A0, typename A1, typename A2>
9250 { return t.template get<N>(); }
9251 template <int N, typename A0, typename A1, typename A2>
9253 { return t.template get<N>(); }
9254 
9255 template <typename A0, typename A1, typename A2, typename A3>
9256 struct tuple<A0, A1, A2, A3> {
9258  tuple() {}
9260  a0(_a0), a1(_a1), a2(_a2), a3(_a3) {}
9261  tuple(msgpack::object const& o) { o.convert(*this); }
9262  template <int N> typename tuple_element<value_type, N>::reference get()
9263  { return tuple_element<value_type, N>(*this).get(); }
9264  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9265  { return const_tuple_element<value_type, N>(*this).get(); }
9266 
9267  A0 a0;
9268  A1 a1;
9269  A2 a2;
9270  A3 a3;
9271 };
9272 
9273 template <int N, typename A0, typename A1, typename A2, typename A3>
9275 { return t.template get<N>(); }
9276 template <int N, typename A0, typename A1, typename A2, typename A3>
9278 { return t.template get<N>(); }
9279 
9280 template <typename A0, typename A1, typename A2, typename A3, typename A4>
9281 struct tuple<A0, A1, A2, A3, A4> {
9283  tuple() {}
9285  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4) {}
9286  tuple(msgpack::object const& o) { o.convert(*this); }
9287  template <int N> typename tuple_element<value_type, N>::reference get()
9288  { return tuple_element<value_type, N>(*this).get(); }
9289  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9290  { return const_tuple_element<value_type, N>(*this).get(); }
9291 
9292  A0 a0;
9293  A1 a1;
9294  A2 a2;
9295  A3 a3;
9296  A4 a4;
9297 };
9298 
9299 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4>
9301 { return t.template get<N>(); }
9302 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4>
9304 { return t.template get<N>(); }
9305 
9306 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
9307 struct tuple<A0, A1, A2, A3, A4, A5> {
9309  tuple() {}
9311  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5) {}
9312  tuple(msgpack::object const& o) { o.convert(*this); }
9313  template <int N> typename tuple_element<value_type, N>::reference get()
9314  { return tuple_element<value_type, N>(*this).get(); }
9315  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9316  { return const_tuple_element<value_type, N>(*this).get(); }
9317 
9318  A0 a0;
9319  A1 a1;
9320  A2 a2;
9321  A3 a3;
9322  A4 a4;
9323  A5 a5;
9324 };
9325 
9326 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
9328 { return t.template get<N>(); }
9329 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
9331 { return t.template get<N>(); }
9332 
9333 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
9334 struct tuple<A0, A1, A2, A3, A4, A5, A6> {
9336  tuple() {}
9338  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6) {}
9339  tuple(msgpack::object const& o) { o.convert(*this); }
9340  template <int N> typename tuple_element<value_type, N>::reference get()
9341  { return tuple_element<value_type, N>(*this).get(); }
9342  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9343  { return const_tuple_element<value_type, N>(*this).get(); }
9344 
9345  A0 a0;
9346  A1 a1;
9347  A2 a2;
9348  A3 a3;
9349  A4 a4;
9350  A5 a5;
9351  A6 a6;
9352 };
9353 
9354 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
9356 { return t.template get<N>(); }
9357 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
9359 { return t.template get<N>(); }
9360 
9361 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
9362 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7> {
9364  tuple() {}
9366  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7) {}
9367  tuple(msgpack::object const& o) { o.convert(*this); }
9368  template <int N> typename tuple_element<value_type, N>::reference get()
9369  { return tuple_element<value_type, N>(*this).get(); }
9370  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9371  { return const_tuple_element<value_type, N>(*this).get(); }
9372 
9373  A0 a0;
9374  A1 a1;
9375  A2 a2;
9376  A3 a3;
9377  A4 a4;
9378  A5 a5;
9379  A6 a6;
9380  A7 a7;
9381 };
9382 
9383 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
9385 { return t.template get<N>(); }
9386 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
9388 { return t.template get<N>(); }
9389 
9390 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
9391 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> {
9393  tuple() {}
9395  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8) {}
9396  tuple(msgpack::object const& o) { o.convert(*this); }
9397  template <int N> typename tuple_element<value_type, N>::reference get()
9398  { return tuple_element<value_type, N>(*this).get(); }
9399  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9400  { return const_tuple_element<value_type, N>(*this).get(); }
9401 
9402  A0 a0;
9403  A1 a1;
9404  A2 a2;
9405  A3 a3;
9406  A4 a4;
9407  A5 a5;
9408  A6 a6;
9409  A7 a7;
9410  A8 a8;
9411 };
9412 
9413 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
9415 { return t.template get<N>(); }
9416 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
9418 { return t.template get<N>(); }
9419 
9420 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
9421 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> {
9423  tuple() {}
9425  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9) {}
9426  tuple(msgpack::object const& o) { o.convert(*this); }
9427  template <int N> typename tuple_element<value_type, N>::reference get()
9428  { return tuple_element<value_type, N>(*this).get(); }
9429  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9430  { return const_tuple_element<value_type, N>(*this).get(); }
9431 
9432  A0 a0;
9433  A1 a1;
9434  A2 a2;
9435  A3 a3;
9436  A4 a4;
9437  A5 a5;
9438  A6 a6;
9439  A7 a7;
9440  A8 a8;
9441  A9 a9;
9442 };
9443 
9444 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
9446 { return t.template get<N>(); }
9447 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
9449 { return t.template get<N>(); }
9450 
9451 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
9452 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> {
9454  tuple() {}
9456  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10) {}
9457  tuple(msgpack::object const& o) { o.convert(*this); }
9458  template <int N> typename tuple_element<value_type, N>::reference get()
9459  { return tuple_element<value_type, N>(*this).get(); }
9460  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9461  { return const_tuple_element<value_type, N>(*this).get(); }
9462 
9463  A0 a0;
9464  A1 a1;
9465  A2 a2;
9466  A3 a3;
9467  A4 a4;
9468  A5 a5;
9469  A6 a6;
9470  A7 a7;
9471  A8 a8;
9472  A9 a9;
9473  A10 a10;
9474 };
9475 
9476 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
9478 { return t.template get<N>(); }
9479 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
9481 { return t.template get<N>(); }
9482 
9483 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
9484 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> {
9486  tuple() {}
9488  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11) {}
9489  tuple(msgpack::object const& o) { o.convert(*this); }
9490  template <int N> typename tuple_element<value_type, N>::reference get()
9491  { return tuple_element<value_type, N>(*this).get(); }
9492  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9493  { return const_tuple_element<value_type, N>(*this).get(); }
9494 
9495  A0 a0;
9496  A1 a1;
9497  A2 a2;
9498  A3 a3;
9499  A4 a4;
9500  A5 a5;
9501  A6 a6;
9502  A7 a7;
9503  A8 a8;
9504  A9 a9;
9505  A10 a10;
9506  A11 a11;
9507 };
9508 
9509 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
9511 { return t.template get<N>(); }
9512 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
9514 { return t.template get<N>(); }
9515 
9516 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
9517 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> {
9519  tuple() {}
9521  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12) {}
9522  tuple(msgpack::object const& o) { o.convert(*this); }
9523  template <int N> typename tuple_element<value_type, N>::reference get()
9524  { return tuple_element<value_type, N>(*this).get(); }
9525  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9526  { return const_tuple_element<value_type, N>(*this).get(); }
9527 
9528  A0 a0;
9529  A1 a1;
9530  A2 a2;
9531  A3 a3;
9532  A4 a4;
9533  A5 a5;
9534  A6 a6;
9535  A7 a7;
9536  A8 a8;
9537  A9 a9;
9538  A10 a10;
9539  A11 a11;
9540  A12 a12;
9541 };
9542 
9543 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
9545 { return t.template get<N>(); }
9546 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
9548 { return t.template get<N>(); }
9549 
9550 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
9551 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> {
9553  tuple() {}
9555  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13) {}
9556  tuple(msgpack::object const& o) { o.convert(*this); }
9557  template <int N> typename tuple_element<value_type, N>::reference get()
9558  { return tuple_element<value_type, N>(*this).get(); }
9559  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9560  { return const_tuple_element<value_type, N>(*this).get(); }
9561 
9562  A0 a0;
9563  A1 a1;
9564  A2 a2;
9565  A3 a3;
9566  A4 a4;
9567  A5 a5;
9568  A6 a6;
9569  A7 a7;
9570  A8 a8;
9571  A9 a9;
9572  A10 a10;
9573  A11 a11;
9574  A12 a12;
9575  A13 a13;
9576 };
9577 
9578 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
9580 { return t.template get<N>(); }
9581 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
9583 { return t.template get<N>(); }
9584 
9585 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
9586 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> {
9588  tuple() {}
9590  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14) {}
9591  tuple(msgpack::object const& o) { o.convert(*this); }
9592  template <int N> typename tuple_element<value_type, N>::reference get()
9593  { return tuple_element<value_type, N>(*this).get(); }
9594  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9595  { return const_tuple_element<value_type, N>(*this).get(); }
9596 
9597  A0 a0;
9598  A1 a1;
9599  A2 a2;
9600  A3 a3;
9601  A4 a4;
9602  A5 a5;
9603  A6 a6;
9604  A7 a7;
9605  A8 a8;
9606  A9 a9;
9607  A10 a10;
9608  A11 a11;
9609  A12 a12;
9610  A13 a13;
9611  A14 a14;
9612 };
9613 
9614 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
9616 { return t.template get<N>(); }
9617 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
9619 { return t.template get<N>(); }
9620 
9621 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
9622 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> {
9624  tuple() {}
9626  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15) {}
9627  tuple(msgpack::object const& o) { o.convert(*this); }
9628  template <int N> typename tuple_element<value_type, N>::reference get()
9629  { return tuple_element<value_type, N>(*this).get(); }
9630  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9631  { return const_tuple_element<value_type, N>(*this).get(); }
9632 
9633  A0 a0;
9634  A1 a1;
9635  A2 a2;
9636  A3 a3;
9637  A4 a4;
9638  A5 a5;
9639  A6 a6;
9640  A7 a7;
9641  A8 a8;
9642  A9 a9;
9643  A10 a10;
9644  A11 a11;
9645  A12 a12;
9646  A13 a13;
9647  A14 a14;
9648  A15 a15;
9649 };
9650 
9651 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
9653 { return t.template get<N>(); }
9654 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
9656 { return t.template get<N>(); }
9657 
9658 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
9659 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> {
9661  tuple() {}
9663  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16) {}
9664  tuple(msgpack::object const& o) { o.convert(*this); }
9665  template <int N> typename tuple_element<value_type, N>::reference get()
9666  { return tuple_element<value_type, N>(*this).get(); }
9667  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9668  { return const_tuple_element<value_type, N>(*this).get(); }
9669 
9670  A0 a0;
9671  A1 a1;
9672  A2 a2;
9673  A3 a3;
9674  A4 a4;
9675  A5 a5;
9676  A6 a6;
9677  A7 a7;
9678  A8 a8;
9679  A9 a9;
9680  A10 a10;
9681  A11 a11;
9682  A12 a12;
9683  A13 a13;
9684  A14 a14;
9685  A15 a15;
9686  A16 a16;
9687 };
9688 
9689 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
9691 { return t.template get<N>(); }
9692 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
9694 { return t.template get<N>(); }
9695 
9696 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
9697 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> {
9699  tuple() {}
9701  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17) {}
9702  tuple(msgpack::object const& o) { o.convert(*this); }
9703  template <int N> typename tuple_element<value_type, N>::reference get()
9704  { return tuple_element<value_type, N>(*this).get(); }
9705  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9706  { return const_tuple_element<value_type, N>(*this).get(); }
9707 
9708  A0 a0;
9709  A1 a1;
9710  A2 a2;
9711  A3 a3;
9712  A4 a4;
9713  A5 a5;
9714  A6 a6;
9715  A7 a7;
9716  A8 a8;
9717  A9 a9;
9718  A10 a10;
9719  A11 a11;
9720  A12 a12;
9721  A13 a13;
9722  A14 a14;
9723  A15 a15;
9724  A16 a16;
9725  A17 a17;
9726 };
9727 
9728 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
9730 { return t.template get<N>(); }
9731 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
9733 { return t.template get<N>(); }
9734 
9735 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
9736 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> {
9738  tuple() {}
9740  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18) {}
9741  tuple(msgpack::object const& o) { o.convert(*this); }
9742  template <int N> typename tuple_element<value_type, N>::reference get()
9743  { return tuple_element<value_type, N>(*this).get(); }
9744  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9745  { return const_tuple_element<value_type, N>(*this).get(); }
9746 
9747  A0 a0;
9748  A1 a1;
9749  A2 a2;
9750  A3 a3;
9751  A4 a4;
9752  A5 a5;
9753  A6 a6;
9754  A7 a7;
9755  A8 a8;
9756  A9 a9;
9757  A10 a10;
9758  A11 a11;
9759  A12 a12;
9760  A13 a13;
9761  A14 a14;
9762  A15 a15;
9763  A16 a16;
9764  A17 a17;
9765  A18 a18;
9766 };
9767 
9768 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
9770 { return t.template get<N>(); }
9771 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
9773 { return t.template get<N>(); }
9774 
9775 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
9776 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> {
9778  tuple() {}
9780  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19) {}
9781  tuple(msgpack::object const& o) { o.convert(*this); }
9782  template <int N> typename tuple_element<value_type, N>::reference get()
9783  { return tuple_element<value_type, N>(*this).get(); }
9784  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9785  { return const_tuple_element<value_type, N>(*this).get(); }
9786 
9787  A0 a0;
9788  A1 a1;
9789  A2 a2;
9790  A3 a3;
9791  A4 a4;
9792  A5 a5;
9793  A6 a6;
9794  A7 a7;
9795  A8 a8;
9796  A9 a9;
9797  A10 a10;
9798  A11 a11;
9799  A12 a12;
9800  A13 a13;
9801  A14 a14;
9802  A15 a15;
9803  A16 a16;
9804  A17 a17;
9805  A18 a18;
9806  A19 a19;
9807 };
9808 
9809 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
9811 { return t.template get<N>(); }
9812 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
9814 { return t.template get<N>(); }
9815 
9816 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
9817 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> {
9819  tuple() {}
9821  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20) {}
9822  tuple(msgpack::object const& o) { o.convert(*this); }
9823  template <int N> typename tuple_element<value_type, N>::reference get()
9824  { return tuple_element<value_type, N>(*this).get(); }
9825  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9826  { return const_tuple_element<value_type, N>(*this).get(); }
9827 
9828  A0 a0;
9829  A1 a1;
9830  A2 a2;
9831  A3 a3;
9832  A4 a4;
9833  A5 a5;
9834  A6 a6;
9835  A7 a7;
9836  A8 a8;
9837  A9 a9;
9838  A10 a10;
9839  A11 a11;
9840  A12 a12;
9841  A13 a13;
9842  A14 a14;
9843  A15 a15;
9844  A16 a16;
9845  A17 a17;
9846  A18 a18;
9847  A19 a19;
9848  A20 a20;
9849 };
9850 
9851 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
9853 { return t.template get<N>(); }
9854 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
9856 { return t.template get<N>(); }
9857 
9858 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
9859 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> {
9861  tuple() {}
9863  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21) {}
9864  tuple(msgpack::object const& o) { o.convert(*this); }
9865  template <int N> typename tuple_element<value_type, N>::reference get()
9866  { return tuple_element<value_type, N>(*this).get(); }
9867  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9868  { return const_tuple_element<value_type, N>(*this).get(); }
9869 
9870  A0 a0;
9871  A1 a1;
9872  A2 a2;
9873  A3 a3;
9874  A4 a4;
9875  A5 a5;
9876  A6 a6;
9877  A7 a7;
9878  A8 a8;
9879  A9 a9;
9880  A10 a10;
9881  A11 a11;
9882  A12 a12;
9883  A13 a13;
9884  A14 a14;
9885  A15 a15;
9886  A16 a16;
9887  A17 a17;
9888  A18 a18;
9889  A19 a19;
9890  A20 a20;
9891  A21 a21;
9892 };
9893 
9894 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
9896 { return t.template get<N>(); }
9897 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
9899 { return t.template get<N>(); }
9900 
9901 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
9902 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> {
9904  tuple() {}
9906  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22) {}
9907  tuple(msgpack::object const& o) { o.convert(*this); }
9908  template <int N> typename tuple_element<value_type, N>::reference get()
9909  { return tuple_element<value_type, N>(*this).get(); }
9910  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9911  { return const_tuple_element<value_type, N>(*this).get(); }
9912 
9913  A0 a0;
9914  A1 a1;
9915  A2 a2;
9916  A3 a3;
9917  A4 a4;
9918  A5 a5;
9919  A6 a6;
9920  A7 a7;
9921  A8 a8;
9922  A9 a9;
9923  A10 a10;
9924  A11 a11;
9925  A12 a12;
9926  A13 a13;
9927  A14 a14;
9928  A15 a15;
9929  A16 a16;
9930  A17 a17;
9931  A18 a18;
9932  A19 a19;
9933  A20 a20;
9934  A21 a21;
9935  A22 a22;
9936 };
9937 
9938 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
9940 { return t.template get<N>(); }
9941 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
9943 { return t.template get<N>(); }
9944 
9945 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
9946 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> {
9948  tuple() {}
9950  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23) {}
9951  tuple(msgpack::object const& o) { o.convert(*this); }
9952  template <int N> typename tuple_element<value_type, N>::reference get()
9953  { return tuple_element<value_type, N>(*this).get(); }
9954  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9955  { return const_tuple_element<value_type, N>(*this).get(); }
9956 
9957  A0 a0;
9958  A1 a1;
9959  A2 a2;
9960  A3 a3;
9961  A4 a4;
9962  A5 a5;
9963  A6 a6;
9964  A7 a7;
9965  A8 a8;
9966  A9 a9;
9967  A10 a10;
9968  A11 a11;
9969  A12 a12;
9970  A13 a13;
9971  A14 a14;
9972  A15 a15;
9973  A16 a16;
9974  A17 a17;
9975  A18 a18;
9976  A19 a19;
9977  A20 a20;
9978  A21 a21;
9979  A22 a22;
9980  A23 a23;
9981 };
9982 
9983 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
9985 { return t.template get<N>(); }
9986 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
9988 { return t.template get<N>(); }
9989 
9990 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
9991 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> {
9993  tuple() {}
9995  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24) {}
9996  tuple(msgpack::object const& o) { o.convert(*this); }
9997  template <int N> typename tuple_element<value_type, N>::reference get()
9998  { return tuple_element<value_type, N>(*this).get(); }
9999  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
10000  { return const_tuple_element<value_type, N>(*this).get(); }
10001 
10002  A0 a0;
10003  A1 a1;
10004  A2 a2;
10005  A3 a3;
10006  A4 a4;
10007  A5 a5;
10008  A6 a6;
10009  A7 a7;
10010  A8 a8;
10011  A9 a9;
10012  A10 a10;
10013  A11 a11;
10014  A12 a12;
10015  A13 a13;
10016  A14 a14;
10017  A15 a15;
10018  A16 a16;
10019  A17 a17;
10020  A18 a18;
10021  A19 a19;
10022  A20 a20;
10023  A21 a21;
10024  A22 a22;
10025  A23 a23;
10026  A24 a24;
10027 };
10028 
10029 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
10031 { return t.template get<N>(); }
10032 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
10034 { return t.template get<N>(); }
10035 
10036 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
10037 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> {
10039  tuple() {}
10041  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25) {}
10042  tuple(msgpack::object const& o) { o.convert(*this); }
10043  template <int N> typename tuple_element<value_type, N>::reference get()
10044  { return tuple_element<value_type, N>(*this).get(); }
10045  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
10046  { return const_tuple_element<value_type, N>(*this).get(); }
10047 
10048  A0 a0;
10049  A1 a1;
10050  A2 a2;
10051  A3 a3;
10052  A4 a4;
10053  A5 a5;
10054  A6 a6;
10055  A7 a7;
10056  A8 a8;
10057  A9 a9;
10058  A10 a10;
10059  A11 a11;
10060  A12 a12;
10061  A13 a13;
10062  A14 a14;
10063  A15 a15;
10064  A16 a16;
10065  A17 a17;
10066  A18 a18;
10067  A19 a19;
10068  A20 a20;
10069  A21 a21;
10070  A22 a22;
10071  A23 a23;
10072  A24 a24;
10073  A25 a25;
10074 };
10075 
10076 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
10078 { return t.template get<N>(); }
10079 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
10081 { return t.template get<N>(); }
10082 
10083 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
10084 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> {
10086  tuple() {}
10088  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26) {}
10089  tuple(msgpack::object const& o) { o.convert(*this); }
10090  template <int N> typename tuple_element<value_type, N>::reference get()
10091  { return tuple_element<value_type, N>(*this).get(); }
10092  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
10093  { return const_tuple_element<value_type, N>(*this).get(); }
10094 
10095  A0 a0;
10096  A1 a1;
10097  A2 a2;
10098  A3 a3;
10099  A4 a4;
10100  A5 a5;
10101  A6 a6;
10102  A7 a7;
10103  A8 a8;
10104  A9 a9;
10105  A10 a10;
10106  A11 a11;
10107  A12 a12;
10108  A13 a13;
10109  A14 a14;
10110  A15 a15;
10111  A16 a16;
10112  A17 a17;
10113  A18 a18;
10114  A19 a19;
10115  A20 a20;
10116  A21 a21;
10117  A22 a22;
10118  A23 a23;
10119  A24 a24;
10120  A25 a25;
10121  A26 a26;
10122 };
10123 
10124 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
10126 { return t.template get<N>(); }
10127 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
10129 { return t.template get<N>(); }
10130 
10131 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
10132 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> {
10134  tuple() {}
10135  tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18, typename tuple_type<A19>::transparent_reference _a19, typename tuple_type<A20>::transparent_reference _a20, typename tuple_type<A21>::transparent_reference _a21, typename tuple_type<A22>::transparent_reference _a22, typename tuple_type<A23>::transparent_reference _a23, typename tuple_type<A24>::transparent_reference _a24, typename tuple_type<A25>::transparent_reference _a25, typename tuple_type<A26>::transparent_reference _a26, typename tuple_type<A27>::transparent_reference _a27) :
10136  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27) {}
10137  tuple(msgpack::object const& o) { o.convert(*this); }
10138  template <int N> typename tuple_element<value_type, N>::reference get()
10139  { return tuple_element<value_type, N>(*this).get(); }
10140  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
10141  { return const_tuple_element<value_type, N>(*this).get(); }
10142 
10143  A0 a0;
10144  A1 a1;
10145  A2 a2;
10146  A3 a3;
10147  A4 a4;
10148  A5 a5;
10149  A6 a6;
10150  A7 a7;
10151  A8 a8;
10152  A9 a9;
10153  A10 a10;
10154  A11 a11;
10155  A12 a12;
10156  A13 a13;
10157  A14 a14;
10158  A15 a15;
10159  A16 a16;
10160  A17 a17;
10161  A18 a18;
10162  A19 a19;
10163  A20 a20;
10164  A21 a21;
10165  A22 a22;
10166  A23 a23;
10167  A24 a24;
10168  A25 a25;
10169  A26 a26;
10170  A27 a27;
10171 };
10172 
10173 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
10175 { return t.template get<N>(); }
10176 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
10178 { return t.template get<N>(); }
10179 
10180 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
10181 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> {
10183  tuple() {}
10184  tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18, typename tuple_type<A19>::transparent_reference _a19, typename tuple_type<A20>::transparent_reference _a20, typename tuple_type<A21>::transparent_reference _a21, typename tuple_type<A22>::transparent_reference _a22, typename tuple_type<A23>::transparent_reference _a23, typename tuple_type<A24>::transparent_reference _a24, typename tuple_type<A25>::transparent_reference _a25, typename tuple_type<A26>::transparent_reference _a26, typename tuple_type<A27>::transparent_reference _a27, typename tuple_type<A28>::transparent_reference _a28) :
10185  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27), a28(_a28) {}
10186  tuple(msgpack::object const& o) { o.convert(*this); }
10187  template <int N> typename tuple_element<value_type, N>::reference get()
10188  { return tuple_element<value_type, N>(*this).get(); }
10189  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
10190  { return const_tuple_element<value_type, N>(*this).get(); }
10191 
10192  A0 a0;
10193  A1 a1;
10194  A2 a2;
10195  A3 a3;
10196  A4 a4;
10197  A5 a5;
10198  A6 a6;
10199  A7 a7;
10200  A8 a8;
10201  A9 a9;
10202  A10 a10;
10203  A11 a11;
10204  A12 a12;
10205  A13 a13;
10206  A14 a14;
10207  A15 a15;
10208  A16 a16;
10209  A17 a17;
10210  A18 a18;
10211  A19 a19;
10212  A20 a20;
10213  A21 a21;
10214  A22 a22;
10215  A23 a23;
10216  A24 a24;
10217  A25 a25;
10218  A26 a26;
10219  A27 a27;
10220  A28 a28;
10221 };
10222 
10223 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
10225 { return t.template get<N>(); }
10226 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
10228 { return t.template get<N>(); }
10229 
10230 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
10231 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> {
10233  tuple() {}
10234  tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18, typename tuple_type<A19>::transparent_reference _a19, typename tuple_type<A20>::transparent_reference _a20, typename tuple_type<A21>::transparent_reference _a21, typename tuple_type<A22>::transparent_reference _a22, typename tuple_type<A23>::transparent_reference _a23, typename tuple_type<A24>::transparent_reference _a24, typename tuple_type<A25>::transparent_reference _a25, typename tuple_type<A26>::transparent_reference _a26, typename tuple_type<A27>::transparent_reference _a27, typename tuple_type<A28>::transparent_reference _a28, typename tuple_type<A29>::transparent_reference _a29) :
10235  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27), a28(_a28), a29(_a29) {}
10236  tuple(msgpack::object const& o) { o.convert(*this); }
10237  template <int N> typename tuple_element<value_type, N>::reference get()
10238  { return tuple_element<value_type, N>(*this).get(); }
10239  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
10240  { return const_tuple_element<value_type, N>(*this).get(); }
10241 
10242  A0 a0;
10243  A1 a1;
10244  A2 a2;
10245  A3 a3;
10246  A4 a4;
10247  A5 a5;
10248  A6 a6;
10249  A7 a7;
10250  A8 a8;
10251  A9 a9;
10252  A10 a10;
10253  A11 a11;
10254  A12 a12;
10255  A13 a13;
10256  A14 a14;
10257  A15 a15;
10258  A16 a16;
10259  A17 a17;
10260  A18 a18;
10261  A19 a19;
10262  A20 a20;
10263  A21 a21;
10264  A22 a22;
10265  A23 a23;
10266  A24 a24;
10267  A25 a25;
10268  A26 a26;
10269  A27 a27;
10270  A28 a28;
10271  A29 a29;
10272 };
10273 
10274 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
10276 { return t.template get<N>(); }
10277 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
10279 { return t.template get<N>(); }
10280 
10281 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
10282 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> {
10284  tuple() {}
10285  tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18, typename tuple_type<A19>::transparent_reference _a19, typename tuple_type<A20>::transparent_reference _a20, typename tuple_type<A21>::transparent_reference _a21, typename tuple_type<A22>::transparent_reference _a22, typename tuple_type<A23>::transparent_reference _a23, typename tuple_type<A24>::transparent_reference _a24, typename tuple_type<A25>::transparent_reference _a25, typename tuple_type<A26>::transparent_reference _a26, typename tuple_type<A27>::transparent_reference _a27, typename tuple_type<A28>::transparent_reference _a28, typename tuple_type<A29>::transparent_reference _a29, typename tuple_type<A30>::transparent_reference _a30) :
10286  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27), a28(_a28), a29(_a29), a30(_a30) {}
10287  tuple(msgpack::object const& o) { o.convert(*this); }
10288  template <int N> typename tuple_element<value_type, N>::reference get()
10289  { return tuple_element<value_type, N>(*this).get(); }
10290  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
10291  { return const_tuple_element<value_type, N>(*this).get(); }
10292 
10293  A0 a0;
10294  A1 a1;
10295  A2 a2;
10296  A3 a3;
10297  A4 a4;
10298  A5 a5;
10299  A6 a6;
10300  A7 a7;
10301  A8 a8;
10302  A9 a9;
10303  A10 a10;
10304  A11 a11;
10305  A12 a12;
10306  A13 a13;
10307  A14 a14;
10308  A15 a15;
10309  A16 a16;
10310  A17 a17;
10311  A18 a18;
10312  A19 a19;
10313  A20 a20;
10314  A21 a21;
10315  A22 a22;
10316  A23 a23;
10317  A24 a24;
10318  A25 a25;
10319  A26 a26;
10320  A27 a27;
10321  A28 a28;
10322  A29 a29;
10323  A30 a30;
10324 };
10325 
10326 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
10328 { return t.template get<N>(); }
10329 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
10331 { return t.template get<N>(); }
10332 
10333 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
10334 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> {
10336  tuple() {}
10337  tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18, typename tuple_type<A19>::transparent_reference _a19, typename tuple_type<A20>::transparent_reference _a20, typename tuple_type<A21>::transparent_reference _a21, typename tuple_type<A22>::transparent_reference _a22, typename tuple_type<A23>::transparent_reference _a23, typename tuple_type<A24>::transparent_reference _a24, typename tuple_type<A25>::transparent_reference _a25, typename tuple_type<A26>::transparent_reference _a26, typename tuple_type<A27>::transparent_reference _a27, typename tuple_type<A28>::transparent_reference _a28, typename tuple_type<A29>::transparent_reference _a29, typename tuple_type<A30>::transparent_reference _a30, typename tuple_type<A31>::transparent_reference _a31) :
10338  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27), a28(_a28), a29(_a29), a30(_a30), a31(_a31) {}
10339  tuple(msgpack::object const& o) { o.convert(*this); }
10340  template <int N> typename tuple_element<value_type, N>::reference get()
10341  { return tuple_element<value_type, N>(*this).get(); }
10342  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
10343  { return const_tuple_element<value_type, N>(*this).get(); }
10344 
10345  A0 a0;
10346  A1 a1;
10347  A2 a2;
10348  A3 a3;
10349  A4 a4;
10350  A5 a5;
10351  A6 a6;
10352  A7 a7;
10353  A8 a8;
10354  A9 a9;
10355  A10 a10;
10356  A11 a11;
10357  A12 a12;
10358  A13 a13;
10359  A14 a14;
10360  A15 a15;
10361  A16 a16;
10362  A17 a17;
10363  A18 a18;
10364  A19 a19;
10365  A20 a20;
10366  A21 a21;
10367  A22 a22;
10368  A23 a23;
10369  A24 a24;
10370  A25 a25;
10371  A26 a26;
10372  A27 a27;
10373  A28 a28;
10374  A29 a29;
10375  A30 a30;
10376  A31 a31;
10377 };
10378 
10379 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
10381 { return t.template get<N>(); }
10382 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
10384 { return t.template get<N>(); }
10385 
10387 
10389 {
10390  return tuple<>();
10391 }
10392 
10394 
10395 template <typename A0>
10397 {
10398  return tuple<A0>(a0);
10399 }
10400 
10401 template <typename A0, typename A1>
10403 {
10404  return tuple<A0, A1>(a0, a1);
10405 }
10406 
10407 template <typename A0, typename A1, typename A2>
10409 {
10410  return tuple<A0, A1, A2>(a0, a1, a2);
10411 }
10412 
10413 template <typename A0, typename A1, typename A2, typename A3>
10415 {
10416  return tuple<A0, A1, A2, A3>(a0, a1, a2, a3);
10417 }
10418 
10419 template <typename A0, typename A1, typename A2, typename A3, typename A4>
10421 {
10422  return tuple<A0, A1, A2, A3, A4>(a0, a1, a2, a3, a4);
10423 }
10424 
10425 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
10427 {
10428  return tuple<A0, A1, A2, A3, A4, A5>(a0, a1, a2, a3, a4, a5);
10429 }
10430 
10431 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
10433 {
10434  return tuple<A0, A1, A2, A3, A4, A5, A6>(a0, a1, a2, a3, a4, a5, a6);
10435 }
10436 
10437 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
10439 {
10440  return tuple<A0, A1, A2, A3, A4, A5, A6, A7>(a0, a1, a2, a3, a4, a5, a6, a7);
10441 }
10442 
10443 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
10445 {
10446  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>(a0, a1, a2, a3, a4, a5, a6, a7, a8);
10447 }
10448 
10449 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
10451 {
10452  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
10453 }
10454 
10455 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
10457 {
10458  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
10459 }
10460 
10461 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
10463 {
10464  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
10465 }
10466 
10467 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
10469 {
10470  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12);
10471 }
10472 
10473 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
10475 {
10476  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13);
10477 }
10478 
10479 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
10481 {
10482  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14);
10483 }
10484 
10485 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
10487 {
10488  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);
10489 }
10490 
10491 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
10493 {
10494  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16);
10495 }
10496 
10497 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
10499 {
10500  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17);
10501 }
10502 
10503 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
10505 {
10506  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18);
10507 }
10508 
10509 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
10511 {
10512  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19);
10513 }
10514 
10515 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
10517 {
10518  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
10519 }
10520 
10521 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
10523 {
10524  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21);
10525 }
10526 
10527 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
10529 {
10530  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22);
10531 }
10532 
10533 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
10535 {
10536  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23);
10537 }
10538 
10539 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
10541 {
10542  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24);
10543 }
10544 
10545 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
10546 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25)
10547 {
10548  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25);
10549 }
10550 
10551 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
10552 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26)
10553 {
10554  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26);
10555 }
10556 
10557 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
10558 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26, typename tuple_type<A27>::transparent_reference a27)
10559 {
10560  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27);
10561 }
10562 
10563 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
10564 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26, typename tuple_type<A27>::transparent_reference a27, typename tuple_type<A28>::transparent_reference a28)
10565 {
10566  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28);
10567 }
10568 
10569 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
10570 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26, typename tuple_type<A27>::transparent_reference a27, typename tuple_type<A28>::transparent_reference a28, typename tuple_type<A29>::transparent_reference a29)
10571 {
10572  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29);
10573 }
10574 
10575 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
10576 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26, typename tuple_type<A27>::transparent_reference a27, typename tuple_type<A28>::transparent_reference a28, typename tuple_type<A29>::transparent_reference a29, typename tuple_type<A30>::transparent_reference a30)
10577 {
10578  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30);
10579 }
10580 
10581 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
10582 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26, typename tuple_type<A27>::transparent_reference a27, typename tuple_type<A28>::transparent_reference a28, typename tuple_type<A29>::transparent_reference a29, typename tuple_type<A30>::transparent_reference a30, typename tuple_type<A31>::transparent_reference a31)
10583 {
10584  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31);
10585 }
10586 
10588 
10589 } // namespace type
10590 
10591 namespace adaptor {
10592 
10593 template <>
10594 struct convert<type::tuple<> > {
10596  msgpack::object const& o,
10597  type::tuple<>&) const {
10598  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10599  return o;
10600  }
10601 };
10602 
10604 
10605 template <typename A0>
10606 struct convert<type::tuple<A0> > {
10607  msgpack::object const& operator()(
10608  msgpack::object const& o,
10609  type::tuple<A0>& v) const {
10610  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10611  if(o.via.array.size < 1) { throw msgpack::type_error(); }
10612 
10613  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10614  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10615  return o;
10616  }
10617 };
10618 
10619 template <typename A0, typename A1>
10620 struct convert<type::tuple<A0, A1> > {
10621  msgpack::object const& operator()(
10622  msgpack::object const& o,
10623  type::tuple<A0, A1>& v) const {
10624  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10625  if(o.via.array.size < 2) { throw msgpack::type_error(); }
10626 
10627  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10628  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10629  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10630  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10631  return o;
10632  }
10633 };
10634 
10635 template <typename A0, typename A1, typename A2>
10636 struct convert<type::tuple<A0, A1, A2> > {
10637  msgpack::object const& operator()(
10638  msgpack::object const& o,
10639  type::tuple<A0, A1, A2>& v) const {
10640  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10641  if(o.via.array.size < 3) { throw msgpack::type_error(); }
10642 
10643  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10644  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10645  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10646  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10647  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10648  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10649  return o;
10650  }
10651 };
10652 
10653 template <typename A0, typename A1, typename A2, typename A3>
10654 struct convert<type::tuple<A0, A1, A2, A3> > {
10655  msgpack::object const& operator()(
10656  msgpack::object const& o,
10657  type::tuple<A0, A1, A2, A3>& v) const {
10658  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10659  if(o.via.array.size < 4) { throw msgpack::type_error(); }
10660 
10661  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10662  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10663  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10664  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10665  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10666  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10667  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10668  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10669  return o;
10670  }
10671 };
10672 
10673 template <typename A0, typename A1, typename A2, typename A3, typename A4>
10674 struct convert<type::tuple<A0, A1, A2, A3, A4> > {
10675  msgpack::object const& operator()(
10676  msgpack::object const& o,
10678  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10679  if(o.via.array.size < 5) { throw msgpack::type_error(); }
10680 
10681  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10682  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10683  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10684  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10685  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10686  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10687  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10688  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10689  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10690  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10691  return o;
10692  }
10693 };
10694 
10695 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
10696 struct convert<type::tuple<A0, A1, A2, A3, A4, A5> > {
10697  msgpack::object const& operator()(
10698  msgpack::object const& o,
10700  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10701  if(o.via.array.size < 6) { throw msgpack::type_error(); }
10702 
10703  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10704  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10705  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10706  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10707  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10708  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10709  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10710  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10711  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10712  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10713  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10714  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10715  return o;
10716  }
10717 };
10718 
10719 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
10720 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6> > {
10721  msgpack::object const& operator()(
10722  msgpack::object const& o,
10724  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10725  if(o.via.array.size < 7) { throw msgpack::type_error(); }
10726 
10727  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10728  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10729  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10730  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10731  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10732  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10733  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10734  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10735  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10736  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10737  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10738  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10739  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10740  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
10741  return o;
10742  }
10743 };
10744 
10745 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
10746 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7> > {
10747  msgpack::object const& operator()(
10748  msgpack::object const& o,
10750  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10751  if(o.via.array.size < 8) { throw msgpack::type_error(); }
10752 
10753  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10754  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10755  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10756  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10757  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10758  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10759  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10760  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10761  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10762  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10763  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10764  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10765  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10766  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
10767  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10768  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
10769  return o;
10770  }
10771 };
10772 
10773 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
10774 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> > {
10775  msgpack::object const& operator()(
10776  msgpack::object const& o,
10778  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10779  if(o.via.array.size < 9) { throw msgpack::type_error(); }
10780 
10781  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10782  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10783  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10784  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10785  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10786  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10787  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10788  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10789  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10790  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10791  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10792  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10793  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10794  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
10795  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10796  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
10797  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10798  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
10799  return o;
10800  }
10801 };
10802 
10803 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
10804 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> > {
10805  msgpack::object const& operator()(
10806  msgpack::object const& o,
10808  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10809  if(o.via.array.size < 10) { throw msgpack::type_error(); }
10810 
10811  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10812  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10813  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10814  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10815  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10816  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10817  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10818  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10819  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10820  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10821  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10822  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10823  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10824  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
10825  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10826  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
10827  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10828  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
10829  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10830  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
10831  return o;
10832  }
10833 };
10834 
10835 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
10836 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> > {
10837  msgpack::object const& operator()(
10838  msgpack::object const& o,
10840  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10841  if(o.via.array.size < 11) { throw msgpack::type_error(); }
10842 
10843  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10844  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10845  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10846  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10847  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10848  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10849  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10850  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10851  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10852  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10853  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10854  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10855  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10856  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
10857  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10858  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
10859  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10860  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
10861  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10862  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
10863  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10864  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
10865  return o;
10866  }
10867 };
10868 
10869 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
10870 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> > {
10871  msgpack::object const& operator()(
10872  msgpack::object const& o,
10874  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10875  if(o.via.array.size < 12) { throw msgpack::type_error(); }
10876 
10877  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10878  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10879  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10880  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10881  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10882  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10883  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10884  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10885  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10886  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10887  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10888  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10889  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10890  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
10891  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10892  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
10893  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10894  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
10895  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10896  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
10897  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10898  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
10899  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10900  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
10901  return o;
10902  }
10903 };
10904 
10905 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
10906 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> > {
10907  msgpack::object const& operator()(
10908  msgpack::object const& o,
10910  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10911  if(o.via.array.size < 13) { throw msgpack::type_error(); }
10912 
10913  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10914  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10915  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10916  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10917  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10918  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10919  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10920  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10921  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10922  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10923  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10924  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10925  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10926  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
10927  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10928  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
10929  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10930  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
10931  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10932  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
10933  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10934  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
10935  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10936  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
10937  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10938  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
10939  return o;
10940  }
10941 };
10942 
10943 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
10944 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> > {
10945  msgpack::object const& operator()(
10946  msgpack::object const& o,
10948  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10949  if(o.via.array.size < 14) { throw msgpack::type_error(); }
10950 
10951  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10952  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10953  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10954  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10955  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10956  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10957  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10958  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10959  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10960  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10961  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10962  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10963  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10964  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
10965  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10966  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
10967  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10968  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
10969  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10970  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
10971  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10972  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
10973  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10974  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
10975  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10976  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
10977  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10978  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
10979  return o;
10980  }
10981 };
10982 
10983 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
10984 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> > {
10985  msgpack::object const& operator()(
10986  msgpack::object const& o,
10988  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10989  if(o.via.array.size < 15) { throw msgpack::type_error(); }
10990 
10991  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10992  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10993  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10994  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10995  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10996  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10997  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10998  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10999  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11000  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11001  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11002  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11003  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11004  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11005  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11006  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11007  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11008  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11009  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11010  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11011  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11012  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11013  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11014  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11015  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11016  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11017  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11018  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11019  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11020  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11021  return o;
11022  }
11023 };
11024 
11025 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
11026 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> > {
11027  msgpack::object const& operator()(
11028  msgpack::object const& o,
11030  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11031  if(o.via.array.size < 16) { throw msgpack::type_error(); }
11032 
11033  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11034  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11035  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11036  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11037  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11038  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11039  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11040  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11041  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11042  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11043  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11044  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11045  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11046  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11047  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11048  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11049  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11050  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11051  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11052  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11053  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11054  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11055  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11056  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11057  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11058  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11059  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11060  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11061  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11062  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11063  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11064  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11065  return o;
11066  }
11067 };
11068 
11069 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
11070 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> > {
11071  msgpack::object const& operator()(
11072  msgpack::object const& o,
11074  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11075  if(o.via.array.size < 17) { throw msgpack::type_error(); }
11076 
11077  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11078  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11079  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11080  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11081  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11082  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11083  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11084  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11085  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11086  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11087  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11088  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11089  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11090  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11091  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11092  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11093  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11094  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11095  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11096  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11097  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11098  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11099  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11100  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11101  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11102  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11103  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11104  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11105  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11106  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11107  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11108  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11109  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11110  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11111  return o;
11112  }
11113 };
11114 
11115 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
11116 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> > {
11117  msgpack::object const& operator()(
11118  msgpack::object const& o,
11120  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11121  if(o.via.array.size < 18) { throw msgpack::type_error(); }
11122 
11123  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11124  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11125  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11126  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11127  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11128  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11129  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11130  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11131  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11132  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11133  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11134  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11135  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11136  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11137  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11138  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11139  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11140  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11141  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11142  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11143  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11144  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11145  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11146  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11147  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11148  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11149  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11150  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11151  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11152  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11153  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11154  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11155  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11156  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11157  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11158  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11159  return o;
11160  }
11161 };
11162 
11163 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
11164 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> > {
11165  msgpack::object const& operator()(
11166  msgpack::object const& o,
11168  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11169  if(o.via.array.size < 19) { throw msgpack::type_error(); }
11170 
11171  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11172  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11173  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11174  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11175  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11176  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11177  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11178  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11179  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11180  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11181  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11182  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11183  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11184  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11185  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11186  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11187  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11188  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11189  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11190  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11191  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11192  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11193  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11194  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11195  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11196  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11197  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11198  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11199  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11200  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11201  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11202  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11203  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11204  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11205  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11206  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11207  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11208  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11209  return o;
11210  }
11211 };
11212 
11213 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
11214 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> > {
11215  msgpack::object const& operator()(
11216  msgpack::object const& o,
11218  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11219  if(o.via.array.size < 20) { throw msgpack::type_error(); }
11220 
11221  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11222  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11223  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11224  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11225  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11226  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11227  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11228  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11229  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11230  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11231  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11232  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11233  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11234  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11235  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11236  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11237  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11238  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11239  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11240  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11241  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11242  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11243  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11244  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11245  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11246  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11247  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11248  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11249  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11250  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11251  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11252  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11253  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11254  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11255  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11256  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11257  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11258  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11259  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11260  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11261  return o;
11262  }
11263 };
11264 
11265 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
11266 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> > {
11267  msgpack::object const& operator()(
11268  msgpack::object const& o,
11270  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11271  if(o.via.array.size < 21) { throw msgpack::type_error(); }
11272 
11273  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11274  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11275  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11276  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11277  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11278  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11279  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11280  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11281  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11282  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11283  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11284  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11285  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11286  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11287  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11288  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11289  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11290  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11291  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11292  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11293  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11294  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11295  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11296  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11297  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11298  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11299  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11300  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11301  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11302  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11303  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11304  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11305  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11306  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11307  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11308  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11309  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11310  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11311  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11312  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11313  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11314  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11315  return o;
11316  }
11317 };
11318 
11319 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
11320 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> > {
11321  msgpack::object const& operator()(
11322  msgpack::object const& o,
11324  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11325  if(o.via.array.size < 22) { throw msgpack::type_error(); }
11326 
11327  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11328  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11329  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11330  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11331  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11332  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11333  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11334  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11335  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11336  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11337  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11338  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11339  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11340  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11341  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11342  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11343  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11344  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11345  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11346  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11347  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11348  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11349  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11350  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11351  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11352  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11353  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11354  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11355  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11356  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11357  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11358  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11359  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11360  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11361  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11362  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11363  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11364  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11365  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11366  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11367  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11368  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11369  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11370  o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11371  return o;
11372  }
11373 };
11374 
11375 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
11376 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> > {
11377  msgpack::object const& operator()(
11378  msgpack::object const& o,
11380  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11381  if(o.via.array.size < 23) { throw msgpack::type_error(); }
11382 
11383  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11384  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11385  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11386  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11387  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11388  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11389  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11390  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11391  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11392  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11393  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11394  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11395  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11396  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11397  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11398  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11399  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11400  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11401  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11402  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11403  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11404  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11405  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11406  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11407  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11408  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11409  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11410  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11411  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11412  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11413  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11414  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11415  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11416  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11417  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11418  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11419  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11420  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11421  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11422  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11423  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11424  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11425  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11426  o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11427  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11428  o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11429  return o;
11430  }
11431 };
11432 
11433 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
11434 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> > {
11435  msgpack::object const& operator()(
11436  msgpack::object const& o,
11438  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11439  if(o.via.array.size < 24) { throw msgpack::type_error(); }
11440 
11441  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11442  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11443  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11444  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11445  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11446  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11447  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11448  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11449  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11450  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11451  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11452  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11453  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11454  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11455  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11456  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11457  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11458  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11459  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11460  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11461  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11462  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11463  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11464  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11465  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11466  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11467  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11468  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11469  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11470  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11471  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11472  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11473  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11474  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11475  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11476  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11477  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11478  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11479  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11480  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11481  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11482  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11483  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11484  o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11485  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11486  o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11487  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11488  o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
11489  return o;
11490  }
11491 };
11492 
11493 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
11494 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> > {
11495  msgpack::object const& operator()(
11496  msgpack::object const& o,
11498  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11499  if(o.via.array.size < 25) { throw msgpack::type_error(); }
11500 
11501  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11502  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11503  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11504  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11505  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11506  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11507  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11508  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11509  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11510  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11511  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11512  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11513  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11514  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11515  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11516  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11517  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11518  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11519  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11520  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11521  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11522  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11523  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11524  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11525  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11526  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11527  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11528  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11529  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11530  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11531  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11532  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11533  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11534  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11535  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11536  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11537  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11538  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11539  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11540  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11541  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11542  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11543  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11544  o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11545  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11546  o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11547  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11548  o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
11549  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11550  o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
11551  return o;
11552  }
11553 };
11554 
11555 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
11556 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> > {
11557  msgpack::object const& operator()(
11558  msgpack::object const& o,
11560  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11561  if(o.via.array.size < 26) { throw msgpack::type_error(); }
11562 
11563  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11564  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11565  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11566  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11567  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11568  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11569  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11570  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11571  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11572  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11573  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11574  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11575  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11576  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11577  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11578  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11579  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11580  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11581  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11582  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11583  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11584  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11585  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11586  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11587  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11588  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11589  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11590  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11591  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11592  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11593  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11594  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11595  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11596  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11597  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11598  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11599  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11600  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11601  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11602  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11603  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11604  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11605  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11606  o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11607  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11608  o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11609  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11610  o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
11611  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11612  o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
11613  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11614  o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
11615  return o;
11616  }
11617 };
11618 
11619 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
11620 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> > {
11621  msgpack::object const& operator()(
11622  msgpack::object const& o,
11624  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11625  if(o.via.array.size < 27) { throw msgpack::type_error(); }
11626 
11627  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11628  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11629  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11630  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11631  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11632  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11633  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11634  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11635  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11636  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11637  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11638  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11639  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11640  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11641  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11642  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11643  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11644  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11645  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11646  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11647  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11648  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11649  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11650  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11651  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11652  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11653  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11654  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11655  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11656  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11657  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11658  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11659  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11660  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11661  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11662  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11663  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11664  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11665  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11666  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11667  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11668  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11669  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11670  o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11671  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11672  o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11673  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11674  o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
11675  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11676  o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
11677  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11678  o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
11679  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11680  o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
11681  return o;
11682  }
11683 };
11684 
11685 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
11686 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> > {
11687  msgpack::object const& operator()(
11688  msgpack::object const& o,
11690  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11691  if(o.via.array.size < 28) { throw msgpack::type_error(); }
11692 
11693  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11694  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11695  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11696  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11697  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11698  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11699  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11700  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11701  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11702  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11703  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11704  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11705  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11706  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11707  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11708  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11709  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11710  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11711  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11712  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11713  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11714  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11715  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11716  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11717  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11718  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11719  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11720  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11721  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11722  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11723  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11724  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11725  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11726  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11727  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11728  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11729  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11730  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11731  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11732  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11733  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11734  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11735  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11736  o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11737  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11738  o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11739  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11740  o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
11741  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11742  o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
11743  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11744  o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
11745  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11746  o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
11747  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11748  o.via.array.ptr[27].msgpack::object::convert<typename type::tuple_type<A27>::type>(v.template get<27>());
11749  return o;
11750  }
11751 };
11752 
11753 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
11754 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> > {
11755  msgpack::object const& operator()(
11756  msgpack::object const& o,
11758  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11759  if(o.via.array.size < 29) { throw msgpack::type_error(); }
11760 
11761  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11762  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11763  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11764  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11765  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11766  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11767  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11768  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11769  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11770  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11771  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11772  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11773  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11774  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11775  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11776  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11777  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11778  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11779  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11780  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11781  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11782  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11783  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11784  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11785  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11786  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11787  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11788  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11789  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11790  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11791  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11792  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11793  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11794  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11795  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11796  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11797  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11798  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11799  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11800  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11801  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11802  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11803  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11804  o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11805  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11806  o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11807  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11808  o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
11809  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11810  o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
11811  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11812  o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
11813  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11814  o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
11815  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11816  o.via.array.ptr[27].msgpack::object::convert<typename type::tuple_type<A27>::type>(v.template get<27>());
11817  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11818  o.via.array.ptr[28].msgpack::object::convert<typename type::tuple_type<A28>::type>(v.template get<28>());
11819  return o;
11820  }
11821 };
11822 
11823 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
11824 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> > {
11825  msgpack::object const& operator()(
11826  msgpack::object const& o,
11828  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11829  if(o.via.array.size < 30) { throw msgpack::type_error(); }
11830 
11831  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11832  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11833  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11834  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11835  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11836  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11837  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11838  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11839  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11840  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11841  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11842  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11843  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11844  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11845  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11846  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11847  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11848  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11849  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11850  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11851  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11852  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11853  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11854  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11855  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11856  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11857  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11858  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11859  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11860  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11861  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11862  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11863  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11864  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11865  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11866  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11867  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11868  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11869  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11870  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11871  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11872  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11873  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11874  o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11875  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11876  o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11877  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11878  o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
11879  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11880  o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
11881  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11882  o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
11883  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11884  o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
11885  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11886  o.via.array.ptr[27].msgpack::object::convert<typename type::tuple_type<A27>::type>(v.template get<27>());
11887  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11888  o.via.array.ptr[28].msgpack::object::convert<typename type::tuple_type<A28>::type>(v.template get<28>());
11889  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11890  o.via.array.ptr[29].msgpack::object::convert<typename type::tuple_type<A29>::type>(v.template get<29>());
11891  return o;
11892  }
11893 };
11894 
11895 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
11896 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> > {
11897  msgpack::object const& operator()(
11898  msgpack::object const& o,
11900  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11901  if(o.via.array.size < 31) { throw msgpack::type_error(); }
11902 
11903  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11904  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11905  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11906  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11907  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11908  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11909  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11910  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11911  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11912  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11913  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11914  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11915  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11916  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11917  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11918  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11919  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11920  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11921  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11922  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11923  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11924  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11925  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11926  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11927  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11928  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11929  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11930  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11931  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11932  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11933  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11934  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11935  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11936  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11937  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11938  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11939  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11940  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11941  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11942  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11943  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11944  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11945  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11946  o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11947  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11948  o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11949  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11950  o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
11951  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11952  o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
11953  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11954  o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
11955  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11956  o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
11957  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11958  o.via.array.ptr[27].msgpack::object::convert<typename type::tuple_type<A27>::type>(v.template get<27>());
11959  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11960  o.via.array.ptr[28].msgpack::object::convert<typename type::tuple_type<A28>::type>(v.template get<28>());
11961  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11962  o.via.array.ptr[29].msgpack::object::convert<typename type::tuple_type<A29>::type>(v.template get<29>());
11963  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11964  o.via.array.ptr[30].msgpack::object::convert<typename type::tuple_type<A30>::type>(v.template get<30>());
11965  return o;
11966  }
11967 };
11968 
11969 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
11970 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> > {
11971  msgpack::object const& operator()(
11972  msgpack::object const& o,
11974  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11975  if(o.via.array.size < 32) { throw msgpack::type_error(); }
11976 
11977  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11978  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11979  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11980  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11981  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11982  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11983  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11984  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11985  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11986  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11987  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11988  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11989  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11990  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11991  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11992  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11993  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11994  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11995  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11996  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11997  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11998  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11999  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12000  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
12001  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12002  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
12003  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12004  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
12005  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12006  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
12007  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12008  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
12009  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12010  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
12011  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12012  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
12013  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12014  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
12015  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12016  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
12017  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12018  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
12019  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12020  o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
12021  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12022  o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
12023  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12024  o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
12025  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12026  o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
12027  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12028  o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
12029  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12030  o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
12031  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12032  o.via.array.ptr[27].msgpack::object::convert<typename type::tuple_type<A27>::type>(v.template get<27>());
12033  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12034  o.via.array.ptr[28].msgpack::object::convert<typename type::tuple_type<A28>::type>(v.template get<28>());
12035  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12036  o.via.array.ptr[29].msgpack::object::convert<typename type::tuple_type<A29>::type>(v.template get<29>());
12037  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12038  o.via.array.ptr[30].msgpack::object::convert<typename type::tuple_type<A30>::type>(v.template get<30>());
12039  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12040  o.via.array.ptr[31].msgpack::object::convert<typename type::tuple_type<A31>::type>(v.template get<31>());
12041  return o;
12042  }
12043 };
12044 
12046 
12047 template <>
12048 struct pack<type::tuple<> > {
12049  template <typename Stream>
12052  const type::tuple<>&) const {
12053  o.pack_array(0);
12054  return o;
12055  }
12056 };
12057 
12059 
12060 template <typename A0>
12061 struct pack<type::tuple<A0> > {
12062  template <typename Stream>
12063  msgpack::packer<Stream>& operator()(
12065  const type::tuple<A0>& v) const {
12066  o.pack_array(1);
12067 
12068  o.pack(v.template get<0>());
12069  return o;
12070  }
12071 };
12072 
12073 template <typename A0, typename A1>
12074 struct pack<type::tuple<A0, A1> > {
12075  template <typename Stream>
12076  msgpack::packer<Stream>& operator()(
12078  const type::tuple<A0, A1>& v) const {
12079  o.pack_array(2);
12080 
12081  o.pack(v.template get<0>());
12082  o.pack(v.template get<1>());
12083  return o;
12084  }
12085 };
12086 
12087 template <typename A0, typename A1, typename A2>
12088 struct pack<type::tuple<A0, A1, A2> > {
12089  template <typename Stream>
12090  msgpack::packer<Stream>& operator()(
12092  const type::tuple<A0, A1, A2>& v) const {
12093  o.pack_array(3);
12094 
12095  o.pack(v.template get<0>());
12096  o.pack(v.template get<1>());
12097  o.pack(v.template get<2>());
12098  return o;
12099  }
12100 };
12101 
12102 template <typename A0, typename A1, typename A2, typename A3>
12103 struct pack<type::tuple<A0, A1, A2, A3> > {
12104  template <typename Stream>
12105  msgpack::packer<Stream>& operator()(
12107  const type::tuple<A0, A1, A2, A3>& v) const {
12108  o.pack_array(4);
12109 
12110  o.pack(v.template get<0>());
12111  o.pack(v.template get<1>());
12112  o.pack(v.template get<2>());
12113  o.pack(v.template get<3>());
12114  return o;
12115  }
12116 };
12117 
12118 template <typename A0, typename A1, typename A2, typename A3, typename A4>
12119 struct pack<type::tuple<A0, A1, A2, A3, A4> > {
12120  template <typename Stream>
12121  msgpack::packer<Stream>& operator()(
12123  const type::tuple<A0, A1, A2, A3, A4>& v) const {
12124  o.pack_array(5);
12125 
12126  o.pack(v.template get<0>());
12127  o.pack(v.template get<1>());
12128  o.pack(v.template get<2>());
12129  o.pack(v.template get<3>());
12130  o.pack(v.template get<4>());
12131  return o;
12132  }
12133 };
12134 
12135 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
12136 struct pack<type::tuple<A0, A1, A2, A3, A4, A5> > {
12137  template <typename Stream>
12138  msgpack::packer<Stream>& operator()(
12140  const type::tuple<A0, A1, A2, A3, A4, A5>& v) const {
12141  o.pack_array(6);
12142 
12143  o.pack(v.template get<0>());
12144  o.pack(v.template get<1>());
12145  o.pack(v.template get<2>());
12146  o.pack(v.template get<3>());
12147  o.pack(v.template get<4>());
12148  o.pack(v.template get<5>());
12149  return o;
12150  }
12151 };
12152 
12153 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
12154 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6> > {
12155  template <typename Stream>
12156  msgpack::packer<Stream>& operator()(
12158  const type::tuple<A0, A1, A2, A3, A4, A5, A6>& v) const {
12159  o.pack_array(7);
12160 
12161  o.pack(v.template get<0>());
12162  o.pack(v.template get<1>());
12163  o.pack(v.template get<2>());
12164  o.pack(v.template get<3>());
12165  o.pack(v.template get<4>());
12166  o.pack(v.template get<5>());
12167  o.pack(v.template get<6>());
12168  return o;
12169  }
12170 };
12171 
12172 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
12173 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7> > {
12174  template <typename Stream>
12175  msgpack::packer<Stream>& operator()(
12178  o.pack_array(8);
12179 
12180  o.pack(v.template get<0>());
12181  o.pack(v.template get<1>());
12182  o.pack(v.template get<2>());
12183  o.pack(v.template get<3>());
12184  o.pack(v.template get<4>());
12185  o.pack(v.template get<5>());
12186  o.pack(v.template get<6>());
12187  o.pack(v.template get<7>());
12188  return o;
12189  }
12190 };
12191 
12192 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
12193 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> > {
12194  template <typename Stream>
12195  msgpack::packer<Stream>& operator()(
12198  o.pack_array(9);
12199 
12200  o.pack(v.template get<0>());
12201  o.pack(v.template get<1>());
12202  o.pack(v.template get<2>());
12203  o.pack(v.template get<3>());
12204  o.pack(v.template get<4>());
12205  o.pack(v.template get<5>());
12206  o.pack(v.template get<6>());
12207  o.pack(v.template get<7>());
12208  o.pack(v.template get<8>());
12209  return o;
12210  }
12211 };
12212 
12213 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
12214 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> > {
12215  template <typename Stream>
12216  msgpack::packer<Stream>& operator()(
12219  o.pack_array(10);
12220 
12221  o.pack(v.template get<0>());
12222  o.pack(v.template get<1>());
12223  o.pack(v.template get<2>());
12224  o.pack(v.template get<3>());
12225  o.pack(v.template get<4>());
12226  o.pack(v.template get<5>());
12227  o.pack(v.template get<6>());
12228  o.pack(v.template get<7>());
12229  o.pack(v.template get<8>());
12230  o.pack(v.template get<9>());
12231  return o;
12232  }
12233 };
12234 
12235 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
12236 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> > {
12237  template <typename Stream>
12238  msgpack::packer<Stream>& operator()(
12241  o.pack_array(11);
12242 
12243  o.pack(v.template get<0>());
12244  o.pack(v.template get<1>());
12245  o.pack(v.template get<2>());
12246  o.pack(v.template get<3>());
12247  o.pack(v.template get<4>());
12248  o.pack(v.template get<5>());
12249  o.pack(v.template get<6>());
12250  o.pack(v.template get<7>());
12251  o.pack(v.template get<8>());
12252  o.pack(v.template get<9>());
12253  o.pack(v.template get<10>());
12254  return o;
12255  }
12256 };
12257 
12258 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
12259 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> > {
12260  template <typename Stream>
12261  msgpack::packer<Stream>& operator()(
12264  o.pack_array(12);
12265 
12266  o.pack(v.template get<0>());
12267  o.pack(v.template get<1>());
12268  o.pack(v.template get<2>());
12269  o.pack(v.template get<3>());
12270  o.pack(v.template get<4>());
12271  o.pack(v.template get<5>());
12272  o.pack(v.template get<6>());
12273  o.pack(v.template get<7>());
12274  o.pack(v.template get<8>());
12275  o.pack(v.template get<9>());
12276  o.pack(v.template get<10>());
12277  o.pack(v.template get<11>());
12278  return o;
12279  }
12280 };
12281 
12282 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
12283 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> > {
12284  template <typename Stream>
12285  msgpack::packer<Stream>& operator()(
12288  o.pack_array(13);
12289 
12290  o.pack(v.template get<0>());
12291  o.pack(v.template get<1>());
12292  o.pack(v.template get<2>());
12293  o.pack(v.template get<3>());
12294  o.pack(v.template get<4>());
12295  o.pack(v.template get<5>());
12296  o.pack(v.template get<6>());
12297  o.pack(v.template get<7>());
12298  o.pack(v.template get<8>());
12299  o.pack(v.template get<9>());
12300  o.pack(v.template get<10>());
12301  o.pack(v.template get<11>());
12302  o.pack(v.template get<12>());
12303  return o;
12304  }
12305 };
12306 
12307 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
12308 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> > {
12309  template <typename Stream>
12310  msgpack::packer<Stream>& operator()(
12313  o.pack_array(14);
12314 
12315  o.pack(v.template get<0>());
12316  o.pack(v.template get<1>());
12317  o.pack(v.template get<2>());
12318  o.pack(v.template get<3>());
12319  o.pack(v.template get<4>());
12320  o.pack(v.template get<5>());
12321  o.pack(v.template get<6>());
12322  o.pack(v.template get<7>());
12323  o.pack(v.template get<8>());
12324  o.pack(v.template get<9>());
12325  o.pack(v.template get<10>());
12326  o.pack(v.template get<11>());
12327  o.pack(v.template get<12>());
12328  o.pack(v.template get<13>());
12329  return o;
12330  }
12331 };
12332 
12333 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
12334 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> > {
12335  template <typename Stream>
12336  msgpack::packer<Stream>& operator()(
12339  o.pack_array(15);
12340 
12341  o.pack(v.template get<0>());
12342  o.pack(v.template get<1>());
12343  o.pack(v.template get<2>());
12344  o.pack(v.template get<3>());
12345  o.pack(v.template get<4>());
12346  o.pack(v.template get<5>());
12347  o.pack(v.template get<6>());
12348  o.pack(v.template get<7>());
12349  o.pack(v.template get<8>());
12350  o.pack(v.template get<9>());
12351  o.pack(v.template get<10>());
12352  o.pack(v.template get<11>());
12353  o.pack(v.template get<12>());
12354  o.pack(v.template get<13>());
12355  o.pack(v.template get<14>());
12356  return o;
12357  }
12358 };
12359 
12360 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
12361 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> > {
12362  template <typename Stream>
12363  msgpack::packer<Stream>& operator()(
12366  o.pack_array(16);
12367 
12368  o.pack(v.template get<0>());
12369  o.pack(v.template get<1>());
12370  o.pack(v.template get<2>());
12371  o.pack(v.template get<3>());
12372  o.pack(v.template get<4>());
12373  o.pack(v.template get<5>());
12374  o.pack(v.template get<6>());
12375  o.pack(v.template get<7>());
12376  o.pack(v.template get<8>());
12377  o.pack(v.template get<9>());
12378  o.pack(v.template get<10>());
12379  o.pack(v.template get<11>());
12380  o.pack(v.template get<12>());
12381  o.pack(v.template get<13>());
12382  o.pack(v.template get<14>());
12383  o.pack(v.template get<15>());
12384  return o;
12385  }
12386 };
12387 
12388 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
12389 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> > {
12390  template <typename Stream>
12391  msgpack::packer<Stream>& operator()(
12394  o.pack_array(17);
12395 
12396  o.pack(v.template get<0>());
12397  o.pack(v.template get<1>());
12398  o.pack(v.template get<2>());
12399  o.pack(v.template get<3>());
12400  o.pack(v.template get<4>());
12401  o.pack(v.template get<5>());
12402  o.pack(v.template get<6>());
12403  o.pack(v.template get<7>());
12404  o.pack(v.template get<8>());
12405  o.pack(v.template get<9>());
12406  o.pack(v.template get<10>());
12407  o.pack(v.template get<11>());
12408  o.pack(v.template get<12>());
12409  o.pack(v.template get<13>());
12410  o.pack(v.template get<14>());
12411  o.pack(v.template get<15>());
12412  o.pack(v.template get<16>());
12413  return o;
12414  }
12415 };
12416 
12417 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
12418 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> > {
12419  template <typename Stream>
12420  msgpack::packer<Stream>& operator()(
12423  o.pack_array(18);
12424 
12425  o.pack(v.template get<0>());
12426  o.pack(v.template get<1>());
12427  o.pack(v.template get<2>());
12428  o.pack(v.template get<3>());
12429  o.pack(v.template get<4>());
12430  o.pack(v.template get<5>());
12431  o.pack(v.template get<6>());
12432  o.pack(v.template get<7>());
12433  o.pack(v.template get<8>());
12434  o.pack(v.template get<9>());
12435  o.pack(v.template get<10>());
12436  o.pack(v.template get<11>());
12437  o.pack(v.template get<12>());
12438  o.pack(v.template get<13>());
12439  o.pack(v.template get<14>());
12440  o.pack(v.template get<15>());
12441  o.pack(v.template get<16>());
12442  o.pack(v.template get<17>());
12443  return o;
12444  }
12445 };
12446 
12447 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
12448 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> > {
12449  template <typename Stream>
12450  msgpack::packer<Stream>& operator()(
12453  o.pack_array(19);
12454 
12455  o.pack(v.template get<0>());
12456  o.pack(v.template get<1>());
12457  o.pack(v.template get<2>());
12458  o.pack(v.template get<3>());
12459  o.pack(v.template get<4>());
12460  o.pack(v.template get<5>());
12461  o.pack(v.template get<6>());
12462  o.pack(v.template get<7>());
12463  o.pack(v.template get<8>());
12464  o.pack(v.template get<9>());
12465  o.pack(v.template get<10>());
12466  o.pack(v.template get<11>());
12467  o.pack(v.template get<12>());
12468  o.pack(v.template get<13>());
12469  o.pack(v.template get<14>());
12470  o.pack(v.template get<15>());
12471  o.pack(v.template get<16>());
12472  o.pack(v.template get<17>());
12473  o.pack(v.template get<18>());
12474  return o;
12475  }
12476 };
12477 
12478 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
12479 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> > {
12480  template <typename Stream>
12481  msgpack::packer<Stream>& operator()(
12484  o.pack_array(20);
12485 
12486  o.pack(v.template get<0>());
12487  o.pack(v.template get<1>());
12488  o.pack(v.template get<2>());
12489  o.pack(v.template get<3>());
12490  o.pack(v.template get<4>());
12491  o.pack(v.template get<5>());
12492  o.pack(v.template get<6>());
12493  o.pack(v.template get<7>());
12494  o.pack(v.template get<8>());
12495  o.pack(v.template get<9>());
12496  o.pack(v.template get<10>());
12497  o.pack(v.template get<11>());
12498  o.pack(v.template get<12>());
12499  o.pack(v.template get<13>());
12500  o.pack(v.template get<14>());
12501  o.pack(v.template get<15>());
12502  o.pack(v.template get<16>());
12503  o.pack(v.template get<17>());
12504  o.pack(v.template get<18>());
12505  o.pack(v.template get<19>());
12506  return o;
12507  }
12508 };
12509 
12510 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
12511 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> > {
12512  template <typename Stream>
12513  msgpack::packer<Stream>& operator()(
12516  o.pack_array(21);
12517 
12518  o.pack(v.template get<0>());
12519  o.pack(v.template get<1>());
12520  o.pack(v.template get<2>());
12521  o.pack(v.template get<3>());
12522  o.pack(v.template get<4>());
12523  o.pack(v.template get<5>());
12524  o.pack(v.template get<6>());
12525  o.pack(v.template get<7>());
12526  o.pack(v.template get<8>());
12527  o.pack(v.template get<9>());
12528  o.pack(v.template get<10>());
12529  o.pack(v.template get<11>());
12530  o.pack(v.template get<12>());
12531  o.pack(v.template get<13>());
12532  o.pack(v.template get<14>());
12533  o.pack(v.template get<15>());
12534  o.pack(v.template get<16>());
12535  o.pack(v.template get<17>());
12536  o.pack(v.template get<18>());
12537  o.pack(v.template get<19>());
12538  o.pack(v.template get<20>());
12539  return o;
12540  }
12541 };
12542 
12543 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
12544 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> > {
12545  template <typename Stream>
12546  msgpack::packer<Stream>& operator()(
12549  o.pack_array(22);
12550 
12551  o.pack(v.template get<0>());
12552  o.pack(v.template get<1>());
12553  o.pack(v.template get<2>());
12554  o.pack(v.template get<3>());
12555  o.pack(v.template get<4>());
12556  o.pack(v.template get<5>());
12557  o.pack(v.template get<6>());
12558  o.pack(v.template get<7>());
12559  o.pack(v.template get<8>());
12560  o.pack(v.template get<9>());
12561  o.pack(v.template get<10>());
12562  o.pack(v.template get<11>());
12563  o.pack(v.template get<12>());
12564  o.pack(v.template get<13>());
12565  o.pack(v.template get<14>());
12566  o.pack(v.template get<15>());
12567  o.pack(v.template get<16>());
12568  o.pack(v.template get<17>());
12569  o.pack(v.template get<18>());
12570  o.pack(v.template get<19>());
12571  o.pack(v.template get<20>());
12572  o.pack(v.template get<21>());
12573  return o;
12574  }
12575 };
12576 
12577 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
12578 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> > {
12579  template <typename Stream>
12580  msgpack::packer<Stream>& operator()(
12583  o.pack_array(23);
12584 
12585  o.pack(v.template get<0>());
12586  o.pack(v.template get<1>());
12587  o.pack(v.template get<2>());
12588  o.pack(v.template get<3>());
12589  o.pack(v.template get<4>());
12590  o.pack(v.template get<5>());
12591  o.pack(v.template get<6>());
12592  o.pack(v.template get<7>());
12593  o.pack(v.template get<8>());
12594  o.pack(v.template get<9>());
12595  o.pack(v.template get<10>());
12596  o.pack(v.template get<11>());
12597  o.pack(v.template get<12>());
12598  o.pack(v.template get<13>());
12599  o.pack(v.template get<14>());
12600  o.pack(v.template get<15>());
12601  o.pack(v.template get<16>());
12602  o.pack(v.template get<17>());
12603  o.pack(v.template get<18>());
12604  o.pack(v.template get<19>());
12605  o.pack(v.template get<20>());
12606  o.pack(v.template get<21>());
12607  o.pack(v.template get<22>());
12608  return o;
12609  }
12610 };
12611 
12612 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
12613 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> > {
12614  template <typename Stream>
12615  msgpack::packer<Stream>& operator()(
12618  o.pack_array(24);
12619 
12620  o.pack(v.template get<0>());
12621  o.pack(v.template get<1>());
12622  o.pack(v.template get<2>());
12623  o.pack(v.template get<3>());
12624  o.pack(v.template get<4>());
12625  o.pack(v.template get<5>());
12626  o.pack(v.template get<6>());
12627  o.pack(v.template get<7>());
12628  o.pack(v.template get<8>());
12629  o.pack(v.template get<9>());
12630  o.pack(v.template get<10>());
12631  o.pack(v.template get<11>());
12632  o.pack(v.template get<12>());
12633  o.pack(v.template get<13>());
12634  o.pack(v.template get<14>());
12635  o.pack(v.template get<15>());
12636  o.pack(v.template get<16>());
12637  o.pack(v.template get<17>());
12638  o.pack(v.template get<18>());
12639  o.pack(v.template get<19>());
12640  o.pack(v.template get<20>());
12641  o.pack(v.template get<21>());
12642  o.pack(v.template get<22>());
12643  o.pack(v.template get<23>());
12644  return o;
12645  }
12646 };
12647 
12648 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
12649 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> > {
12650  template <typename Stream>
12651  msgpack::packer<Stream>& operator()(
12654  o.pack_array(25);
12655 
12656  o.pack(v.template get<0>());
12657  o.pack(v.template get<1>());
12658  o.pack(v.template get<2>());
12659  o.pack(v.template get<3>());
12660  o.pack(v.template get<4>());
12661  o.pack(v.template get<5>());
12662  o.pack(v.template get<6>());
12663  o.pack(v.template get<7>());
12664  o.pack(v.template get<8>());
12665  o.pack(v.template get<9>());
12666  o.pack(v.template get<10>());
12667  o.pack(v.template get<11>());
12668  o.pack(v.template get<12>());
12669  o.pack(v.template get<13>());
12670  o.pack(v.template get<14>());
12671  o.pack(v.template get<15>());
12672  o.pack(v.template get<16>());
12673  o.pack(v.template get<17>());
12674  o.pack(v.template get<18>());
12675  o.pack(v.template get<19>());
12676  o.pack(v.template get<20>());
12677  o.pack(v.template get<21>());
12678  o.pack(v.template get<22>());
12679  o.pack(v.template get<23>());
12680  o.pack(v.template get<24>());
12681  return o;
12682  }
12683 };
12684 
12685 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
12686 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> > {
12687  template <typename Stream>
12688  msgpack::packer<Stream>& operator()(
12691  o.pack_array(26);
12692 
12693  o.pack(v.template get<0>());
12694  o.pack(v.template get<1>());
12695  o.pack(v.template get<2>());
12696  o.pack(v.template get<3>());
12697  o.pack(v.template get<4>());
12698  o.pack(v.template get<5>());
12699  o.pack(v.template get<6>());
12700  o.pack(v.template get<7>());
12701  o.pack(v.template get<8>());
12702  o.pack(v.template get<9>());
12703  o.pack(v.template get<10>());
12704  o.pack(v.template get<11>());
12705  o.pack(v.template get<12>());
12706  o.pack(v.template get<13>());
12707  o.pack(v.template get<14>());
12708  o.pack(v.template get<15>());
12709  o.pack(v.template get<16>());
12710  o.pack(v.template get<17>());
12711  o.pack(v.template get<18>());
12712  o.pack(v.template get<19>());
12713  o.pack(v.template get<20>());
12714  o.pack(v.template get<21>());
12715  o.pack(v.template get<22>());
12716  o.pack(v.template get<23>());
12717  o.pack(v.template get<24>());
12718  o.pack(v.template get<25>());
12719  return o;
12720  }
12721 };
12722 
12723 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
12724 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> > {
12725  template <typename Stream>
12726  msgpack::packer<Stream>& operator()(
12729  o.pack_array(27);
12730 
12731  o.pack(v.template get<0>());
12732  o.pack(v.template get<1>());
12733  o.pack(v.template get<2>());
12734  o.pack(v.template get<3>());
12735  o.pack(v.template get<4>());
12736  o.pack(v.template get<5>());
12737  o.pack(v.template get<6>());
12738  o.pack(v.template get<7>());
12739  o.pack(v.template get<8>());
12740  o.pack(v.template get<9>());
12741  o.pack(v.template get<10>());
12742  o.pack(v.template get<11>());
12743  o.pack(v.template get<12>());
12744  o.pack(v.template get<13>());
12745  o.pack(v.template get<14>());
12746  o.pack(v.template get<15>());
12747  o.pack(v.template get<16>());
12748  o.pack(v.template get<17>());
12749  o.pack(v.template get<18>());
12750  o.pack(v.template get<19>());
12751  o.pack(v.template get<20>());
12752  o.pack(v.template get<21>());
12753  o.pack(v.template get<22>());
12754  o.pack(v.template get<23>());
12755  o.pack(v.template get<24>());
12756  o.pack(v.template get<25>());
12757  o.pack(v.template get<26>());
12758  return o;
12759  }
12760 };
12761 
12762 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
12763 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> > {
12764  template <typename Stream>
12765  msgpack::packer<Stream>& operator()(
12768  o.pack_array(28);
12769 
12770  o.pack(v.template get<0>());
12771  o.pack(v.template get<1>());
12772  o.pack(v.template get<2>());
12773  o.pack(v.template get<3>());
12774  o.pack(v.template get<4>());
12775  o.pack(v.template get<5>());
12776  o.pack(v.template get<6>());
12777  o.pack(v.template get<7>());
12778  o.pack(v.template get<8>());
12779  o.pack(v.template get<9>());
12780  o.pack(v.template get<10>());
12781  o.pack(v.template get<11>());
12782  o.pack(v.template get<12>());
12783  o.pack(v.template get<13>());
12784  o.pack(v.template get<14>());
12785  o.pack(v.template get<15>());
12786  o.pack(v.template get<16>());
12787  o.pack(v.template get<17>());
12788  o.pack(v.template get<18>());
12789  o.pack(v.template get<19>());
12790  o.pack(v.template get<20>());
12791  o.pack(v.template get<21>());
12792  o.pack(v.template get<22>());
12793  o.pack(v.template get<23>());
12794  o.pack(v.template get<24>());
12795  o.pack(v.template get<25>());
12796  o.pack(v.template get<26>());
12797  o.pack(v.template get<27>());
12798  return o;
12799  }
12800 };
12801 
12802 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
12803 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> > {
12804  template <typename Stream>
12805  msgpack::packer<Stream>& operator()(
12808  o.pack_array(29);
12809 
12810  o.pack(v.template get<0>());
12811  o.pack(v.template get<1>());
12812  o.pack(v.template get<2>());
12813  o.pack(v.template get<3>());
12814  o.pack(v.template get<4>());
12815  o.pack(v.template get<5>());
12816  o.pack(v.template get<6>());
12817  o.pack(v.template get<7>());
12818  o.pack(v.template get<8>());
12819  o.pack(v.template get<9>());
12820  o.pack(v.template get<10>());
12821  o.pack(v.template get<11>());
12822  o.pack(v.template get<12>());
12823  o.pack(v.template get<13>());
12824  o.pack(v.template get<14>());
12825  o.pack(v.template get<15>());
12826  o.pack(v.template get<16>());
12827  o.pack(v.template get<17>());
12828  o.pack(v.template get<18>());
12829  o.pack(v.template get<19>());
12830  o.pack(v.template get<20>());
12831  o.pack(v.template get<21>());
12832  o.pack(v.template get<22>());
12833  o.pack(v.template get<23>());
12834  o.pack(v.template get<24>());
12835  o.pack(v.template get<25>());
12836  o.pack(v.template get<26>());
12837  o.pack(v.template get<27>());
12838  o.pack(v.template get<28>());
12839  return o;
12840  }
12841 };
12842 
12843 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
12844 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> > {
12845  template <typename Stream>
12846  msgpack::packer<Stream>& operator()(
12849  o.pack_array(30);
12850 
12851  o.pack(v.template get<0>());
12852  o.pack(v.template get<1>());
12853  o.pack(v.template get<2>());
12854  o.pack(v.template get<3>());
12855  o.pack(v.template get<4>());
12856  o.pack(v.template get<5>());
12857  o.pack(v.template get<6>());
12858  o.pack(v.template get<7>());
12859  o.pack(v.template get<8>());
12860  o.pack(v.template get<9>());
12861  o.pack(v.template get<10>());
12862  o.pack(v.template get<11>());
12863  o.pack(v.template get<12>());
12864  o.pack(v.template get<13>());
12865  o.pack(v.template get<14>());
12866  o.pack(v.template get<15>());
12867  o.pack(v.template get<16>());
12868  o.pack(v.template get<17>());
12869  o.pack(v.template get<18>());
12870  o.pack(v.template get<19>());
12871  o.pack(v.template get<20>());
12872  o.pack(v.template get<21>());
12873  o.pack(v.template get<22>());
12874  o.pack(v.template get<23>());
12875  o.pack(v.template get<24>());
12876  o.pack(v.template get<25>());
12877  o.pack(v.template get<26>());
12878  o.pack(v.template get<27>());
12879  o.pack(v.template get<28>());
12880  o.pack(v.template get<29>());
12881  return o;
12882  }
12883 };
12884 
12885 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
12886 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> > {
12887  template <typename Stream>
12888  msgpack::packer<Stream>& operator()(
12891  o.pack_array(31);
12892 
12893  o.pack(v.template get<0>());
12894  o.pack(v.template get<1>());
12895  o.pack(v.template get<2>());
12896  o.pack(v.template get<3>());
12897  o.pack(v.template get<4>());
12898  o.pack(v.template get<5>());
12899  o.pack(v.template get<6>());
12900  o.pack(v.template get<7>());
12901  o.pack(v.template get<8>());
12902  o.pack(v.template get<9>());
12903  o.pack(v.template get<10>());
12904  o.pack(v.template get<11>());
12905  o.pack(v.template get<12>());
12906  o.pack(v.template get<13>());
12907  o.pack(v.template get<14>());
12908  o.pack(v.template get<15>());
12909  o.pack(v.template get<16>());
12910  o.pack(v.template get<17>());
12911  o.pack(v.template get<18>());
12912  o.pack(v.template get<19>());
12913  o.pack(v.template get<20>());
12914  o.pack(v.template get<21>());
12915  o.pack(v.template get<22>());
12916  o.pack(v.template get<23>());
12917  o.pack(v.template get<24>());
12918  o.pack(v.template get<25>());
12919  o.pack(v.template get<26>());
12920  o.pack(v.template get<27>());
12921  o.pack(v.template get<28>());
12922  o.pack(v.template get<29>());
12923  o.pack(v.template get<30>());
12924  return o;
12925  }
12926 };
12927 
12928 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
12929 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> > {
12930  template <typename Stream>
12931  msgpack::packer<Stream>& operator()(
12934  o.pack_array(32);
12935 
12936  o.pack(v.template get<0>());
12937  o.pack(v.template get<1>());
12938  o.pack(v.template get<2>());
12939  o.pack(v.template get<3>());
12940  o.pack(v.template get<4>());
12941  o.pack(v.template get<5>());
12942  o.pack(v.template get<6>());
12943  o.pack(v.template get<7>());
12944  o.pack(v.template get<8>());
12945  o.pack(v.template get<9>());
12946  o.pack(v.template get<10>());
12947  o.pack(v.template get<11>());
12948  o.pack(v.template get<12>());
12949  o.pack(v.template get<13>());
12950  o.pack(v.template get<14>());
12951  o.pack(v.template get<15>());
12952  o.pack(v.template get<16>());
12953  o.pack(v.template get<17>());
12954  o.pack(v.template get<18>());
12955  o.pack(v.template get<19>());
12956  o.pack(v.template get<20>());
12957  o.pack(v.template get<21>());
12958  o.pack(v.template get<22>());
12959  o.pack(v.template get<23>());
12960  o.pack(v.template get<24>());
12961  o.pack(v.template get<25>());
12962  o.pack(v.template get<26>());
12963  o.pack(v.template get<27>());
12964  o.pack(v.template get<28>());
12965  o.pack(v.template get<29>());
12966  o.pack(v.template get<30>());
12967  o.pack(v.template get<31>());
12968  return o;
12969  }
12970 };
12971 
12973 
12974 template <>
12975 struct object_with_zone<type::tuple<> > {
12978  const type::tuple<>&) const {
12980  o.via.array.ptr = nullptr;
12981  o.via.array.size = 0;
12982  }
12983 };
12984 
12986 
12987 template <typename A0>
12988 struct object_with_zone<type::tuple<A0> > {
12989  void operator()(
12991  const type::tuple<A0>& v) const {
12993  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*1));
12994  o.via.array.size = 1;
12995 
12996  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
12997  }
12998 };
12999 
13000 template <typename A0, typename A1>
13001 struct object_with_zone<type::tuple<A0, A1> > {
13002  void operator()(
13004  const type::tuple<A0, A1>& v) const {
13006  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*2));
13007  o.via.array.size = 2;
13008 
13009  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13010  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13011  }
13012 };
13013 
13014 template <typename A0, typename A1, typename A2>
13015 struct object_with_zone<type::tuple<A0, A1, A2> > {
13016  void operator()(
13018  const type::tuple<A0, A1, A2>& v) const {
13020  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*3));
13021  o.via.array.size = 3;
13022 
13023  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13024  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13025  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13026  }
13027 };
13028 
13029 template <typename A0, typename A1, typename A2, typename A3>
13030 struct object_with_zone<type::tuple<A0, A1, A2, A3> > {
13031  void operator()(
13033  const type::tuple<A0, A1, A2, A3>& v) const {
13035  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*4));
13036  o.via.array.size = 4;
13037 
13038  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13039  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13040  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13041  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13042  }
13043 };
13044 
13045 template <typename A0, typename A1, typename A2, typename A3, typename A4>
13046 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4> > {
13047  void operator()(
13049  const type::tuple<A0, A1, A2, A3, A4>& v) const {
13051  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*5));
13052  o.via.array.size = 5;
13053 
13054  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13055  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13056  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13057  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13058  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13059  }
13060 };
13061 
13062 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
13063 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5> > {
13064  void operator()(
13066  const type::tuple<A0, A1, A2, A3, A4, A5>& v) const {
13068  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*6));
13069  o.via.array.size = 6;
13070 
13071  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13072  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13073  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13074  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13075  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13076  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13077  }
13078 };
13079 
13080 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
13081 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6> > {
13082  void operator()(
13084  const type::tuple<A0, A1, A2, A3, A4, A5, A6>& v) const {
13086  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*7));
13087  o.via.array.size = 7;
13088 
13089  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13090  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13091  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13092  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13093  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13094  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13095  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13096  }
13097 };
13098 
13099 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
13100 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7> > {
13101  void operator()(
13105  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*8));
13106  o.via.array.size = 8;
13107 
13108  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13109  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13110  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13111  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13112  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13113  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13114  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13115  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13116  }
13117 };
13118 
13119 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
13120 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> > {
13121  void operator()(
13125  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*9));
13126  o.via.array.size = 9;
13127 
13128  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13129  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13130  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13131  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13132  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13133  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13134  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13135  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13136  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13137  }
13138 };
13139 
13140 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
13141 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> > {
13142  void operator()(
13146  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*10));
13147  o.via.array.size = 10;
13148 
13149  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13150  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13151  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13152  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13153  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13154  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13155  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13156  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13157  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13158  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13159  }
13160 };
13161 
13162 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
13163 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> > {
13164  void operator()(
13168  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*11));
13169  o.via.array.size = 11;
13170 
13171  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13172  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13173  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13174  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13175  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13176  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13177  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13178  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13179  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13180  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13181  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13182  }
13183 };
13184 
13185 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
13186 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> > {
13187  void operator()(
13191  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*12));
13192  o.via.array.size = 12;
13193 
13194  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13195  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13196  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13197  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13198  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13199  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13200  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13201  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13202  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13203  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13204  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13205  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13206  }
13207 };
13208 
13209 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
13210 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> > {
13211  void operator()(
13215  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*13));
13216  o.via.array.size = 13;
13217 
13218  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13219  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13220  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13221  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13222  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13223  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13224  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13225  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13226  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13227  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13228  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13229  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13230  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13231  }
13232 };
13233 
13234 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
13235 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> > {
13236  void operator()(
13240  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*14));
13241  o.via.array.size = 14;
13242 
13243  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13244  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13245  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13246  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13247  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13248  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13249  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13250  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13251  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13252  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13253  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13254  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13255  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13256  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13257  }
13258 };
13259 
13260 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
13261 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> > {
13262  void operator()(
13266  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*15));
13267  o.via.array.size = 15;
13268 
13269  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13270  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13271  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13272  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13273  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13274  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13275  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13276  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13277  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13278  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13279  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13280  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13281  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13282  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13283  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13284  }
13285 };
13286 
13287 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
13288 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> > {
13289  void operator()(
13293  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*16));
13294  o.via.array.size = 16;
13295 
13296  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13297  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13298  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13299  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13300  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13301  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13302  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13303  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13304  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13305  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13306  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13307  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13308  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13309  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13310  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13311  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13312  }
13313 };
13314 
13315 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
13316 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> > {
13317  void operator()(
13321  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*17));
13322  o.via.array.size = 17;
13323 
13324  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13325  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13326  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13327  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13328  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13329  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13330  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13331  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13332  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13333  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13334  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13335  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13336  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13337  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13338  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13339  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13340  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13341  }
13342 };
13343 
13344 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
13345 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> > {
13346  void operator()(
13350  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*18));
13351  o.via.array.size = 18;
13352 
13353  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13354  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13355  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13356  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13357  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13358  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13359  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13360  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13361  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13362  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13363  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13364  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13365  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13366  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13367  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13368  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13369  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13370  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13371  }
13372 };
13373 
13374 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
13375 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> > {
13376  void operator()(
13380  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*19));
13381  o.via.array.size = 19;
13382 
13383  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13384  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13385  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13386  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13387  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13388  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13389  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13390  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13391  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13392  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13393  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13394  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13395  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13396  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13397  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13398  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13399  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13400  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13401  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13402  }
13403 };
13404 
13405 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
13406 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> > {
13407  void operator()(
13411  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*20));
13412  o.via.array.size = 20;
13413 
13414  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13415  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13416  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13417  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13418  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13419  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13420  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13421  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13422  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13423  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13424  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13425  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13426  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13427  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13428  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13429  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13430  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13431  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13432  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13433  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13434  }
13435 };
13436 
13437 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
13438 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> > {
13439  void operator()(
13443  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*21));
13444  o.via.array.size = 21;
13445 
13446  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13447  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13448  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13449  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13450  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13451  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13452  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13453  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13454  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13455  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13456  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13457  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13458  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13459  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13460  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13461  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13462  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13463  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13464  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13465  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13466  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13467  }
13468 };
13469 
13470 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
13471 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> > {
13472  void operator()(
13476  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*22));
13477  o.via.array.size = 22;
13478 
13479  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13480  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13481  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13482  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13483  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13484  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13485  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13486  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13487  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13488  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13489  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13490  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13491  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13492  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13493  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13494  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13495  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13496  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13497  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13498  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13499  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13500  o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13501  }
13502 };
13503 
13504 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
13505 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> > {
13506  void operator()(
13510  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*23));
13511  o.via.array.size = 23;
13512 
13513  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13514  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13515  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13516  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13517  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13518  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13519  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13520  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13521  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13522  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13523  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13524  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13525  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13526  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13527  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13528  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13529  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13530  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13531  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13532  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13533  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13534  o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13535  o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13536  }
13537 };
13538 
13539 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
13540 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> > {
13541  void operator()(
13545  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*24));
13546  o.via.array.size = 24;
13547 
13548  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13549  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13550  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13551  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13552  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13553  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13554  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13555  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13556  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13557  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13558  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13559  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13560  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13561  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13562  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13563  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13564  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13565  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13566  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13567  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13568  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13569  o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13570  o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13571  o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13572  }
13573 };
13574 
13575 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
13576 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> > {
13577  void operator()(
13581  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*25));
13582  o.via.array.size = 25;
13583 
13584  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13585  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13586  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13587  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13588  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13589  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13590  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13591  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13592  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13593  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13594  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13595  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13596  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13597  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13598  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13599  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13600  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13601  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13602  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13603  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13604  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13605  o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13606  o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13607  o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13608  o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
13609  }
13610 };
13611 
13612 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
13613 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> > {
13614  void operator()(
13618  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*26));
13619  o.via.array.size = 26;
13620 
13621  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13622  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13623  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13624  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13625  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13626  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13627  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13628  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13629  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13630  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13631  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13632  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13633  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13634  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13635  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13636  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13637  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13638  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13639  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13640  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13641  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13642  o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13643  o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13644  o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13645  o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
13646  o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
13647  }
13648 };
13649 
13650 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
13651 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> > {
13652  void operator()(
13656  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*27));
13657  o.via.array.size = 27;
13658 
13659  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13660  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13661  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13662  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13663  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13664  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13665  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13666  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13667  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13668  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13669  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13670  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13671  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13672  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13673  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13674  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13675  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13676  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13677  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13678  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13679  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13680  o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13681  o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13682  o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13683  o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
13684  o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
13685  o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
13686  }
13687 };
13688 
13689 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
13690 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> > {
13691  void operator()(
13695  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*28));
13696  o.via.array.size = 28;
13697 
13698  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13699  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13700  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13701  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13702  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13703  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13704  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13705  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13706  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13707  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13708  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13709  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13710  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13711  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13712  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13713  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13714  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13715  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13716  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13717  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13718  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13719  o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13720  o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13721  o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13722  o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
13723  o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
13724  o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
13725  o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone);
13726  }
13727 };
13728 
13729 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
13730 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> > {
13731  void operator()(
13735  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*29));
13736  o.via.array.size = 29;
13737 
13738  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13739  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13740  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13741  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13742  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13743  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13744  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13745  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13746  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13747  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13748  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13749  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13750  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13751  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13752  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13753  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13754  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13755  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13756  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13757  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13758  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13759  o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13760  o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13761  o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13762  o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
13763  o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
13764  o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
13765  o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone);
13766  o.via.array.ptr[28] = msgpack::object(v.template get<28>(), o.zone);
13767  }
13768 };
13769 
13770 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
13771 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> > {
13772  void operator()(
13776  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*30));
13777  o.via.array.size = 30;
13778 
13779  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13780  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13781  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13782  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13783  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13784  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13785  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13786  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13787  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13788  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13789  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13790  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13791  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13792  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13793  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13794  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13795  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13796  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13797  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13798  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13799  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13800  o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13801  o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13802  o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13803  o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
13804  o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
13805  o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
13806  o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone);
13807  o.via.array.ptr[28] = msgpack::object(v.template get<28>(), o.zone);
13808  o.via.array.ptr[29] = msgpack::object(v.template get<29>(), o.zone);
13809  }
13810 };
13811 
13812 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
13813 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> > {
13814  void operator()(
13818  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*31));
13819  o.via.array.size = 31;
13820 
13821  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13822  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13823  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13824  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13825  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13826  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13827  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13828  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13829  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13830  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13831  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13832  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13833  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13834  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13835  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13836  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13837  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13838  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13839  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13840  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13841  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13842  o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13843  o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13844  o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13845  o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
13846  o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
13847  o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
13848  o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone);
13849  o.via.array.ptr[28] = msgpack::object(v.template get<28>(), o.zone);
13850  o.via.array.ptr[29] = msgpack::object(v.template get<29>(), o.zone);
13851  o.via.array.ptr[30] = msgpack::object(v.template get<30>(), o.zone);
13852  }
13853 };
13854 
13855 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
13856 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> > {
13857  void operator()(
13861  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*32));
13862  o.via.array.size = 32;
13863 
13864  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13865  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13866  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13867  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13868  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13869  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13870  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13871  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13872  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13873  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13874  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13875  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13876  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13877  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13878  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13879  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13880  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13881  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13882  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13883  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13884  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13885  o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13886  o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13887  o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13888  o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
13889  o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
13890  o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
13891  o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone);
13892  o.via.array.ptr[28] = msgpack::object(v.template get<28>(), o.zone);
13893  o.via.array.ptr[29] = msgpack::object(v.template get<29>(), o.zone);
13894  o.via.array.ptr[30] = msgpack::object(v.template get<30>(), o.zone);
13895  o.via.array.ptr[31] = msgpack::object(v.template get<31>(), o.zone);
13896  }
13897 };
13898 
13900 
13901 } // namespace adaptor
13902 
13904 } // MSGPACK_API_VERSION_NAMESPACE(v1)
13906 
13907 } // namespace msgpack
13908 
13909 #endif // MSGPACK_CPP03_MSGPACK_TUPLE_HPP
T & convert(T &v) const
Convert the object.
Definition: object.hpp:520
const T & const_reference
Definition: cpp03_msgpack_tuple.hpp:45
#define MSGPACK_API_VERSION_NAMESPACE(ns)
Definition: versioning.hpp:58
msgpack::packer< Stream > & operator()(msgpack::packer< Stream > &o, const type::tuple<> &) const
Definition: cpp03_msgpack_tuple.hpp:12050
uint32_t size
Definition: object_fwd.hpp:50
void * allocate_align(size_t size, size_t align=MSGPACK_ZONE_ALIGN)
Definition: cpp03_zone.hpp:248
const T & const_reference
Definition: cpp03_msgpack_tuple.hpp:63
T & reference
Definition: cpp03_msgpack_tuple.hpp:53
Definition: cpp03_msgpack_tuple.hpp:35
union_type via
Definition: object_fwd.hpp:123
T & transparent_reference
Definition: cpp03_msgpack_tuple.hpp:55
msgpack::zone & zone
Definition: object_fwd.hpp:262
msgpack::object * ptr
Definition: object_fwd.hpp:51
packer< Stream > & pack_array(uint32_t n)
Packing array header and size.
Definition: pack.hpp:1163
T & value_type
Definition: cpp03_msgpack_tuple.hpp:61
tuple(msgpack::object const &o)
Definition: cpp03_msgpack_tuple.hpp:9180
Definition: adaptor_base.hpp:15
tuple value_type
Definition: cpp03_msgpack_tuple.hpp:9181
T & reference
Definition: cpp03_msgpack_tuple.hpp:44
Definition: object_fwd.hpp:260
packer< Stream > & pack(const T &v)
Packing function template.
tuple()
Definition: cpp03_msgpack_tuple.hpp:9179
Definition: cpp03_msgpack_tuple.hpp:9178
T type
Definition: cpp03_msgpack_tuple.hpp:60
Definition: adaptor_base.hpp:45
tuple make_tuple()
Definition: cpp03_msgpack_tuple.hpp:10388
Definition: object_fwd.hpp:253
const T & transparent_reference
Definition: cpp03_msgpack_tuple.hpp:46
Definition: adaptor_base.hpp:34
T & value_type
Definition: cpp03_msgpack_tuple.hpp:52
msgpack::object_array array
Definition: object_fwd.hpp:115
T value_type
Definition: cpp03_msgpack_tuple.hpp:43
Definition: cpp03_msgpack_tuple.hpp:41
Object class that corresponding to MessagePack format object.
Definition: object_fwd.hpp:106
T type
Definition: cpp03_msgpack_tuple.hpp:42
msgpack::type::object_type type
Definition: object_fwd.hpp:122
const T & transparent_reference
Definition: cpp03_msgpack_tuple.hpp:64
Definition: object_fwd.hpp:39
T & reference
Definition: cpp03_msgpack_tuple.hpp:62
T type
Definition: cpp03_msgpack_tuple.hpp:51
Definition: cpp11_msgpack_tuple.hpp:35
msgpack::object const & operator()(msgpack::object const &o, type::tuple<> &) const
Definition: cpp03_msgpack_tuple.hpp:10595
const T & const_reference
Definition: cpp03_msgpack_tuple.hpp:54
The class template that supports continuous packing.
Definition: adaptor_base.hpp:22
Definition: adaptor_base.hpp:29
Definition: cpp03_msgpack_tuple.hpp:38
void operator()(msgpack::object::with_zone &o, const type::tuple<> &) const
Definition: cpp03_msgpack_tuple.hpp:12976