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-2016 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_V1_CPP03_MSGPACK_TUPLE_HPP
11 #define MSGPACK_V1_CPP03_MSGPACK_TUPLE_HPP
12 
14 
15 namespace msgpack {
16 
20 
21 namespace type {
22 
23 // FIXME operator==
24 // FIXME operator!=
25 
26 
27 template <typename T>
28 struct tuple_type {
29  typedef T type;
30  typedef T value_type;
31  typedef T& reference;
32  typedef const T& const_reference;
33  typedef const T& transparent_reference;
34 };
35 
36 template <typename T>
37 struct tuple_type<T&> {
38  typedef T type;
39  typedef T& value_type;
40  typedef T& reference;
41  typedef const T& const_reference;
43 };
44 
45 template <typename T>
46 struct tuple_type<const T&> {
47  typedef T type;
48  typedef T& value_type;
49  typedef T& reference;
50  typedef const T& const_reference;
51  typedef const T& transparent_reference;
52 };
53 
55 
56 
57 template <typename A0>
58 struct tuple_element<tuple<A0>, 0> : tuple_type<A0> {
59  tuple_element(tuple<A0>& x) : m_x(x.a0) {}
60  typename tuple_type<A0>::reference get() { return m_x; }
61  typename tuple_type<A0>::const_reference get() const { return m_x; }
62 private:
63  typename tuple_type<A0>::reference m_x;
64 };
65 
66 
67 
68 template <typename A0, typename A1>
69 struct tuple_element<tuple<A0, A1>, 0> : tuple_type<A0> {
70  tuple_element(tuple<A0, A1 >& x) : m_x(x.a0) {}
71  typename tuple_type<A0>::reference get() { return m_x; }
72  typename tuple_type<A0>::const_reference get() const { return m_x; }
73 private:
74  typename tuple_type<A0>::reference m_x;
75 };
76 
77 template <typename A0, typename A1>
78 struct tuple_element<tuple<A0, A1>, 1> : tuple_type<A1> {
79  tuple_element(tuple<A0, A1 >& x) : m_x(x.a1) {}
80  typename tuple_type<A1>::reference get() { return m_x; }
81  typename tuple_type<A1>::const_reference get() const { return m_x; }
82 private:
83  typename tuple_type<A1>::reference m_x;
84 };
85 
86 
87 
88 template <typename A0, typename A1, typename A2>
89 struct tuple_element<tuple<A0, A1, A2>, 0> : tuple_type<A0> {
90  tuple_element(tuple<A0, A1 , A2 >& x) : m_x(x.a0) {}
91  typename tuple_type<A0>::reference get() { return m_x; }
92  typename tuple_type<A0>::const_reference get() const { return m_x; }
93 private:
94  typename tuple_type<A0>::reference m_x;
95 };
96 
97 template <typename A0, typename A1, typename A2>
98 struct tuple_element<tuple<A0, A1, A2>, 1> : tuple_type<A1> {
99  tuple_element(tuple<A0, A1 , A2 >& x) : m_x(x.a1) {}
100  typename tuple_type<A1>::reference get() { return m_x; }
101  typename tuple_type<A1>::const_reference get() const { return m_x; }
102 private:
103  typename tuple_type<A1>::reference m_x;
104 };
105 
106 template <typename A0, typename A1, typename A2>
107 struct tuple_element<tuple<A0, A1, A2>, 2> : tuple_type<A2> {
108  tuple_element(tuple<A0, A1 , A2 >& x) : m_x(x.a2) {}
109  typename tuple_type<A2>::reference get() { return m_x; }
110  typename tuple_type<A2>::const_reference get() const { return m_x; }
111 private:
112  typename tuple_type<A2>::reference m_x;
113 };
114 
115 
116 
117 template <typename A0, typename A1, typename A2, typename A3>
118 struct tuple_element<tuple<A0, A1, A2, A3>, 0> : tuple_type<A0> {
119  tuple_element(tuple<A0, A1 , A2 , A3 >& x) : m_x(x.a0) {}
120  typename tuple_type<A0>::reference get() { return m_x; }
121  typename tuple_type<A0>::const_reference get() const { return m_x; }
122 private:
123  typename tuple_type<A0>::reference m_x;
124 };
125 
126 template <typename A0, typename A1, typename A2, typename A3>
127 struct tuple_element<tuple<A0, A1, A2, A3>, 1> : tuple_type<A1> {
128  tuple_element(tuple<A0, A1 , A2 , A3 >& x) : m_x(x.a1) {}
129  typename tuple_type<A1>::reference get() { return m_x; }
130  typename tuple_type<A1>::const_reference get() const { return m_x; }
131 private:
132  typename tuple_type<A1>::reference m_x;
133 };
134 
135 template <typename A0, typename A1, typename A2, typename A3>
136 struct tuple_element<tuple<A0, A1, A2, A3>, 2> : tuple_type<A2> {
137  tuple_element(tuple<A0, A1 , A2 , A3 >& x) : m_x(x.a2) {}
138  typename tuple_type<A2>::reference get() { return m_x; }
139  typename tuple_type<A2>::const_reference get() const { return m_x; }
140 private:
141  typename tuple_type<A2>::reference m_x;
142 };
143 
144 template <typename A0, typename A1, typename A2, typename A3>
145 struct tuple_element<tuple<A0, A1, A2, A3>, 3> : tuple_type<A3> {
146  tuple_element(tuple<A0, A1 , A2 , A3 >& x) : m_x(x.a3) {}
147  typename tuple_type<A3>::reference get() { return m_x; }
148  typename tuple_type<A3>::const_reference get() const { return m_x; }
149 private:
150  typename tuple_type<A3>::reference m_x;
151 };
152 
153 
154 
155 template <typename A0, typename A1, typename A2, typename A3, typename A4>
156 struct tuple_element<tuple<A0, A1, A2, A3, A4>, 0> : tuple_type<A0> {
158  typename tuple_type<A0>::reference get() { return m_x; }
159  typename tuple_type<A0>::const_reference get() const { return m_x; }
160 private:
161  typename tuple_type<A0>::reference m_x;
162 };
163 
164 template <typename A0, typename A1, typename A2, typename A3, typename A4>
165 struct tuple_element<tuple<A0, A1, A2, A3, A4>, 1> : tuple_type<A1> {
167  typename tuple_type<A1>::reference get() { return m_x; }
168  typename tuple_type<A1>::const_reference get() const { return m_x; }
169 private:
170  typename tuple_type<A1>::reference m_x;
171 };
172 
173 template <typename A0, typename A1, typename A2, typename A3, typename A4>
174 struct tuple_element<tuple<A0, A1, A2, A3, A4>, 2> : tuple_type<A2> {
176  typename tuple_type<A2>::reference get() { return m_x; }
177  typename tuple_type<A2>::const_reference get() const { return m_x; }
178 private:
179  typename tuple_type<A2>::reference m_x;
180 };
181 
182 template <typename A0, typename A1, typename A2, typename A3, typename A4>
183 struct tuple_element<tuple<A0, A1, A2, A3, A4>, 3> : tuple_type<A3> {
185  typename tuple_type<A3>::reference get() { return m_x; }
186  typename tuple_type<A3>::const_reference get() const { return m_x; }
187 private:
188  typename tuple_type<A3>::reference m_x;
189 };
190 
191 template <typename A0, typename A1, typename A2, typename A3, typename A4>
192 struct tuple_element<tuple<A0, A1, A2, A3, A4>, 4> : tuple_type<A4> {
194  typename tuple_type<A4>::reference get() { return m_x; }
195  typename tuple_type<A4>::const_reference get() const { return m_x; }
196 private:
197  typename tuple_type<A4>::reference m_x;
198 };
199 
200 
201 
202 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
203 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 0> : tuple_type<A0> {
205  typename tuple_type<A0>::reference get() { return m_x; }
206  typename tuple_type<A0>::const_reference get() const { return m_x; }
207 private:
208  typename tuple_type<A0>::reference m_x;
209 };
210 
211 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
212 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 1> : tuple_type<A1> {
214  typename tuple_type<A1>::reference get() { return m_x; }
215  typename tuple_type<A1>::const_reference get() const { return m_x; }
216 private:
217  typename tuple_type<A1>::reference m_x;
218 };
219 
220 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
221 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 2> : tuple_type<A2> {
223  typename tuple_type<A2>::reference get() { return m_x; }
224  typename tuple_type<A2>::const_reference get() const { return m_x; }
225 private:
226  typename tuple_type<A2>::reference m_x;
227 };
228 
229 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
230 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 3> : tuple_type<A3> {
232  typename tuple_type<A3>::reference get() { return m_x; }
233  typename tuple_type<A3>::const_reference get() const { return m_x; }
234 private:
235  typename tuple_type<A3>::reference m_x;
236 };
237 
238 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
239 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 4> : tuple_type<A4> {
241  typename tuple_type<A4>::reference get() { return m_x; }
242  typename tuple_type<A4>::const_reference get() const { return m_x; }
243 private:
244  typename tuple_type<A4>::reference m_x;
245 };
246 
247 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
248 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 5> : tuple_type<A5> {
250  typename tuple_type<A5>::reference get() { return m_x; }
251  typename tuple_type<A5>::const_reference get() const { return m_x; }
252 private:
253  typename tuple_type<A5>::reference m_x;
254 };
255 
256 
257 
258 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
259 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 0> : tuple_type<A0> {
261  typename tuple_type<A0>::reference get() { return m_x; }
262  typename tuple_type<A0>::const_reference get() const { return m_x; }
263 private:
264  typename tuple_type<A0>::reference m_x;
265 };
266 
267 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
268 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 1> : tuple_type<A1> {
270  typename tuple_type<A1>::reference get() { return m_x; }
271  typename tuple_type<A1>::const_reference get() const { return m_x; }
272 private:
273  typename tuple_type<A1>::reference m_x;
274 };
275 
276 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
277 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 2> : tuple_type<A2> {
279  typename tuple_type<A2>::reference get() { return m_x; }
280  typename tuple_type<A2>::const_reference get() const { return m_x; }
281 private:
282  typename tuple_type<A2>::reference m_x;
283 };
284 
285 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
286 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 3> : tuple_type<A3> {
288  typename tuple_type<A3>::reference get() { return m_x; }
289  typename tuple_type<A3>::const_reference get() const { return m_x; }
290 private:
291  typename tuple_type<A3>::reference m_x;
292 };
293 
294 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
295 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 4> : tuple_type<A4> {
297  typename tuple_type<A4>::reference get() { return m_x; }
298  typename tuple_type<A4>::const_reference get() const { return m_x; }
299 private:
300  typename tuple_type<A4>::reference m_x;
301 };
302 
303 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
304 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 5> : tuple_type<A5> {
306  typename tuple_type<A5>::reference get() { return m_x; }
307  typename tuple_type<A5>::const_reference get() const { return m_x; }
308 private:
309  typename tuple_type<A5>::reference m_x;
310 };
311 
312 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
313 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 6> : tuple_type<A6> {
315  typename tuple_type<A6>::reference get() { return m_x; }
316  typename tuple_type<A6>::const_reference get() const { return m_x; }
317 private:
318  typename tuple_type<A6>::reference m_x;
319 };
320 
321 
322 
323 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
324 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 0> : tuple_type<A0> {
326  typename tuple_type<A0>::reference get() { return m_x; }
327  typename tuple_type<A0>::const_reference get() const { return m_x; }
328 private:
329  typename tuple_type<A0>::reference m_x;
330 };
331 
332 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
333 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 1> : tuple_type<A1> {
335  typename tuple_type<A1>::reference get() { return m_x; }
336  typename tuple_type<A1>::const_reference get() const { return m_x; }
337 private:
338  typename tuple_type<A1>::reference m_x;
339 };
340 
341 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
342 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 2> : tuple_type<A2> {
344  typename tuple_type<A2>::reference get() { return m_x; }
345  typename tuple_type<A2>::const_reference get() const { return m_x; }
346 private:
347  typename tuple_type<A2>::reference m_x;
348 };
349 
350 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
351 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 3> : tuple_type<A3> {
353  typename tuple_type<A3>::reference get() { return m_x; }
354  typename tuple_type<A3>::const_reference get() const { return m_x; }
355 private:
356  typename tuple_type<A3>::reference m_x;
357 };
358 
359 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
360 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 4> : tuple_type<A4> {
362  typename tuple_type<A4>::reference get() { return m_x; }
363  typename tuple_type<A4>::const_reference get() const { return m_x; }
364 private:
365  typename tuple_type<A4>::reference m_x;
366 };
367 
368 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
369 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 5> : tuple_type<A5> {
371  typename tuple_type<A5>::reference get() { return m_x; }
372  typename tuple_type<A5>::const_reference get() const { return m_x; }
373 private:
374  typename tuple_type<A5>::reference m_x;
375 };
376 
377 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
378 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 6> : tuple_type<A6> {
380  typename tuple_type<A6>::reference get() { return m_x; }
381  typename tuple_type<A6>::const_reference get() const { return m_x; }
382 private:
383  typename tuple_type<A6>::reference m_x;
384 };
385 
386 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
387 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 7> : tuple_type<A7> {
389  typename tuple_type<A7>::reference get() { return m_x; }
390  typename tuple_type<A7>::const_reference get() const { return m_x; }
391 private:
392  typename tuple_type<A7>::reference m_x;
393 };
394 
395 
396 
397 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
398 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 0> : tuple_type<A0> {
400  typename tuple_type<A0>::reference get() { return m_x; }
401  typename tuple_type<A0>::const_reference get() const { return m_x; }
402 private:
403  typename tuple_type<A0>::reference m_x;
404 };
405 
406 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
407 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 1> : tuple_type<A1> {
409  typename tuple_type<A1>::reference get() { return m_x; }
410  typename tuple_type<A1>::const_reference get() const { return m_x; }
411 private:
412  typename tuple_type<A1>::reference m_x;
413 };
414 
415 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
416 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 2> : tuple_type<A2> {
418  typename tuple_type<A2>::reference get() { return m_x; }
419  typename tuple_type<A2>::const_reference get() const { return m_x; }
420 private:
421  typename tuple_type<A2>::reference m_x;
422 };
423 
424 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
425 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 3> : tuple_type<A3> {
427  typename tuple_type<A3>::reference get() { return m_x; }
428  typename tuple_type<A3>::const_reference get() const { return m_x; }
429 private:
430  typename tuple_type<A3>::reference m_x;
431 };
432 
433 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
434 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 4> : tuple_type<A4> {
436  typename tuple_type<A4>::reference get() { return m_x; }
437  typename tuple_type<A4>::const_reference get() const { return m_x; }
438 private:
439  typename tuple_type<A4>::reference m_x;
440 };
441 
442 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
443 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 5> : tuple_type<A5> {
445  typename tuple_type<A5>::reference get() { return m_x; }
446  typename tuple_type<A5>::const_reference get() const { return m_x; }
447 private:
448  typename tuple_type<A5>::reference m_x;
449 };
450 
451 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
452 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 6> : tuple_type<A6> {
454  typename tuple_type<A6>::reference get() { return m_x; }
455  typename tuple_type<A6>::const_reference get() const { return m_x; }
456 private:
457  typename tuple_type<A6>::reference m_x;
458 };
459 
460 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
461 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 7> : tuple_type<A7> {
463  typename tuple_type<A7>::reference get() { return m_x; }
464  typename tuple_type<A7>::const_reference get() const { return m_x; }
465 private:
466  typename tuple_type<A7>::reference m_x;
467 };
468 
469 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
470 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 8> : tuple_type<A8> {
472  typename tuple_type<A8>::reference get() { return m_x; }
473  typename tuple_type<A8>::const_reference get() const { return m_x; }
474 private:
475  typename tuple_type<A8>::reference m_x;
476 };
477 
478 
479 
480 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
481 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 0> : tuple_type<A0> {
483  typename tuple_type<A0>::reference get() { return m_x; }
484  typename tuple_type<A0>::const_reference get() const { return m_x; }
485 private:
486  typename tuple_type<A0>::reference m_x;
487 };
488 
489 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
490 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 1> : tuple_type<A1> {
492  typename tuple_type<A1>::reference get() { return m_x; }
493  typename tuple_type<A1>::const_reference get() const { return m_x; }
494 private:
495  typename tuple_type<A1>::reference m_x;
496 };
497 
498 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
499 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 2> : tuple_type<A2> {
501  typename tuple_type<A2>::reference get() { return m_x; }
502  typename tuple_type<A2>::const_reference get() const { return m_x; }
503 private:
504  typename tuple_type<A2>::reference m_x;
505 };
506 
507 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
508 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 3> : tuple_type<A3> {
510  typename tuple_type<A3>::reference get() { return m_x; }
511  typename tuple_type<A3>::const_reference get() const { return m_x; }
512 private:
513  typename tuple_type<A3>::reference m_x;
514 };
515 
516 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
517 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 4> : tuple_type<A4> {
519  typename tuple_type<A4>::reference get() { return m_x; }
520  typename tuple_type<A4>::const_reference get() const { return m_x; }
521 private:
522  typename tuple_type<A4>::reference m_x;
523 };
524 
525 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
526 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 5> : tuple_type<A5> {
528  typename tuple_type<A5>::reference get() { return m_x; }
529  typename tuple_type<A5>::const_reference get() const { return m_x; }
530 private:
531  typename tuple_type<A5>::reference m_x;
532 };
533 
534 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
535 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 6> : tuple_type<A6> {
537  typename tuple_type<A6>::reference get() { return m_x; }
538  typename tuple_type<A6>::const_reference get() const { return m_x; }
539 private:
540  typename tuple_type<A6>::reference m_x;
541 };
542 
543 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
544 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 7> : tuple_type<A7> {
546  typename tuple_type<A7>::reference get() { return m_x; }
547  typename tuple_type<A7>::const_reference get() const { return m_x; }
548 private:
549  typename tuple_type<A7>::reference m_x;
550 };
551 
552 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
553 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 8> : tuple_type<A8> {
555  typename tuple_type<A8>::reference get() { return m_x; }
556  typename tuple_type<A8>::const_reference get() const { return m_x; }
557 private:
558  typename tuple_type<A8>::reference m_x;
559 };
560 
561 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
562 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 9> : tuple_type<A9> {
564  typename tuple_type<A9>::reference get() { return m_x; }
565  typename tuple_type<A9>::const_reference get() const { return m_x; }
566 private:
567  typename tuple_type<A9>::reference m_x;
568 };
569 
570 
571 
572 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
573 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 0> : tuple_type<A0> {
575  typename tuple_type<A0>::reference get() { return m_x; }
576  typename tuple_type<A0>::const_reference get() const { return m_x; }
577 private:
578  typename tuple_type<A0>::reference m_x;
579 };
580 
581 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
582 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 1> : tuple_type<A1> {
584  typename tuple_type<A1>::reference get() { return m_x; }
585  typename tuple_type<A1>::const_reference get() const { return m_x; }
586 private:
587  typename tuple_type<A1>::reference m_x;
588 };
589 
590 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
591 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 2> : tuple_type<A2> {
593  typename tuple_type<A2>::reference get() { return m_x; }
594  typename tuple_type<A2>::const_reference get() const { return m_x; }
595 private:
596  typename tuple_type<A2>::reference m_x;
597 };
598 
599 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
600 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 3> : tuple_type<A3> {
602  typename tuple_type<A3>::reference get() { return m_x; }
603  typename tuple_type<A3>::const_reference get() const { return m_x; }
604 private:
605  typename tuple_type<A3>::reference m_x;
606 };
607 
608 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
609 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 4> : tuple_type<A4> {
611  typename tuple_type<A4>::reference get() { return m_x; }
612  typename tuple_type<A4>::const_reference get() const { return m_x; }
613 private:
614  typename tuple_type<A4>::reference m_x;
615 };
616 
617 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
618 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 5> : tuple_type<A5> {
620  typename tuple_type<A5>::reference get() { return m_x; }
621  typename tuple_type<A5>::const_reference get() const { return m_x; }
622 private:
623  typename tuple_type<A5>::reference m_x;
624 };
625 
626 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
627 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 6> : tuple_type<A6> {
629  typename tuple_type<A6>::reference get() { return m_x; }
630  typename tuple_type<A6>::const_reference get() const { return m_x; }
631 private:
632  typename tuple_type<A6>::reference m_x;
633 };
634 
635 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
636 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 7> : tuple_type<A7> {
638  typename tuple_type<A7>::reference get() { return m_x; }
639  typename tuple_type<A7>::const_reference get() const { return m_x; }
640 private:
641  typename tuple_type<A7>::reference m_x;
642 };
643 
644 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
645 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 8> : tuple_type<A8> {
647  typename tuple_type<A8>::reference get() { return m_x; }
648  typename tuple_type<A8>::const_reference get() const { return m_x; }
649 private:
650  typename tuple_type<A8>::reference m_x;
651 };
652 
653 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
654 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 9> : tuple_type<A9> {
656  typename tuple_type<A9>::reference get() { return m_x; }
657  typename tuple_type<A9>::const_reference get() const { return m_x; }
658 private:
659  typename tuple_type<A9>::reference m_x;
660 };
661 
662 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
663 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 10> : tuple_type<A10> {
665  typename tuple_type<A10>::reference get() { return m_x; }
666  typename tuple_type<A10>::const_reference get() const { return m_x; }
667 private:
668  typename tuple_type<A10>::reference m_x;
669 };
670 
671 
672 
673 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
674 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 0> : tuple_type<A0> {
676  typename tuple_type<A0>::reference get() { return m_x; }
677  typename tuple_type<A0>::const_reference get() const { return m_x; }
678 private:
679  typename tuple_type<A0>::reference m_x;
680 };
681 
682 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
683 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 1> : tuple_type<A1> {
685  typename tuple_type<A1>::reference get() { return m_x; }
686  typename tuple_type<A1>::const_reference get() const { return m_x; }
687 private:
688  typename tuple_type<A1>::reference m_x;
689 };
690 
691 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
692 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 2> : tuple_type<A2> {
694  typename tuple_type<A2>::reference get() { return m_x; }
695  typename tuple_type<A2>::const_reference get() const { return m_x; }
696 private:
697  typename tuple_type<A2>::reference m_x;
698 };
699 
700 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
701 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 3> : tuple_type<A3> {
703  typename tuple_type<A3>::reference get() { return m_x; }
704  typename tuple_type<A3>::const_reference get() const { return m_x; }
705 private:
706  typename tuple_type<A3>::reference m_x;
707 };
708 
709 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
710 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 4> : tuple_type<A4> {
712  typename tuple_type<A4>::reference get() { return m_x; }
713  typename tuple_type<A4>::const_reference get() const { return m_x; }
714 private:
715  typename tuple_type<A4>::reference m_x;
716 };
717 
718 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
719 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 5> : tuple_type<A5> {
721  typename tuple_type<A5>::reference get() { return m_x; }
722  typename tuple_type<A5>::const_reference get() const { return m_x; }
723 private:
724  typename tuple_type<A5>::reference m_x;
725 };
726 
727 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
728 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 6> : tuple_type<A6> {
730  typename tuple_type<A6>::reference get() { return m_x; }
731  typename tuple_type<A6>::const_reference get() const { return m_x; }
732 private:
733  typename tuple_type<A6>::reference m_x;
734 };
735 
736 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
737 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 7> : tuple_type<A7> {
739  typename tuple_type<A7>::reference get() { return m_x; }
740  typename tuple_type<A7>::const_reference get() const { return m_x; }
741 private:
742  typename tuple_type<A7>::reference m_x;
743 };
744 
745 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
746 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 8> : tuple_type<A8> {
748  typename tuple_type<A8>::reference get() { return m_x; }
749  typename tuple_type<A8>::const_reference get() const { return m_x; }
750 private:
751  typename tuple_type<A8>::reference m_x;
752 };
753 
754 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
755 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 9> : tuple_type<A9> {
757  typename tuple_type<A9>::reference get() { return m_x; }
758  typename tuple_type<A9>::const_reference get() const { return m_x; }
759 private:
760  typename tuple_type<A9>::reference m_x;
761 };
762 
763 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
764 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 10> : tuple_type<A10> {
766  typename tuple_type<A10>::reference get() { return m_x; }
767  typename tuple_type<A10>::const_reference get() const { return m_x; }
768 private:
769  typename tuple_type<A10>::reference m_x;
770 };
771 
772 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
773 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 11> : tuple_type<A11> {
775  typename tuple_type<A11>::reference get() { return m_x; }
776  typename tuple_type<A11>::const_reference get() const { return m_x; }
777 private:
778  typename tuple_type<A11>::reference m_x;
779 };
780 
781 
782 
783 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
784 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 0> : tuple_type<A0> {
786  typename tuple_type<A0>::reference get() { return m_x; }
787  typename tuple_type<A0>::const_reference get() const { return m_x; }
788 private:
789  typename tuple_type<A0>::reference m_x;
790 };
791 
792 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
793 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 1> : tuple_type<A1> {
795  typename tuple_type<A1>::reference get() { return m_x; }
796  typename tuple_type<A1>::const_reference get() const { return m_x; }
797 private:
798  typename tuple_type<A1>::reference m_x;
799 };
800 
801 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
802 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 2> : tuple_type<A2> {
804  typename tuple_type<A2>::reference get() { return m_x; }
805  typename tuple_type<A2>::const_reference get() const { return m_x; }
806 private:
807  typename tuple_type<A2>::reference m_x;
808 };
809 
810 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
811 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 3> : tuple_type<A3> {
813  typename tuple_type<A3>::reference get() { return m_x; }
814  typename tuple_type<A3>::const_reference get() const { return m_x; }
815 private:
816  typename tuple_type<A3>::reference m_x;
817 };
818 
819 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
820 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 4> : tuple_type<A4> {
822  typename tuple_type<A4>::reference get() { return m_x; }
823  typename tuple_type<A4>::const_reference get() const { return m_x; }
824 private:
825  typename tuple_type<A4>::reference m_x;
826 };
827 
828 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
829 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 5> : tuple_type<A5> {
831  typename tuple_type<A5>::reference get() { return m_x; }
832  typename tuple_type<A5>::const_reference get() const { return m_x; }
833 private:
834  typename tuple_type<A5>::reference m_x;
835 };
836 
837 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
838 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 6> : tuple_type<A6> {
840  typename tuple_type<A6>::reference get() { return m_x; }
841  typename tuple_type<A6>::const_reference get() const { return m_x; }
842 private:
843  typename tuple_type<A6>::reference m_x;
844 };
845 
846 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
847 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 7> : tuple_type<A7> {
849  typename tuple_type<A7>::reference get() { return m_x; }
850  typename tuple_type<A7>::const_reference get() const { return m_x; }
851 private:
852  typename tuple_type<A7>::reference m_x;
853 };
854 
855 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
856 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 8> : tuple_type<A8> {
858  typename tuple_type<A8>::reference get() { return m_x; }
859  typename tuple_type<A8>::const_reference get() const { return m_x; }
860 private:
861  typename tuple_type<A8>::reference m_x;
862 };
863 
864 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
865 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 9> : tuple_type<A9> {
867  typename tuple_type<A9>::reference get() { return m_x; }
868  typename tuple_type<A9>::const_reference get() const { return m_x; }
869 private:
870  typename tuple_type<A9>::reference m_x;
871 };
872 
873 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
874 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 10> : tuple_type<A10> {
876  typename tuple_type<A10>::reference get() { return m_x; }
877  typename tuple_type<A10>::const_reference get() const { return m_x; }
878 private:
879  typename tuple_type<A10>::reference m_x;
880 };
881 
882 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
883 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 11> : tuple_type<A11> {
885  typename tuple_type<A11>::reference get() { return m_x; }
886  typename tuple_type<A11>::const_reference get() const { return m_x; }
887 private:
888  typename tuple_type<A11>::reference m_x;
889 };
890 
891 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
892 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 12> : tuple_type<A12> {
894  typename tuple_type<A12>::reference get() { return m_x; }
895  typename tuple_type<A12>::const_reference get() const { return m_x; }
896 private:
897  typename tuple_type<A12>::reference m_x;
898 };
899 
900 
901 
902 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
903 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 0> : tuple_type<A0> {
905  typename tuple_type<A0>::reference get() { return m_x; }
906  typename tuple_type<A0>::const_reference get() const { return m_x; }
907 private:
908  typename tuple_type<A0>::reference m_x;
909 };
910 
911 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
912 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 1> : tuple_type<A1> {
914  typename tuple_type<A1>::reference get() { return m_x; }
915  typename tuple_type<A1>::const_reference get() const { return m_x; }
916 private:
917  typename tuple_type<A1>::reference m_x;
918 };
919 
920 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
921 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 2> : tuple_type<A2> {
923  typename tuple_type<A2>::reference get() { return m_x; }
924  typename tuple_type<A2>::const_reference get() const { return m_x; }
925 private:
926  typename tuple_type<A2>::reference m_x;
927 };
928 
929 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
930 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 3> : tuple_type<A3> {
932  typename tuple_type<A3>::reference get() { return m_x; }
933  typename tuple_type<A3>::const_reference get() const { return m_x; }
934 private:
935  typename tuple_type<A3>::reference m_x;
936 };
937 
938 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
939 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 4> : tuple_type<A4> {
941  typename tuple_type<A4>::reference get() { return m_x; }
942  typename tuple_type<A4>::const_reference get() const { return m_x; }
943 private:
944  typename tuple_type<A4>::reference m_x;
945 };
946 
947 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
948 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 5> : tuple_type<A5> {
950  typename tuple_type<A5>::reference get() { return m_x; }
951  typename tuple_type<A5>::const_reference get() const { return m_x; }
952 private:
953  typename tuple_type<A5>::reference m_x;
954 };
955 
956 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
957 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 6> : tuple_type<A6> {
959  typename tuple_type<A6>::reference get() { return m_x; }
960  typename tuple_type<A6>::const_reference get() const { return m_x; }
961 private:
962  typename tuple_type<A6>::reference m_x;
963 };
964 
965 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
966 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 7> : tuple_type<A7> {
968  typename tuple_type<A7>::reference get() { return m_x; }
969  typename tuple_type<A7>::const_reference get() const { return m_x; }
970 private:
971  typename tuple_type<A7>::reference m_x;
972 };
973 
974 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
975 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 8> : tuple_type<A8> {
977  typename tuple_type<A8>::reference get() { return m_x; }
978  typename tuple_type<A8>::const_reference get() const { return m_x; }
979 private:
980  typename tuple_type<A8>::reference m_x;
981 };
982 
983 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
984 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 9> : tuple_type<A9> {
986  typename tuple_type<A9>::reference get() { return m_x; }
987  typename tuple_type<A9>::const_reference get() const { return m_x; }
988 private:
989  typename tuple_type<A9>::reference m_x;
990 };
991 
992 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
993 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 10> : tuple_type<A10> {
995  typename tuple_type<A10>::reference get() { return m_x; }
996  typename tuple_type<A10>::const_reference get() const { return m_x; }
997 private:
998  typename tuple_type<A10>::reference m_x;
999 };
1000 
1001 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
1002 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 11> : tuple_type<A11> {
1004  typename tuple_type<A11>::reference get() { return m_x; }
1005  typename tuple_type<A11>::const_reference get() const { return m_x; }
1006 private:
1007  typename tuple_type<A11>::reference m_x;
1008 };
1009 
1010 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
1011 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 12> : tuple_type<A12> {
1013  typename tuple_type<A12>::reference get() { return m_x; }
1014  typename tuple_type<A12>::const_reference get() const { return m_x; }
1015 private:
1016  typename tuple_type<A12>::reference m_x;
1017 };
1018 
1019 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
1020 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 13> : tuple_type<A13> {
1022  typename tuple_type<A13>::reference get() { return m_x; }
1023  typename tuple_type<A13>::const_reference get() const { return m_x; }
1024 private:
1025  typename tuple_type<A13>::reference m_x;
1026 };
1027 
1028 
1029 
1030 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1031 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 0> : tuple_type<A0> {
1033  typename tuple_type<A0>::reference get() { return m_x; }
1034  typename tuple_type<A0>::const_reference get() const { return m_x; }
1035 private:
1036  typename tuple_type<A0>::reference m_x;
1037 };
1038 
1039 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1040 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 1> : tuple_type<A1> {
1042  typename tuple_type<A1>::reference get() { return m_x; }
1043  typename tuple_type<A1>::const_reference get() const { return m_x; }
1044 private:
1045  typename tuple_type<A1>::reference m_x;
1046 };
1047 
1048 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1049 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 2> : tuple_type<A2> {
1051  typename tuple_type<A2>::reference get() { return m_x; }
1052  typename tuple_type<A2>::const_reference get() const { return m_x; }
1053 private:
1054  typename tuple_type<A2>::reference m_x;
1055 };
1056 
1057 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1058 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 3> : tuple_type<A3> {
1060  typename tuple_type<A3>::reference get() { return m_x; }
1061  typename tuple_type<A3>::const_reference get() const { return m_x; }
1062 private:
1063  typename tuple_type<A3>::reference m_x;
1064 };
1065 
1066 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1067 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 4> : tuple_type<A4> {
1069  typename tuple_type<A4>::reference get() { return m_x; }
1070  typename tuple_type<A4>::const_reference get() const { return m_x; }
1071 private:
1072  typename tuple_type<A4>::reference m_x;
1073 };
1074 
1075 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1076 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 5> : tuple_type<A5> {
1078  typename tuple_type<A5>::reference get() { return m_x; }
1079  typename tuple_type<A5>::const_reference get() const { return m_x; }
1080 private:
1081  typename tuple_type<A5>::reference m_x;
1082 };
1083 
1084 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1085 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 6> : tuple_type<A6> {
1087  typename tuple_type<A6>::reference get() { return m_x; }
1088  typename tuple_type<A6>::const_reference get() const { return m_x; }
1089 private:
1090  typename tuple_type<A6>::reference m_x;
1091 };
1092 
1093 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1094 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 7> : tuple_type<A7> {
1096  typename tuple_type<A7>::reference get() { return m_x; }
1097  typename tuple_type<A7>::const_reference get() const { return m_x; }
1098 private:
1099  typename tuple_type<A7>::reference m_x;
1100 };
1101 
1102 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1103 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 8> : tuple_type<A8> {
1105  typename tuple_type<A8>::reference get() { return m_x; }
1106  typename tuple_type<A8>::const_reference get() const { return m_x; }
1107 private:
1108  typename tuple_type<A8>::reference m_x;
1109 };
1110 
1111 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1112 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 9> : tuple_type<A9> {
1114  typename tuple_type<A9>::reference get() { return m_x; }
1115  typename tuple_type<A9>::const_reference get() const { return m_x; }
1116 private:
1117  typename tuple_type<A9>::reference m_x;
1118 };
1119 
1120 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1121 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 10> : tuple_type<A10> {
1123  typename tuple_type<A10>::reference get() { return m_x; }
1124  typename tuple_type<A10>::const_reference get() const { return m_x; }
1125 private:
1126  typename tuple_type<A10>::reference m_x;
1127 };
1128 
1129 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1130 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 11> : tuple_type<A11> {
1132  typename tuple_type<A11>::reference get() { return m_x; }
1133  typename tuple_type<A11>::const_reference get() const { return m_x; }
1134 private:
1135  typename tuple_type<A11>::reference m_x;
1136 };
1137 
1138 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1139 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 12> : tuple_type<A12> {
1141  typename tuple_type<A12>::reference get() { return m_x; }
1142  typename tuple_type<A12>::const_reference get() const { return m_x; }
1143 private:
1144  typename tuple_type<A12>::reference m_x;
1145 };
1146 
1147 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1148 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 13> : tuple_type<A13> {
1150  typename tuple_type<A13>::reference get() { return m_x; }
1151  typename tuple_type<A13>::const_reference get() const { return m_x; }
1152 private:
1153  typename tuple_type<A13>::reference m_x;
1154 };
1155 
1156 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
1157 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 14> : tuple_type<A14> {
1159  typename tuple_type<A14>::reference get() { return m_x; }
1160  typename tuple_type<A14>::const_reference get() const { return m_x; }
1161 private:
1162  typename tuple_type<A14>::reference m_x;
1163 };
1164 
1165 
1166 
1167 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1168 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 0> : tuple_type<A0> {
1170  typename tuple_type<A0>::reference get() { return m_x; }
1171  typename tuple_type<A0>::const_reference get() const { return m_x; }
1172 private:
1173  typename tuple_type<A0>::reference m_x;
1174 };
1175 
1176 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1177 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 1> : tuple_type<A1> {
1179  typename tuple_type<A1>::reference get() { return m_x; }
1180  typename tuple_type<A1>::const_reference get() const { return m_x; }
1181 private:
1182  typename tuple_type<A1>::reference m_x;
1183 };
1184 
1185 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1186 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 2> : tuple_type<A2> {
1188  typename tuple_type<A2>::reference get() { return m_x; }
1189  typename tuple_type<A2>::const_reference get() const { return m_x; }
1190 private:
1191  typename tuple_type<A2>::reference m_x;
1192 };
1193 
1194 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1195 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 3> : tuple_type<A3> {
1197  typename tuple_type<A3>::reference get() { return m_x; }
1198  typename tuple_type<A3>::const_reference get() const { return m_x; }
1199 private:
1200  typename tuple_type<A3>::reference m_x;
1201 };
1202 
1203 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1204 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 4> : tuple_type<A4> {
1206  typename tuple_type<A4>::reference get() { return m_x; }
1207  typename tuple_type<A4>::const_reference get() const { return m_x; }
1208 private:
1209  typename tuple_type<A4>::reference m_x;
1210 };
1211 
1212 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1213 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 5> : tuple_type<A5> {
1215  typename tuple_type<A5>::reference get() { return m_x; }
1216  typename tuple_type<A5>::const_reference get() const { return m_x; }
1217 private:
1218  typename tuple_type<A5>::reference m_x;
1219 };
1220 
1221 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1222 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 6> : tuple_type<A6> {
1224  typename tuple_type<A6>::reference get() { return m_x; }
1225  typename tuple_type<A6>::const_reference get() const { return m_x; }
1226 private:
1227  typename tuple_type<A6>::reference m_x;
1228 };
1229 
1230 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1231 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 7> : tuple_type<A7> {
1233  typename tuple_type<A7>::reference get() { return m_x; }
1234  typename tuple_type<A7>::const_reference get() const { return m_x; }
1235 private:
1236  typename tuple_type<A7>::reference m_x;
1237 };
1238 
1239 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1240 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 8> : tuple_type<A8> {
1242  typename tuple_type<A8>::reference get() { return m_x; }
1243  typename tuple_type<A8>::const_reference get() const { return m_x; }
1244 private:
1245  typename tuple_type<A8>::reference m_x;
1246 };
1247 
1248 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1249 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 9> : tuple_type<A9> {
1251  typename tuple_type<A9>::reference get() { return m_x; }
1252  typename tuple_type<A9>::const_reference get() const { return m_x; }
1253 private:
1254  typename tuple_type<A9>::reference m_x;
1255 };
1256 
1257 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1258 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 10> : tuple_type<A10> {
1260  typename tuple_type<A10>::reference get() { return m_x; }
1261  typename tuple_type<A10>::const_reference get() const { return m_x; }
1262 private:
1263  typename tuple_type<A10>::reference m_x;
1264 };
1265 
1266 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1267 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 11> : tuple_type<A11> {
1269  typename tuple_type<A11>::reference get() { return m_x; }
1270  typename tuple_type<A11>::const_reference get() const { return m_x; }
1271 private:
1272  typename tuple_type<A11>::reference m_x;
1273 };
1274 
1275 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1276 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 12> : tuple_type<A12> {
1278  typename tuple_type<A12>::reference get() { return m_x; }
1279  typename tuple_type<A12>::const_reference get() const { return m_x; }
1280 private:
1281  typename tuple_type<A12>::reference m_x;
1282 };
1283 
1284 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1285 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 13> : tuple_type<A13> {
1287  typename tuple_type<A13>::reference get() { return m_x; }
1288  typename tuple_type<A13>::const_reference get() const { return m_x; }
1289 private:
1290  typename tuple_type<A13>::reference m_x;
1291 };
1292 
1293 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1294 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 14> : tuple_type<A14> {
1296  typename tuple_type<A14>::reference get() { return m_x; }
1297  typename tuple_type<A14>::const_reference get() const { return m_x; }
1298 private:
1299  typename tuple_type<A14>::reference m_x;
1300 };
1301 
1302 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
1303 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 15> : tuple_type<A15> {
1305  typename tuple_type<A15>::reference get() { return m_x; }
1306  typename tuple_type<A15>::const_reference get() const { return m_x; }
1307 private:
1308  typename tuple_type<A15>::reference m_x;
1309 };
1310 
1311 
1312 
1313 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1314 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> {
1316  typename tuple_type<A0>::reference get() { return m_x; }
1317  typename tuple_type<A0>::const_reference get() const { return m_x; }
1318 private:
1319  typename tuple_type<A0>::reference m_x;
1320 };
1321 
1322 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1323 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> {
1325  typename tuple_type<A1>::reference get() { return m_x; }
1326  typename tuple_type<A1>::const_reference get() const { return m_x; }
1327 private:
1328  typename tuple_type<A1>::reference m_x;
1329 };
1330 
1331 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1332 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> {
1334  typename tuple_type<A2>::reference get() { return m_x; }
1335  typename tuple_type<A2>::const_reference get() const { return m_x; }
1336 private:
1337  typename tuple_type<A2>::reference m_x;
1338 };
1339 
1340 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1341 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> {
1343  typename tuple_type<A3>::reference get() { return m_x; }
1344  typename tuple_type<A3>::const_reference get() const { return m_x; }
1345 private:
1346  typename tuple_type<A3>::reference m_x;
1347 };
1348 
1349 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1350 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> {
1352  typename tuple_type<A4>::reference get() { return m_x; }
1353  typename tuple_type<A4>::const_reference get() const { return m_x; }
1354 private:
1355  typename tuple_type<A4>::reference m_x;
1356 };
1357 
1358 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1359 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> {
1361  typename tuple_type<A5>::reference get() { return m_x; }
1362  typename tuple_type<A5>::const_reference get() const { return m_x; }
1363 private:
1364  typename tuple_type<A5>::reference m_x;
1365 };
1366 
1367 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1368 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> {
1370  typename tuple_type<A6>::reference get() { return m_x; }
1371  typename tuple_type<A6>::const_reference get() const { return m_x; }
1372 private:
1373  typename tuple_type<A6>::reference m_x;
1374 };
1375 
1376 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1377 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> {
1379  typename tuple_type<A7>::reference get() { return m_x; }
1380  typename tuple_type<A7>::const_reference get() const { return m_x; }
1381 private:
1382  typename tuple_type<A7>::reference m_x;
1383 };
1384 
1385 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1386 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> {
1388  typename tuple_type<A8>::reference get() { return m_x; }
1389  typename tuple_type<A8>::const_reference get() const { return m_x; }
1390 private:
1391  typename tuple_type<A8>::reference m_x;
1392 };
1393 
1394 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1395 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> {
1397  typename tuple_type<A9>::reference get() { return m_x; }
1398  typename tuple_type<A9>::const_reference get() const { return m_x; }
1399 private:
1400  typename tuple_type<A9>::reference m_x;
1401 };
1402 
1403 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1404 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> {
1406  typename tuple_type<A10>::reference get() { return m_x; }
1407  typename tuple_type<A10>::const_reference get() const { return m_x; }
1408 private:
1409  typename tuple_type<A10>::reference m_x;
1410 };
1411 
1412 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1413 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> {
1415  typename tuple_type<A11>::reference get() { return m_x; }
1416  typename tuple_type<A11>::const_reference get() const { return m_x; }
1417 private:
1418  typename tuple_type<A11>::reference m_x;
1419 };
1420 
1421 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1422 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> {
1424  typename tuple_type<A12>::reference get() { return m_x; }
1425  typename tuple_type<A12>::const_reference get() const { return m_x; }
1426 private:
1427  typename tuple_type<A12>::reference m_x;
1428 };
1429 
1430 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1431 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> {
1433  typename tuple_type<A13>::reference get() { return m_x; }
1434  typename tuple_type<A13>::const_reference get() const { return m_x; }
1435 private:
1436  typename tuple_type<A13>::reference m_x;
1437 };
1438 
1439 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1440 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> {
1442  typename tuple_type<A14>::reference get() { return m_x; }
1443  typename tuple_type<A14>::const_reference get() const { return m_x; }
1444 private:
1445  typename tuple_type<A14>::reference m_x;
1446 };
1447 
1448 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1449 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> {
1451  typename tuple_type<A15>::reference get() { return m_x; }
1452  typename tuple_type<A15>::const_reference get() const { return m_x; }
1453 private:
1454  typename tuple_type<A15>::reference m_x;
1455 };
1456 
1457 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
1458 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> {
1460  typename tuple_type<A16>::reference get() { return m_x; }
1461  typename tuple_type<A16>::const_reference get() const { return m_x; }
1462 private:
1463  typename tuple_type<A16>::reference m_x;
1464 };
1465 
1466 
1467 
1468 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1469 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> {
1471  typename tuple_type<A0>::reference get() { return m_x; }
1472  typename tuple_type<A0>::const_reference get() const { return m_x; }
1473 private:
1474  typename tuple_type<A0>::reference m_x;
1475 };
1476 
1477 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1478 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> {
1480  typename tuple_type<A1>::reference get() { return m_x; }
1481  typename tuple_type<A1>::const_reference get() const { return m_x; }
1482 private:
1483  typename tuple_type<A1>::reference m_x;
1484 };
1485 
1486 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1487 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> {
1489  typename tuple_type<A2>::reference get() { return m_x; }
1490  typename tuple_type<A2>::const_reference get() const { return m_x; }
1491 private:
1492  typename tuple_type<A2>::reference m_x;
1493 };
1494 
1495 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1496 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> {
1498  typename tuple_type<A3>::reference get() { return m_x; }
1499  typename tuple_type<A3>::const_reference get() const { return m_x; }
1500 private:
1501  typename tuple_type<A3>::reference m_x;
1502 };
1503 
1504 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1505 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> {
1507  typename tuple_type<A4>::reference get() { return m_x; }
1508  typename tuple_type<A4>::const_reference get() const { return m_x; }
1509 private:
1510  typename tuple_type<A4>::reference m_x;
1511 };
1512 
1513 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1514 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> {
1516  typename tuple_type<A5>::reference get() { return m_x; }
1517  typename tuple_type<A5>::const_reference get() const { return m_x; }
1518 private:
1519  typename tuple_type<A5>::reference m_x;
1520 };
1521 
1522 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1523 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> {
1525  typename tuple_type<A6>::reference get() { return m_x; }
1526  typename tuple_type<A6>::const_reference get() const { return m_x; }
1527 private:
1528  typename tuple_type<A6>::reference m_x;
1529 };
1530 
1531 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1532 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> {
1534  typename tuple_type<A7>::reference get() { return m_x; }
1535  typename tuple_type<A7>::const_reference get() const { return m_x; }
1536 private:
1537  typename tuple_type<A7>::reference m_x;
1538 };
1539 
1540 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1541 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> {
1543  typename tuple_type<A8>::reference get() { return m_x; }
1544  typename tuple_type<A8>::const_reference get() const { return m_x; }
1545 private:
1546  typename tuple_type<A8>::reference m_x;
1547 };
1548 
1549 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1550 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> {
1552  typename tuple_type<A9>::reference get() { return m_x; }
1553  typename tuple_type<A9>::const_reference get() const { return m_x; }
1554 private:
1555  typename tuple_type<A9>::reference m_x;
1556 };
1557 
1558 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1559 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> {
1561  typename tuple_type<A10>::reference get() { return m_x; }
1562  typename tuple_type<A10>::const_reference get() const { return m_x; }
1563 private:
1564  typename tuple_type<A10>::reference m_x;
1565 };
1566 
1567 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1568 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> {
1570  typename tuple_type<A11>::reference get() { return m_x; }
1571  typename tuple_type<A11>::const_reference get() const { return m_x; }
1572 private:
1573  typename tuple_type<A11>::reference m_x;
1574 };
1575 
1576 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1577 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> {
1579  typename tuple_type<A12>::reference get() { return m_x; }
1580  typename tuple_type<A12>::const_reference get() const { return m_x; }
1581 private:
1582  typename tuple_type<A12>::reference m_x;
1583 };
1584 
1585 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1586 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> {
1588  typename tuple_type<A13>::reference get() { return m_x; }
1589  typename tuple_type<A13>::const_reference get() const { return m_x; }
1590 private:
1591  typename tuple_type<A13>::reference m_x;
1592 };
1593 
1594 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1595 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> {
1597  typename tuple_type<A14>::reference get() { return m_x; }
1598  typename tuple_type<A14>::const_reference get() const { return m_x; }
1599 private:
1600  typename tuple_type<A14>::reference m_x;
1601 };
1602 
1603 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1604 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> {
1606  typename tuple_type<A15>::reference get() { return m_x; }
1607  typename tuple_type<A15>::const_reference get() const { return m_x; }
1608 private:
1609  typename tuple_type<A15>::reference m_x;
1610 };
1611 
1612 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1613 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> {
1615  typename tuple_type<A16>::reference get() { return m_x; }
1616  typename tuple_type<A16>::const_reference get() const { return m_x; }
1617 private:
1618  typename tuple_type<A16>::reference m_x;
1619 };
1620 
1621 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
1622 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> {
1624  typename tuple_type<A17>::reference get() { return m_x; }
1625  typename tuple_type<A17>::const_reference get() const { return m_x; }
1626 private:
1627  typename tuple_type<A17>::reference m_x;
1628 };
1629 
1630 
1631 
1632 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1633 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> {
1635  typename tuple_type<A0>::reference get() { return m_x; }
1636  typename tuple_type<A0>::const_reference get() const { return m_x; }
1637 private:
1638  typename tuple_type<A0>::reference m_x;
1639 };
1640 
1641 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1642 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> {
1644  typename tuple_type<A1>::reference get() { return m_x; }
1645  typename tuple_type<A1>::const_reference get() const { return m_x; }
1646 private:
1647  typename tuple_type<A1>::reference m_x;
1648 };
1649 
1650 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1651 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> {
1653  typename tuple_type<A2>::reference get() { return m_x; }
1654  typename tuple_type<A2>::const_reference get() const { return m_x; }
1655 private:
1656  typename tuple_type<A2>::reference m_x;
1657 };
1658 
1659 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1660 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> {
1662  typename tuple_type<A3>::reference get() { return m_x; }
1663  typename tuple_type<A3>::const_reference get() const { return m_x; }
1664 private:
1665  typename tuple_type<A3>::reference m_x;
1666 };
1667 
1668 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1669 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> {
1671  typename tuple_type<A4>::reference get() { return m_x; }
1672  typename tuple_type<A4>::const_reference get() const { return m_x; }
1673 private:
1674  typename tuple_type<A4>::reference m_x;
1675 };
1676 
1677 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1678 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> {
1680  typename tuple_type<A5>::reference get() { return m_x; }
1681  typename tuple_type<A5>::const_reference get() const { return m_x; }
1682 private:
1683  typename tuple_type<A5>::reference m_x;
1684 };
1685 
1686 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1687 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> {
1689  typename tuple_type<A6>::reference get() { return m_x; }
1690  typename tuple_type<A6>::const_reference get() const { return m_x; }
1691 private:
1692  typename tuple_type<A6>::reference m_x;
1693 };
1694 
1695 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1696 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> {
1698  typename tuple_type<A7>::reference get() { return m_x; }
1699  typename tuple_type<A7>::const_reference get() const { return m_x; }
1700 private:
1701  typename tuple_type<A7>::reference m_x;
1702 };
1703 
1704 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1705 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> {
1707  typename tuple_type<A8>::reference get() { return m_x; }
1708  typename tuple_type<A8>::const_reference get() const { return m_x; }
1709 private:
1710  typename tuple_type<A8>::reference m_x;
1711 };
1712 
1713 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1714 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> {
1716  typename tuple_type<A9>::reference get() { return m_x; }
1717  typename tuple_type<A9>::const_reference get() const { return m_x; }
1718 private:
1719  typename tuple_type<A9>::reference m_x;
1720 };
1721 
1722 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1723 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> {
1725  typename tuple_type<A10>::reference get() { return m_x; }
1726  typename tuple_type<A10>::const_reference get() const { return m_x; }
1727 private:
1728  typename tuple_type<A10>::reference m_x;
1729 };
1730 
1731 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1732 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> {
1734  typename tuple_type<A11>::reference get() { return m_x; }
1735  typename tuple_type<A11>::const_reference get() const { return m_x; }
1736 private:
1737  typename tuple_type<A11>::reference m_x;
1738 };
1739 
1740 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1741 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> {
1743  typename tuple_type<A12>::reference get() { return m_x; }
1744  typename tuple_type<A12>::const_reference get() const { return m_x; }
1745 private:
1746  typename tuple_type<A12>::reference m_x;
1747 };
1748 
1749 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1750 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> {
1752  typename tuple_type<A13>::reference get() { return m_x; }
1753  typename tuple_type<A13>::const_reference get() const { return m_x; }
1754 private:
1755  typename tuple_type<A13>::reference m_x;
1756 };
1757 
1758 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1759 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> {
1761  typename tuple_type<A14>::reference get() { return m_x; }
1762  typename tuple_type<A14>::const_reference get() const { return m_x; }
1763 private:
1764  typename tuple_type<A14>::reference m_x;
1765 };
1766 
1767 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1768 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> {
1770  typename tuple_type<A15>::reference get() { return m_x; }
1771  typename tuple_type<A15>::const_reference get() const { return m_x; }
1772 private:
1773  typename tuple_type<A15>::reference m_x;
1774 };
1775 
1776 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1777 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> {
1779  typename tuple_type<A16>::reference get() { return m_x; }
1780  typename tuple_type<A16>::const_reference get() const { return m_x; }
1781 private:
1782  typename tuple_type<A16>::reference m_x;
1783 };
1784 
1785 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1786 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> {
1788  typename tuple_type<A17>::reference get() { return m_x; }
1789  typename tuple_type<A17>::const_reference get() const { return m_x; }
1790 private:
1791  typename tuple_type<A17>::reference m_x;
1792 };
1793 
1794 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
1795 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> {
1797  typename tuple_type<A18>::reference get() { return m_x; }
1798  typename tuple_type<A18>::const_reference get() const { return m_x; }
1799 private:
1800  typename tuple_type<A18>::reference m_x;
1801 };
1802 
1803 
1804 
1805 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1806 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> {
1808  typename tuple_type<A0>::reference get() { return m_x; }
1809  typename tuple_type<A0>::const_reference get() const { return m_x; }
1810 private:
1811  typename tuple_type<A0>::reference m_x;
1812 };
1813 
1814 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1815 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> {
1817  typename tuple_type<A1>::reference get() { return m_x; }
1818  typename tuple_type<A1>::const_reference get() const { return m_x; }
1819 private:
1820  typename tuple_type<A1>::reference m_x;
1821 };
1822 
1823 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1824 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> {
1826  typename tuple_type<A2>::reference get() { return m_x; }
1827  typename tuple_type<A2>::const_reference get() const { return m_x; }
1828 private:
1829  typename tuple_type<A2>::reference m_x;
1830 };
1831 
1832 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1833 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> {
1835  typename tuple_type<A3>::reference get() { return m_x; }
1836  typename tuple_type<A3>::const_reference get() const { return m_x; }
1837 private:
1838  typename tuple_type<A3>::reference m_x;
1839 };
1840 
1841 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1842 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> {
1844  typename tuple_type<A4>::reference get() { return m_x; }
1845  typename tuple_type<A4>::const_reference get() const { return m_x; }
1846 private:
1847  typename tuple_type<A4>::reference m_x;
1848 };
1849 
1850 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1851 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> {
1853  typename tuple_type<A5>::reference get() { return m_x; }
1854  typename tuple_type<A5>::const_reference get() const { return m_x; }
1855 private:
1856  typename tuple_type<A5>::reference m_x;
1857 };
1858 
1859 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1860 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> {
1862  typename tuple_type<A6>::reference get() { return m_x; }
1863  typename tuple_type<A6>::const_reference get() const { return m_x; }
1864 private:
1865  typename tuple_type<A6>::reference m_x;
1866 };
1867 
1868 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1869 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> {
1871  typename tuple_type<A7>::reference get() { return m_x; }
1872  typename tuple_type<A7>::const_reference get() const { return m_x; }
1873 private:
1874  typename tuple_type<A7>::reference m_x;
1875 };
1876 
1877 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1878 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> {
1880  typename tuple_type<A8>::reference get() { return m_x; }
1881  typename tuple_type<A8>::const_reference get() const { return m_x; }
1882 private:
1883  typename tuple_type<A8>::reference m_x;
1884 };
1885 
1886 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1887 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> {
1889  typename tuple_type<A9>::reference get() { return m_x; }
1890  typename tuple_type<A9>::const_reference get() const { return m_x; }
1891 private:
1892  typename tuple_type<A9>::reference m_x;
1893 };
1894 
1895 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1896 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> {
1898  typename tuple_type<A10>::reference get() { return m_x; }
1899  typename tuple_type<A10>::const_reference get() const { return m_x; }
1900 private:
1901  typename tuple_type<A10>::reference m_x;
1902 };
1903 
1904 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1905 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> {
1907  typename tuple_type<A11>::reference get() { return m_x; }
1908  typename tuple_type<A11>::const_reference get() const { return m_x; }
1909 private:
1910  typename tuple_type<A11>::reference m_x;
1911 };
1912 
1913 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1914 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> {
1916  typename tuple_type<A12>::reference get() { return m_x; }
1917  typename tuple_type<A12>::const_reference get() const { return m_x; }
1918 private:
1919  typename tuple_type<A12>::reference m_x;
1920 };
1921 
1922 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1923 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> {
1925  typename tuple_type<A13>::reference get() { return m_x; }
1926  typename tuple_type<A13>::const_reference get() const { return m_x; }
1927 private:
1928  typename tuple_type<A13>::reference m_x;
1929 };
1930 
1931 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1932 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> {
1934  typename tuple_type<A14>::reference get() { return m_x; }
1935  typename tuple_type<A14>::const_reference get() const { return m_x; }
1936 private:
1937  typename tuple_type<A14>::reference m_x;
1938 };
1939 
1940 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1941 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> {
1943  typename tuple_type<A15>::reference get() { return m_x; }
1944  typename tuple_type<A15>::const_reference get() const { return m_x; }
1945 private:
1946  typename tuple_type<A15>::reference m_x;
1947 };
1948 
1949 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1950 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> {
1952  typename tuple_type<A16>::reference get() { return m_x; }
1953  typename tuple_type<A16>::const_reference get() const { return m_x; }
1954 private:
1955  typename tuple_type<A16>::reference m_x;
1956 };
1957 
1958 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1959 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> {
1961  typename tuple_type<A17>::reference get() { return m_x; }
1962  typename tuple_type<A17>::const_reference get() const { return m_x; }
1963 private:
1964  typename tuple_type<A17>::reference m_x;
1965 };
1966 
1967 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1968 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> {
1970  typename tuple_type<A18>::reference get() { return m_x; }
1971  typename tuple_type<A18>::const_reference get() const { return m_x; }
1972 private:
1973  typename tuple_type<A18>::reference m_x;
1974 };
1975 
1976 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
1977 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> {
1979  typename tuple_type<A19>::reference get() { return m_x; }
1980  typename tuple_type<A19>::const_reference get() const { return m_x; }
1981 private:
1982  typename tuple_type<A19>::reference m_x;
1983 };
1984 
1985 
1986 
1987 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
1988 struct 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> {
1990  typename tuple_type<A0>::reference get() { return m_x; }
1991  typename tuple_type<A0>::const_reference get() const { return m_x; }
1992 private:
1993  typename tuple_type<A0>::reference m_x;
1994 };
1995 
1996 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
1997 struct 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> {
1999  typename tuple_type<A1>::reference get() { return m_x; }
2000  typename tuple_type<A1>::const_reference get() const { return m_x; }
2001 private:
2002  typename tuple_type<A1>::reference m_x;
2003 };
2004 
2005 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2006 struct 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> {
2008  typename tuple_type<A2>::reference get() { return m_x; }
2009  typename tuple_type<A2>::const_reference get() const { return m_x; }
2010 private:
2011  typename tuple_type<A2>::reference m_x;
2012 };
2013 
2014 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2015 struct 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> {
2017  typename tuple_type<A3>::reference get() { return m_x; }
2018  typename tuple_type<A3>::const_reference get() const { return m_x; }
2019 private:
2020  typename tuple_type<A3>::reference m_x;
2021 };
2022 
2023 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2024 struct 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> {
2026  typename tuple_type<A4>::reference get() { return m_x; }
2027  typename tuple_type<A4>::const_reference get() const { return m_x; }
2028 private:
2029  typename tuple_type<A4>::reference m_x;
2030 };
2031 
2032 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2033 struct 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> {
2035  typename tuple_type<A5>::reference get() { return m_x; }
2036  typename tuple_type<A5>::const_reference get() const { return m_x; }
2037 private:
2038  typename tuple_type<A5>::reference m_x;
2039 };
2040 
2041 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2042 struct 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> {
2044  typename tuple_type<A6>::reference get() { return m_x; }
2045  typename tuple_type<A6>::const_reference get() const { return m_x; }
2046 private:
2047  typename tuple_type<A6>::reference m_x;
2048 };
2049 
2050 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2051 struct 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> {
2053  typename tuple_type<A7>::reference get() { return m_x; }
2054  typename tuple_type<A7>::const_reference get() const { return m_x; }
2055 private:
2056  typename tuple_type<A7>::reference m_x;
2057 };
2058 
2059 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2060 struct 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> {
2062  typename tuple_type<A8>::reference get() { return m_x; }
2063  typename tuple_type<A8>::const_reference get() const { return m_x; }
2064 private:
2065  typename tuple_type<A8>::reference m_x;
2066 };
2067 
2068 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2069 struct 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> {
2071  typename tuple_type<A9>::reference get() { return m_x; }
2072  typename tuple_type<A9>::const_reference get() const { return m_x; }
2073 private:
2074  typename tuple_type<A9>::reference m_x;
2075 };
2076 
2077 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2078 struct 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> {
2080  typename tuple_type<A10>::reference get() { return m_x; }
2081  typename tuple_type<A10>::const_reference get() const { return m_x; }
2082 private:
2083  typename tuple_type<A10>::reference m_x;
2084 };
2085 
2086 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2087 struct 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> {
2089  typename tuple_type<A11>::reference get() { return m_x; }
2090  typename tuple_type<A11>::const_reference get() const { return m_x; }
2091 private:
2092  typename tuple_type<A11>::reference m_x;
2093 };
2094 
2095 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2096 struct 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> {
2098  typename tuple_type<A12>::reference get() { return m_x; }
2099  typename tuple_type<A12>::const_reference get() const { return m_x; }
2100 private:
2101  typename tuple_type<A12>::reference m_x;
2102 };
2103 
2104 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2105 struct 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> {
2107  typename tuple_type<A13>::reference get() { return m_x; }
2108  typename tuple_type<A13>::const_reference get() const { return m_x; }
2109 private:
2110  typename tuple_type<A13>::reference m_x;
2111 };
2112 
2113 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2114 struct 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> {
2116  typename tuple_type<A14>::reference get() { return m_x; }
2117  typename tuple_type<A14>::const_reference get() const { return m_x; }
2118 private:
2119  typename tuple_type<A14>::reference m_x;
2120 };
2121 
2122 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2123 struct 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> {
2125  typename tuple_type<A15>::reference get() { return m_x; }
2126  typename tuple_type<A15>::const_reference get() const { return m_x; }
2127 private:
2128  typename tuple_type<A15>::reference m_x;
2129 };
2130 
2131 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2132 struct 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> {
2134  typename tuple_type<A16>::reference get() { return m_x; }
2135  typename tuple_type<A16>::const_reference get() const { return m_x; }
2136 private:
2137  typename tuple_type<A16>::reference m_x;
2138 };
2139 
2140 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2141 struct 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> {
2143  typename tuple_type<A17>::reference get() { return m_x; }
2144  typename tuple_type<A17>::const_reference get() const { return m_x; }
2145 private:
2146  typename tuple_type<A17>::reference m_x;
2147 };
2148 
2149 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2150 struct 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> {
2152  typename tuple_type<A18>::reference get() { return m_x; }
2153  typename tuple_type<A18>::const_reference get() const { return m_x; }
2154 private:
2155  typename tuple_type<A18>::reference m_x;
2156 };
2157 
2158 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2159 struct 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> {
2161  typename tuple_type<A19>::reference get() { return m_x; }
2162  typename tuple_type<A19>::const_reference get() const { return m_x; }
2163 private:
2164  typename tuple_type<A19>::reference m_x;
2165 };
2166 
2167 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
2168 struct 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> {
2170  typename tuple_type<A20>::reference get() { return m_x; }
2171  typename tuple_type<A20>::const_reference get() const { return m_x; }
2172 private:
2173  typename tuple_type<A20>::reference m_x;
2174 };
2175 
2176 
2177 
2178 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2179 struct tuple_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> {
2181  typename tuple_type<A0>::reference get() { return m_x; }
2182  typename tuple_type<A0>::const_reference get() const { return m_x; }
2183 private:
2184  typename tuple_type<A0>::reference m_x;
2185 };
2186 
2187 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2188 struct tuple_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> {
2190  typename tuple_type<A1>::reference get() { return m_x; }
2191  typename tuple_type<A1>::const_reference get() const { return m_x; }
2192 private:
2193  typename tuple_type<A1>::reference m_x;
2194 };
2195 
2196 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2197 struct tuple_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> {
2199  typename tuple_type<A2>::reference get() { return m_x; }
2200  typename tuple_type<A2>::const_reference get() const { return m_x; }
2201 private:
2202  typename tuple_type<A2>::reference m_x;
2203 };
2204 
2205 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2206 struct tuple_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> {
2208  typename tuple_type<A3>::reference get() { return m_x; }
2209  typename tuple_type<A3>::const_reference get() const { return m_x; }
2210 private:
2211  typename tuple_type<A3>::reference m_x;
2212 };
2213 
2214 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2215 struct tuple_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> {
2217  typename tuple_type<A4>::reference get() { return m_x; }
2218  typename tuple_type<A4>::const_reference get() const { return m_x; }
2219 private:
2220  typename tuple_type<A4>::reference m_x;
2221 };
2222 
2223 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2224 struct tuple_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> {
2226  typename tuple_type<A5>::reference get() { return m_x; }
2227  typename tuple_type<A5>::const_reference get() const { return m_x; }
2228 private:
2229  typename tuple_type<A5>::reference m_x;
2230 };
2231 
2232 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2233 struct tuple_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> {
2235  typename tuple_type<A6>::reference get() { return m_x; }
2236  typename tuple_type<A6>::const_reference get() const { return m_x; }
2237 private:
2238  typename tuple_type<A6>::reference m_x;
2239 };
2240 
2241 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2242 struct tuple_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> {
2244  typename tuple_type<A7>::reference get() { return m_x; }
2245  typename tuple_type<A7>::const_reference get() const { return m_x; }
2246 private:
2247  typename tuple_type<A7>::reference m_x;
2248 };
2249 
2250 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2251 struct tuple_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> {
2253  typename tuple_type<A8>::reference get() { return m_x; }
2254  typename tuple_type<A8>::const_reference get() const { return m_x; }
2255 private:
2256  typename tuple_type<A8>::reference m_x;
2257 };
2258 
2259 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2260 struct tuple_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> {
2262  typename tuple_type<A9>::reference get() { return m_x; }
2263  typename tuple_type<A9>::const_reference get() const { return m_x; }
2264 private:
2265  typename tuple_type<A9>::reference m_x;
2266 };
2267 
2268 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2269 struct tuple_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> {
2271  typename tuple_type<A10>::reference get() { return m_x; }
2272  typename tuple_type<A10>::const_reference get() const { return m_x; }
2273 private:
2274  typename tuple_type<A10>::reference m_x;
2275 };
2276 
2277 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2278 struct tuple_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> {
2280  typename tuple_type<A11>::reference get() { return m_x; }
2281  typename tuple_type<A11>::const_reference get() const { return m_x; }
2282 private:
2283  typename tuple_type<A11>::reference m_x;
2284 };
2285 
2286 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2287 struct tuple_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> {
2289  typename tuple_type<A12>::reference get() { return m_x; }
2290  typename tuple_type<A12>::const_reference get() const { return m_x; }
2291 private:
2292  typename tuple_type<A12>::reference m_x;
2293 };
2294 
2295 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2296 struct tuple_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> {
2298  typename tuple_type<A13>::reference get() { return m_x; }
2299  typename tuple_type<A13>::const_reference get() const { return m_x; }
2300 private:
2301  typename tuple_type<A13>::reference m_x;
2302 };
2303 
2304 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2305 struct tuple_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> {
2307  typename tuple_type<A14>::reference get() { return m_x; }
2308  typename tuple_type<A14>::const_reference get() const { return m_x; }
2309 private:
2310  typename tuple_type<A14>::reference m_x;
2311 };
2312 
2313 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2314 struct tuple_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> {
2316  typename tuple_type<A15>::reference get() { return m_x; }
2317  typename tuple_type<A15>::const_reference get() const { return m_x; }
2318 private:
2319  typename tuple_type<A15>::reference m_x;
2320 };
2321 
2322 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2323 struct tuple_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> {
2325  typename tuple_type<A16>::reference get() { return m_x; }
2326  typename tuple_type<A16>::const_reference get() const { return m_x; }
2327 private:
2328  typename tuple_type<A16>::reference m_x;
2329 };
2330 
2331 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2332 struct tuple_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> {
2334  typename tuple_type<A17>::reference get() { return m_x; }
2335  typename tuple_type<A17>::const_reference get() const { return m_x; }
2336 private:
2337  typename tuple_type<A17>::reference m_x;
2338 };
2339 
2340 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2341 struct tuple_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> {
2343  typename tuple_type<A18>::reference get() { return m_x; }
2344  typename tuple_type<A18>::const_reference get() const { return m_x; }
2345 private:
2346  typename tuple_type<A18>::reference m_x;
2347 };
2348 
2349 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2350 struct tuple_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> {
2352  typename tuple_type<A19>::reference get() { return m_x; }
2353  typename tuple_type<A19>::const_reference get() const { return m_x; }
2354 private:
2355  typename tuple_type<A19>::reference m_x;
2356 };
2357 
2358 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2359 struct tuple_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> {
2361  typename tuple_type<A20>::reference get() { return m_x; }
2362  typename tuple_type<A20>::const_reference get() const { return m_x; }
2363 private:
2364  typename tuple_type<A20>::reference m_x;
2365 };
2366 
2367 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
2368 struct tuple_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> {
2370  typename tuple_type<A21>::reference get() { return m_x; }
2371  typename tuple_type<A21>::const_reference get() const { return m_x; }
2372 private:
2373  typename tuple_type<A21>::reference m_x;
2374 };
2375 
2376 
2377 
2378 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2379 struct tuple_element<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> {
2381  typename tuple_type<A0>::reference get() { return m_x; }
2382  typename tuple_type<A0>::const_reference get() const { return m_x; }
2383 private:
2384  typename tuple_type<A0>::reference m_x;
2385 };
2386 
2387 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2388 struct tuple_element<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> {
2390  typename tuple_type<A1>::reference get() { return m_x; }
2391  typename tuple_type<A1>::const_reference get() const { return m_x; }
2392 private:
2393  typename tuple_type<A1>::reference m_x;
2394 };
2395 
2396 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2397 struct tuple_element<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> {
2399  typename tuple_type<A2>::reference get() { return m_x; }
2400  typename tuple_type<A2>::const_reference get() const { return m_x; }
2401 private:
2402  typename tuple_type<A2>::reference m_x;
2403 };
2404 
2405 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2406 struct tuple_element<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> {
2408  typename tuple_type<A3>::reference get() { return m_x; }
2409  typename tuple_type<A3>::const_reference get() const { return m_x; }
2410 private:
2411  typename tuple_type<A3>::reference m_x;
2412 };
2413 
2414 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2415 struct tuple_element<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> {
2417  typename tuple_type<A4>::reference get() { return m_x; }
2418  typename tuple_type<A4>::const_reference get() const { return m_x; }
2419 private:
2420  typename tuple_type<A4>::reference m_x;
2421 };
2422 
2423 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2424 struct tuple_element<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> {
2426  typename tuple_type<A5>::reference get() { return m_x; }
2427  typename tuple_type<A5>::const_reference get() const { return m_x; }
2428 private:
2429  typename tuple_type<A5>::reference m_x;
2430 };
2431 
2432 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2433 struct tuple_element<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> {
2435  typename tuple_type<A6>::reference get() { return m_x; }
2436  typename tuple_type<A6>::const_reference get() const { return m_x; }
2437 private:
2438  typename tuple_type<A6>::reference m_x;
2439 };
2440 
2441 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2442 struct tuple_element<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> {
2444  typename tuple_type<A7>::reference get() { return m_x; }
2445  typename tuple_type<A7>::const_reference get() const { return m_x; }
2446 private:
2447  typename tuple_type<A7>::reference m_x;
2448 };
2449 
2450 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2451 struct tuple_element<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> {
2453  typename tuple_type<A8>::reference get() { return m_x; }
2454  typename tuple_type<A8>::const_reference get() const { return m_x; }
2455 private:
2456  typename tuple_type<A8>::reference m_x;
2457 };
2458 
2459 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2460 struct tuple_element<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> {
2462  typename tuple_type<A9>::reference get() { return m_x; }
2463  typename tuple_type<A9>::const_reference get() const { return m_x; }
2464 private:
2465  typename tuple_type<A9>::reference m_x;
2466 };
2467 
2468 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2469 struct tuple_element<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> {
2471  typename tuple_type<A10>::reference get() { return m_x; }
2472  typename tuple_type<A10>::const_reference get() const { return m_x; }
2473 private:
2474  typename tuple_type<A10>::reference m_x;
2475 };
2476 
2477 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2478 struct tuple_element<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> {
2480  typename tuple_type<A11>::reference get() { return m_x; }
2481  typename tuple_type<A11>::const_reference get() const { return m_x; }
2482 private:
2483  typename tuple_type<A11>::reference m_x;
2484 };
2485 
2486 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2487 struct tuple_element<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> {
2489  typename tuple_type<A12>::reference get() { return m_x; }
2490  typename tuple_type<A12>::const_reference get() const { return m_x; }
2491 private:
2492  typename tuple_type<A12>::reference m_x;
2493 };
2494 
2495 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2496 struct tuple_element<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> {
2498  typename tuple_type<A13>::reference get() { return m_x; }
2499  typename tuple_type<A13>::const_reference get() const { return m_x; }
2500 private:
2501  typename tuple_type<A13>::reference m_x;
2502 };
2503 
2504 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2505 struct tuple_element<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> {
2507  typename tuple_type<A14>::reference get() { return m_x; }
2508  typename tuple_type<A14>::const_reference get() const { return m_x; }
2509 private:
2510  typename tuple_type<A14>::reference m_x;
2511 };
2512 
2513 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2514 struct tuple_element<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> {
2516  typename tuple_type<A15>::reference get() { return m_x; }
2517  typename tuple_type<A15>::const_reference get() const { return m_x; }
2518 private:
2519  typename tuple_type<A15>::reference m_x;
2520 };
2521 
2522 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2523 struct tuple_element<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> {
2525  typename tuple_type<A16>::reference get() { return m_x; }
2526  typename tuple_type<A16>::const_reference get() const { return m_x; }
2527 private:
2528  typename tuple_type<A16>::reference m_x;
2529 };
2530 
2531 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2532 struct tuple_element<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> {
2534  typename tuple_type<A17>::reference get() { return m_x; }
2535  typename tuple_type<A17>::const_reference get() const { return m_x; }
2536 private:
2537  typename tuple_type<A17>::reference m_x;
2538 };
2539 
2540 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2541 struct tuple_element<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> {
2543  typename tuple_type<A18>::reference get() { return m_x; }
2544  typename tuple_type<A18>::const_reference get() const { return m_x; }
2545 private:
2546  typename tuple_type<A18>::reference m_x;
2547 };
2548 
2549 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2550 struct tuple_element<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> {
2552  typename tuple_type<A19>::reference get() { return m_x; }
2553  typename tuple_type<A19>::const_reference get() const { return m_x; }
2554 private:
2555  typename tuple_type<A19>::reference m_x;
2556 };
2557 
2558 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2559 struct tuple_element<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> {
2561  typename tuple_type<A20>::reference get() { return m_x; }
2562  typename tuple_type<A20>::const_reference get() const { return m_x; }
2563 private:
2564  typename tuple_type<A20>::reference m_x;
2565 };
2566 
2567 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2568 struct tuple_element<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> {
2570  typename tuple_type<A21>::reference get() { return m_x; }
2571  typename tuple_type<A21>::const_reference get() const { return m_x; }
2572 private:
2573  typename tuple_type<A21>::reference m_x;
2574 };
2575 
2576 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
2577 struct tuple_element<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> {
2579  typename tuple_type<A22>::reference get() { return m_x; }
2580  typename tuple_type<A22>::const_reference get() const { return m_x; }
2581 private:
2582  typename tuple_type<A22>::reference m_x;
2583 };
2584 
2585 
2586 
2587 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2588 struct tuple_element<tuple<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> {
2590  typename tuple_type<A0>::reference get() { return m_x; }
2591  typename tuple_type<A0>::const_reference get() const { return m_x; }
2592 private:
2593  typename tuple_type<A0>::reference m_x;
2594 };
2595 
2596 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2597 struct tuple_element<tuple<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> {
2599  typename tuple_type<A1>::reference get() { return m_x; }
2600  typename tuple_type<A1>::const_reference get() const { return m_x; }
2601 private:
2602  typename tuple_type<A1>::reference m_x;
2603 };
2604 
2605 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2606 struct tuple_element<tuple<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> {
2608  typename tuple_type<A2>::reference get() { return m_x; }
2609  typename tuple_type<A2>::const_reference get() const { return m_x; }
2610 private:
2611  typename tuple_type<A2>::reference m_x;
2612 };
2613 
2614 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2615 struct tuple_element<tuple<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> {
2617  typename tuple_type<A3>::reference get() { return m_x; }
2618  typename tuple_type<A3>::const_reference get() const { return m_x; }
2619 private:
2620  typename tuple_type<A3>::reference m_x;
2621 };
2622 
2623 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2624 struct tuple_element<tuple<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> {
2626  typename tuple_type<A4>::reference get() { return m_x; }
2627  typename tuple_type<A4>::const_reference get() const { return m_x; }
2628 private:
2629  typename tuple_type<A4>::reference m_x;
2630 };
2631 
2632 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2633 struct tuple_element<tuple<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> {
2635  typename tuple_type<A5>::reference get() { return m_x; }
2636  typename tuple_type<A5>::const_reference get() const { return m_x; }
2637 private:
2638  typename tuple_type<A5>::reference m_x;
2639 };
2640 
2641 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2642 struct tuple_element<tuple<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> {
2644  typename tuple_type<A6>::reference get() { return m_x; }
2645  typename tuple_type<A6>::const_reference get() const { return m_x; }
2646 private:
2647  typename tuple_type<A6>::reference m_x;
2648 };
2649 
2650 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2651 struct tuple_element<tuple<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> {
2653  typename tuple_type<A7>::reference get() { return m_x; }
2654  typename tuple_type<A7>::const_reference get() const { return m_x; }
2655 private:
2656  typename tuple_type<A7>::reference m_x;
2657 };
2658 
2659 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2660 struct tuple_element<tuple<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> {
2662  typename tuple_type<A8>::reference get() { return m_x; }
2663  typename tuple_type<A8>::const_reference get() const { return m_x; }
2664 private:
2665  typename tuple_type<A8>::reference m_x;
2666 };
2667 
2668 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2669 struct tuple_element<tuple<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> {
2671  typename tuple_type<A9>::reference get() { return m_x; }
2672  typename tuple_type<A9>::const_reference get() const { return m_x; }
2673 private:
2674  typename tuple_type<A9>::reference m_x;
2675 };
2676 
2677 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2678 struct tuple_element<tuple<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> {
2680  typename tuple_type<A10>::reference get() { return m_x; }
2681  typename tuple_type<A10>::const_reference get() const { return m_x; }
2682 private:
2683  typename tuple_type<A10>::reference m_x;
2684 };
2685 
2686 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2687 struct tuple_element<tuple<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> {
2689  typename tuple_type<A11>::reference get() { return m_x; }
2690  typename tuple_type<A11>::const_reference get() const { return m_x; }
2691 private:
2692  typename tuple_type<A11>::reference m_x;
2693 };
2694 
2695 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2696 struct tuple_element<tuple<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> {
2698  typename tuple_type<A12>::reference get() { return m_x; }
2699  typename tuple_type<A12>::const_reference get() const { return m_x; }
2700 private:
2701  typename tuple_type<A12>::reference m_x;
2702 };
2703 
2704 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2705 struct tuple_element<tuple<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> {
2707  typename tuple_type<A13>::reference get() { return m_x; }
2708  typename tuple_type<A13>::const_reference get() const { return m_x; }
2709 private:
2710  typename tuple_type<A13>::reference m_x;
2711 };
2712 
2713 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2714 struct tuple_element<tuple<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> {
2716  typename tuple_type<A14>::reference get() { return m_x; }
2717  typename tuple_type<A14>::const_reference get() const { return m_x; }
2718 private:
2719  typename tuple_type<A14>::reference m_x;
2720 };
2721 
2722 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2723 struct tuple_element<tuple<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> {
2725  typename tuple_type<A15>::reference get() { return m_x; }
2726  typename tuple_type<A15>::const_reference get() const { return m_x; }
2727 private:
2728  typename tuple_type<A15>::reference m_x;
2729 };
2730 
2731 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2732 struct tuple_element<tuple<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> {
2734  typename tuple_type<A16>::reference get() { return m_x; }
2735  typename tuple_type<A16>::const_reference get() const { return m_x; }
2736 private:
2737  typename tuple_type<A16>::reference m_x;
2738 };
2739 
2740 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2741 struct tuple_element<tuple<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> {
2743  typename tuple_type<A17>::reference get() { return m_x; }
2744  typename tuple_type<A17>::const_reference get() const { return m_x; }
2745 private:
2746  typename tuple_type<A17>::reference m_x;
2747 };
2748 
2749 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2750 struct tuple_element<tuple<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> {
2752  typename tuple_type<A18>::reference get() { return m_x; }
2753  typename tuple_type<A18>::const_reference get() const { return m_x; }
2754 private:
2755  typename tuple_type<A18>::reference m_x;
2756 };
2757 
2758 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2759 struct tuple_element<tuple<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> {
2761  typename tuple_type<A19>::reference get() { return m_x; }
2762  typename tuple_type<A19>::const_reference get() const { return m_x; }
2763 private:
2764  typename tuple_type<A19>::reference m_x;
2765 };
2766 
2767 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2768 struct tuple_element<tuple<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> {
2770  typename tuple_type<A20>::reference get() { return m_x; }
2771  typename tuple_type<A20>::const_reference get() const { return m_x; }
2772 private:
2773  typename tuple_type<A20>::reference m_x;
2774 };
2775 
2776 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2777 struct tuple_element<tuple<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> {
2779  typename tuple_type<A21>::reference get() { return m_x; }
2780  typename tuple_type<A21>::const_reference get() const { return m_x; }
2781 private:
2782  typename tuple_type<A21>::reference m_x;
2783 };
2784 
2785 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2786 struct tuple_element<tuple<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> {
2788  typename tuple_type<A22>::reference get() { return m_x; }
2789  typename tuple_type<A22>::const_reference get() const { return m_x; }
2790 private:
2791  typename tuple_type<A22>::reference m_x;
2792 };
2793 
2794 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
2795 struct tuple_element<tuple<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> {
2797  typename tuple_type<A23>::reference get() { return m_x; }
2798  typename tuple_type<A23>::const_reference get() const { return m_x; }
2799 private:
2800  typename tuple_type<A23>::reference m_x;
2801 };
2802 
2803 
2804 
2805 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2806 struct tuple_element<tuple<A0, 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> {
2808  typename tuple_type<A0>::reference get() { return m_x; }
2809  typename tuple_type<A0>::const_reference get() const { return m_x; }
2810 private:
2811  typename tuple_type<A0>::reference m_x;
2812 };
2813 
2814 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2815 struct tuple_element<tuple<A0, 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> {
2817  typename tuple_type<A1>::reference get() { return m_x; }
2818  typename tuple_type<A1>::const_reference get() const { return m_x; }
2819 private:
2820  typename tuple_type<A1>::reference m_x;
2821 };
2822 
2823 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2824 struct tuple_element<tuple<A0, 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> {
2826  typename tuple_type<A2>::reference get() { return m_x; }
2827  typename tuple_type<A2>::const_reference get() const { return m_x; }
2828 private:
2829  typename tuple_type<A2>::reference m_x;
2830 };
2831 
2832 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2833 struct tuple_element<tuple<A0, 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> {
2835  typename tuple_type<A3>::reference get() { return m_x; }
2836  typename tuple_type<A3>::const_reference get() const { return m_x; }
2837 private:
2838  typename tuple_type<A3>::reference m_x;
2839 };
2840 
2841 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2842 struct tuple_element<tuple<A0, 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> {
2844  typename tuple_type<A4>::reference get() { return m_x; }
2845  typename tuple_type<A4>::const_reference get() const { return m_x; }
2846 private:
2847  typename tuple_type<A4>::reference m_x;
2848 };
2849 
2850 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2851 struct tuple_element<tuple<A0, 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> {
2853  typename tuple_type<A5>::reference get() { return m_x; }
2854  typename tuple_type<A5>::const_reference get() const { return m_x; }
2855 private:
2856  typename tuple_type<A5>::reference m_x;
2857 };
2858 
2859 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2860 struct tuple_element<tuple<A0, 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> {
2862  typename tuple_type<A6>::reference get() { return m_x; }
2863  typename tuple_type<A6>::const_reference get() const { return m_x; }
2864 private:
2865  typename tuple_type<A6>::reference m_x;
2866 };
2867 
2868 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2869 struct tuple_element<tuple<A0, 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> {
2871  typename tuple_type<A7>::reference get() { return m_x; }
2872  typename tuple_type<A7>::const_reference get() const { return m_x; }
2873 private:
2874  typename tuple_type<A7>::reference m_x;
2875 };
2876 
2877 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2878 struct tuple_element<tuple<A0, 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> {
2880  typename tuple_type<A8>::reference get() { return m_x; }
2881  typename tuple_type<A8>::const_reference get() const { return m_x; }
2882 private:
2883  typename tuple_type<A8>::reference m_x;
2884 };
2885 
2886 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2887 struct tuple_element<tuple<A0, 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> {
2889  typename tuple_type<A9>::reference get() { return m_x; }
2890  typename tuple_type<A9>::const_reference get() const { return m_x; }
2891 private:
2892  typename tuple_type<A9>::reference m_x;
2893 };
2894 
2895 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2896 struct tuple_element<tuple<A0, 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> {
2898  typename tuple_type<A10>::reference get() { return m_x; }
2899  typename tuple_type<A10>::const_reference get() const { return m_x; }
2900 private:
2901  typename tuple_type<A10>::reference m_x;
2902 };
2903 
2904 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2905 struct tuple_element<tuple<A0, 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> {
2907  typename tuple_type<A11>::reference get() { return m_x; }
2908  typename tuple_type<A11>::const_reference get() const { return m_x; }
2909 private:
2910  typename tuple_type<A11>::reference m_x;
2911 };
2912 
2913 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2914 struct tuple_element<tuple<A0, 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> {
2916  typename tuple_type<A12>::reference get() { return m_x; }
2917  typename tuple_type<A12>::const_reference get() const { return m_x; }
2918 private:
2919  typename tuple_type<A12>::reference m_x;
2920 };
2921 
2922 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2923 struct tuple_element<tuple<A0, 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> {
2925  typename tuple_type<A13>::reference get() { return m_x; }
2926  typename tuple_type<A13>::const_reference get() const { return m_x; }
2927 private:
2928  typename tuple_type<A13>::reference m_x;
2929 };
2930 
2931 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2932 struct tuple_element<tuple<A0, 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> {
2934  typename tuple_type<A14>::reference get() { return m_x; }
2935  typename tuple_type<A14>::const_reference get() const { return m_x; }
2936 private:
2937  typename tuple_type<A14>::reference m_x;
2938 };
2939 
2940 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2941 struct tuple_element<tuple<A0, 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> {
2943  typename tuple_type<A15>::reference get() { return m_x; }
2944  typename tuple_type<A15>::const_reference get() const { return m_x; }
2945 private:
2946  typename tuple_type<A15>::reference m_x;
2947 };
2948 
2949 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2950 struct tuple_element<tuple<A0, 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> {
2952  typename tuple_type<A16>::reference get() { return m_x; }
2953  typename tuple_type<A16>::const_reference get() const { return m_x; }
2954 private:
2955  typename tuple_type<A16>::reference m_x;
2956 };
2957 
2958 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2959 struct tuple_element<tuple<A0, 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> {
2961  typename tuple_type<A17>::reference get() { return m_x; }
2962  typename tuple_type<A17>::const_reference get() const { return m_x; }
2963 private:
2964  typename tuple_type<A17>::reference m_x;
2965 };
2966 
2967 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2968 struct tuple_element<tuple<A0, 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> {
2970  typename tuple_type<A18>::reference get() { return m_x; }
2971  typename tuple_type<A18>::const_reference get() const { return m_x; }
2972 private:
2973  typename tuple_type<A18>::reference m_x;
2974 };
2975 
2976 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2977 struct tuple_element<tuple<A0, 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> {
2979  typename tuple_type<A19>::reference get() { return m_x; }
2980  typename tuple_type<A19>::const_reference get() const { return m_x; }
2981 private:
2982  typename tuple_type<A19>::reference m_x;
2983 };
2984 
2985 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2986 struct tuple_element<tuple<A0, 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> {
2988  typename tuple_type<A20>::reference get() { return m_x; }
2989  typename tuple_type<A20>::const_reference get() const { return m_x; }
2990 private:
2991  typename tuple_type<A20>::reference m_x;
2992 };
2993 
2994 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
2995 struct tuple_element<tuple<A0, 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> {
2997  typename tuple_type<A21>::reference get() { return m_x; }
2998  typename tuple_type<A21>::const_reference get() const { return m_x; }
2999 private:
3000  typename tuple_type<A21>::reference m_x;
3001 };
3002 
3003 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
3004 struct tuple_element<tuple<A0, 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> {
3006  typename tuple_type<A22>::reference get() { return m_x; }
3007  typename tuple_type<A22>::const_reference get() const { return m_x; }
3008 private:
3009  typename tuple_type<A22>::reference m_x;
3010 };
3011 
3012 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
3013 struct tuple_element<tuple<A0, 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> {
3015  typename tuple_type<A23>::reference get() { return m_x; }
3016  typename tuple_type<A23>::const_reference get() const { return m_x; }
3017 private:
3018  typename tuple_type<A23>::reference m_x;
3019 };
3020 
3021 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
3022 struct tuple_element<tuple<A0, 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> {
3024  typename tuple_type<A24>::reference get() { return m_x; }
3025  typename tuple_type<A24>::const_reference get() const { return m_x; }
3026 private:
3027  typename tuple_type<A24>::reference m_x;
3028 };
3029 
3030 
3031 
3032 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3033 struct tuple_element<tuple<A0, A1, 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> {
3035  typename tuple_type<A0>::reference get() { return m_x; }
3036  typename tuple_type<A0>::const_reference get() const { return m_x; }
3037 private:
3038  typename tuple_type<A0>::reference m_x;
3039 };
3040 
3041 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3042 struct tuple_element<tuple<A0, A1, 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> {
3044  typename tuple_type<A1>::reference get() { return m_x; }
3045  typename tuple_type<A1>::const_reference get() const { return m_x; }
3046 private:
3047  typename tuple_type<A1>::reference m_x;
3048 };
3049 
3050 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3051 struct tuple_element<tuple<A0, A1, 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> {
3053  typename tuple_type<A2>::reference get() { return m_x; }
3054  typename tuple_type<A2>::const_reference get() const { return m_x; }
3055 private:
3056  typename tuple_type<A2>::reference m_x;
3057 };
3058 
3059 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3060 struct tuple_element<tuple<A0, A1, 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> {
3062  typename tuple_type<A3>::reference get() { return m_x; }
3063  typename tuple_type<A3>::const_reference get() const { return m_x; }
3064 private:
3065  typename tuple_type<A3>::reference m_x;
3066 };
3067 
3068 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3069 struct tuple_element<tuple<A0, A1, 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> {
3071  typename tuple_type<A4>::reference get() { return m_x; }
3072  typename tuple_type<A4>::const_reference get() const { return m_x; }
3073 private:
3074  typename tuple_type<A4>::reference m_x;
3075 };
3076 
3077 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3078 struct tuple_element<tuple<A0, A1, 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> {
3080  typename tuple_type<A5>::reference get() { return m_x; }
3081  typename tuple_type<A5>::const_reference get() const { return m_x; }
3082 private:
3083  typename tuple_type<A5>::reference m_x;
3084 };
3085 
3086 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3087 struct tuple_element<tuple<A0, A1, 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> {
3089  typename tuple_type<A6>::reference get() { return m_x; }
3090  typename tuple_type<A6>::const_reference get() const { return m_x; }
3091 private:
3092  typename tuple_type<A6>::reference m_x;
3093 };
3094 
3095 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3096 struct tuple_element<tuple<A0, A1, 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> {
3098  typename tuple_type<A7>::reference get() { return m_x; }
3099  typename tuple_type<A7>::const_reference get() const { return m_x; }
3100 private:
3101  typename tuple_type<A7>::reference m_x;
3102 };
3103 
3104 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3105 struct tuple_element<tuple<A0, A1, 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> {
3107  typename tuple_type<A8>::reference get() { return m_x; }
3108  typename tuple_type<A8>::const_reference get() const { return m_x; }
3109 private:
3110  typename tuple_type<A8>::reference m_x;
3111 };
3112 
3113 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3114 struct tuple_element<tuple<A0, A1, 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> {
3116  typename tuple_type<A9>::reference get() { return m_x; }
3117  typename tuple_type<A9>::const_reference get() const { return m_x; }
3118 private:
3119  typename tuple_type<A9>::reference m_x;
3120 };
3121 
3122 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3123 struct tuple_element<tuple<A0, A1, 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> {
3125  typename tuple_type<A10>::reference get() { return m_x; }
3126  typename tuple_type<A10>::const_reference get() const { return m_x; }
3127 private:
3128  typename tuple_type<A10>::reference m_x;
3129 };
3130 
3131 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3132 struct tuple_element<tuple<A0, A1, 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> {
3134  typename tuple_type<A11>::reference get() { return m_x; }
3135  typename tuple_type<A11>::const_reference get() const { return m_x; }
3136 private:
3137  typename tuple_type<A11>::reference m_x;
3138 };
3139 
3140 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3141 struct tuple_element<tuple<A0, A1, 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> {
3143  typename tuple_type<A12>::reference get() { return m_x; }
3144  typename tuple_type<A12>::const_reference get() const { return m_x; }
3145 private:
3146  typename tuple_type<A12>::reference m_x;
3147 };
3148 
3149 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3150 struct tuple_element<tuple<A0, A1, 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> {
3152  typename tuple_type<A13>::reference get() { return m_x; }
3153  typename tuple_type<A13>::const_reference get() const { return m_x; }
3154 private:
3155  typename tuple_type<A13>::reference m_x;
3156 };
3157 
3158 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3159 struct tuple_element<tuple<A0, A1, 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> {
3161  typename tuple_type<A14>::reference get() { return m_x; }
3162  typename tuple_type<A14>::const_reference get() const { return m_x; }
3163 private:
3164  typename tuple_type<A14>::reference m_x;
3165 };
3166 
3167 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3168 struct tuple_element<tuple<A0, A1, 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> {
3170  typename tuple_type<A15>::reference get() { return m_x; }
3171  typename tuple_type<A15>::const_reference get() const { return m_x; }
3172 private:
3173  typename tuple_type<A15>::reference m_x;
3174 };
3175 
3176 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3177 struct tuple_element<tuple<A0, A1, 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> {
3179  typename tuple_type<A16>::reference get() { return m_x; }
3180  typename tuple_type<A16>::const_reference get() const { return m_x; }
3181 private:
3182  typename tuple_type<A16>::reference m_x;
3183 };
3184 
3185 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3186 struct tuple_element<tuple<A0, A1, 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> {
3188  typename tuple_type<A17>::reference get() { return m_x; }
3189  typename tuple_type<A17>::const_reference get() const { return m_x; }
3190 private:
3191  typename tuple_type<A17>::reference m_x;
3192 };
3193 
3194 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3195 struct tuple_element<tuple<A0, A1, 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> {
3197  typename tuple_type<A18>::reference get() { return m_x; }
3198  typename tuple_type<A18>::const_reference get() const { return m_x; }
3199 private:
3200  typename tuple_type<A18>::reference m_x;
3201 };
3202 
3203 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3204 struct tuple_element<tuple<A0, A1, 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> {
3206  typename tuple_type<A19>::reference get() { return m_x; }
3207  typename tuple_type<A19>::const_reference get() const { return m_x; }
3208 private:
3209  typename tuple_type<A19>::reference m_x;
3210 };
3211 
3212 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3213 struct tuple_element<tuple<A0, A1, 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> {
3215  typename tuple_type<A20>::reference get() { return m_x; }
3216  typename tuple_type<A20>::const_reference get() const { return m_x; }
3217 private:
3218  typename tuple_type<A20>::reference m_x;
3219 };
3220 
3221 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3222 struct tuple_element<tuple<A0, A1, 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> {
3224  typename tuple_type<A21>::reference get() { return m_x; }
3225  typename tuple_type<A21>::const_reference get() const { return m_x; }
3226 private:
3227  typename tuple_type<A21>::reference m_x;
3228 };
3229 
3230 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3231 struct tuple_element<tuple<A0, A1, 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> {
3233  typename tuple_type<A22>::reference get() { return m_x; }
3234  typename tuple_type<A22>::const_reference get() const { return m_x; }
3235 private:
3236  typename tuple_type<A22>::reference m_x;
3237 };
3238 
3239 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3240 struct tuple_element<tuple<A0, A1, 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> {
3242  typename tuple_type<A23>::reference get() { return m_x; }
3243  typename tuple_type<A23>::const_reference get() const { return m_x; }
3244 private:
3245  typename tuple_type<A23>::reference m_x;
3246 };
3247 
3248 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3249 struct tuple_element<tuple<A0, A1, 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> {
3251  typename tuple_type<A24>::reference get() { return m_x; }
3252  typename tuple_type<A24>::const_reference get() const { return m_x; }
3253 private:
3254  typename tuple_type<A24>::reference m_x;
3255 };
3256 
3257 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
3258 struct tuple_element<tuple<A0, A1, 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> {
3260  typename tuple_type<A25>::reference get() { return m_x; }
3261  typename tuple_type<A25>::const_reference get() const { return m_x; }
3262 private:
3263  typename tuple_type<A25>::reference m_x;
3264 };
3265 
3266 
3267 
3268 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3269 struct tuple_element<tuple<A0, A1, A2, 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> {
3271  typename tuple_type<A0>::reference get() { return m_x; }
3272  typename tuple_type<A0>::const_reference get() const { return m_x; }
3273 private:
3274  typename tuple_type<A0>::reference m_x;
3275 };
3276 
3277 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3278 struct tuple_element<tuple<A0, A1, A2, 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> {
3280  typename tuple_type<A1>::reference get() { return m_x; }
3281  typename tuple_type<A1>::const_reference get() const { return m_x; }
3282 private:
3283  typename tuple_type<A1>::reference m_x;
3284 };
3285 
3286 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3287 struct tuple_element<tuple<A0, A1, A2, 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> {
3289  typename tuple_type<A2>::reference get() { return m_x; }
3290  typename tuple_type<A2>::const_reference get() const { return m_x; }
3291 private:
3292  typename tuple_type<A2>::reference m_x;
3293 };
3294 
3295 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3296 struct tuple_element<tuple<A0, A1, A2, 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> {
3298  typename tuple_type<A3>::reference get() { return m_x; }
3299  typename tuple_type<A3>::const_reference get() const { return m_x; }
3300 private:
3301  typename tuple_type<A3>::reference m_x;
3302 };
3303 
3304 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3305 struct tuple_element<tuple<A0, A1, A2, 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> {
3307  typename tuple_type<A4>::reference get() { return m_x; }
3308  typename tuple_type<A4>::const_reference get() const { return m_x; }
3309 private:
3310  typename tuple_type<A4>::reference m_x;
3311 };
3312 
3313 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3314 struct tuple_element<tuple<A0, A1, A2, 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> {
3316  typename tuple_type<A5>::reference get() { return m_x; }
3317  typename tuple_type<A5>::const_reference get() const { return m_x; }
3318 private:
3319  typename tuple_type<A5>::reference m_x;
3320 };
3321 
3322 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3323 struct tuple_element<tuple<A0, A1, A2, 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> {
3325  typename tuple_type<A6>::reference get() { return m_x; }
3326  typename tuple_type<A6>::const_reference get() const { return m_x; }
3327 private:
3328  typename tuple_type<A6>::reference m_x;
3329 };
3330 
3331 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3332 struct tuple_element<tuple<A0, A1, A2, 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> {
3334  typename tuple_type<A7>::reference get() { return m_x; }
3335  typename tuple_type<A7>::const_reference get() const { return m_x; }
3336 private:
3337  typename tuple_type<A7>::reference m_x;
3338 };
3339 
3340 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3341 struct tuple_element<tuple<A0, A1, A2, 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> {
3343  typename tuple_type<A8>::reference get() { return m_x; }
3344  typename tuple_type<A8>::const_reference get() const { return m_x; }
3345 private:
3346  typename tuple_type<A8>::reference m_x;
3347 };
3348 
3349 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3350 struct tuple_element<tuple<A0, A1, A2, 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> {
3352  typename tuple_type<A9>::reference get() { return m_x; }
3353  typename tuple_type<A9>::const_reference get() const { return m_x; }
3354 private:
3355  typename tuple_type<A9>::reference m_x;
3356 };
3357 
3358 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3359 struct tuple_element<tuple<A0, A1, A2, 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> {
3361  typename tuple_type<A10>::reference get() { return m_x; }
3362  typename tuple_type<A10>::const_reference get() const { return m_x; }
3363 private:
3364  typename tuple_type<A10>::reference m_x;
3365 };
3366 
3367 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3368 struct tuple_element<tuple<A0, A1, A2, 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> {
3370  typename tuple_type<A11>::reference get() { return m_x; }
3371  typename tuple_type<A11>::const_reference get() const { return m_x; }
3372 private:
3373  typename tuple_type<A11>::reference m_x;
3374 };
3375 
3376 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3377 struct tuple_element<tuple<A0, A1, A2, 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> {
3379  typename tuple_type<A12>::reference get() { return m_x; }
3380  typename tuple_type<A12>::const_reference get() const { return m_x; }
3381 private:
3382  typename tuple_type<A12>::reference m_x;
3383 };
3384 
3385 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3386 struct tuple_element<tuple<A0, A1, A2, 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> {
3388  typename tuple_type<A13>::reference get() { return m_x; }
3389  typename tuple_type<A13>::const_reference get() const { return m_x; }
3390 private:
3391  typename tuple_type<A13>::reference m_x;
3392 };
3393 
3394 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3395 struct tuple_element<tuple<A0, A1, A2, 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> {
3397  typename tuple_type<A14>::reference get() { return m_x; }
3398  typename tuple_type<A14>::const_reference get() const { return m_x; }
3399 private:
3400  typename tuple_type<A14>::reference m_x;
3401 };
3402 
3403 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3404 struct tuple_element<tuple<A0, A1, A2, 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> {
3406  typename tuple_type<A15>::reference get() { return m_x; }
3407  typename tuple_type<A15>::const_reference get() const { return m_x; }
3408 private:
3409  typename tuple_type<A15>::reference m_x;
3410 };
3411 
3412 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3413 struct tuple_element<tuple<A0, A1, A2, 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> {
3415  typename tuple_type<A16>::reference get() { return m_x; }
3416  typename tuple_type<A16>::const_reference get() const { return m_x; }
3417 private:
3418  typename tuple_type<A16>::reference m_x;
3419 };
3420 
3421 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3422 struct tuple_element<tuple<A0, A1, A2, 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> {
3424  typename tuple_type<A17>::reference get() { return m_x; }
3425  typename tuple_type<A17>::const_reference get() const { return m_x; }
3426 private:
3427  typename tuple_type<A17>::reference m_x;
3428 };
3429 
3430 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3431 struct tuple_element<tuple<A0, A1, A2, 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> {
3433  typename tuple_type<A18>::reference get() { return m_x; }
3434  typename tuple_type<A18>::const_reference get() const { return m_x; }
3435 private:
3436  typename tuple_type<A18>::reference m_x;
3437 };
3438 
3439 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3440 struct tuple_element<tuple<A0, A1, A2, 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> {
3442  typename tuple_type<A19>::reference get() { return m_x; }
3443  typename tuple_type<A19>::const_reference get() const { return m_x; }
3444 private:
3445  typename tuple_type<A19>::reference m_x;
3446 };
3447 
3448 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3449 struct tuple_element<tuple<A0, A1, A2, 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> {
3451  typename tuple_type<A20>::reference get() { return m_x; }
3452  typename tuple_type<A20>::const_reference get() const { return m_x; }
3453 private:
3454  typename tuple_type<A20>::reference m_x;
3455 };
3456 
3457 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3458 struct tuple_element<tuple<A0, A1, A2, 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> {
3460  typename tuple_type<A21>::reference get() { return m_x; }
3461  typename tuple_type<A21>::const_reference get() const { return m_x; }
3462 private:
3463  typename tuple_type<A21>::reference m_x;
3464 };
3465 
3466 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3467 struct tuple_element<tuple<A0, A1, A2, 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> {
3469  typename tuple_type<A22>::reference get() { return m_x; }
3470  typename tuple_type<A22>::const_reference get() const { return m_x; }
3471 private:
3472  typename tuple_type<A22>::reference m_x;
3473 };
3474 
3475 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3476 struct tuple_element<tuple<A0, A1, A2, 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> {
3478  typename tuple_type<A23>::reference get() { return m_x; }
3479  typename tuple_type<A23>::const_reference get() const { return m_x; }
3480 private:
3481  typename tuple_type<A23>::reference m_x;
3482 };
3483 
3484 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3485 struct tuple_element<tuple<A0, A1, A2, 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> {
3487  typename tuple_type<A24>::reference get() { return m_x; }
3488  typename tuple_type<A24>::const_reference get() const { return m_x; }
3489 private:
3490  typename tuple_type<A24>::reference m_x;
3491 };
3492 
3493 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3494 struct tuple_element<tuple<A0, A1, A2, 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> {
3496  typename tuple_type<A25>::reference get() { return m_x; }
3497  typename tuple_type<A25>::const_reference get() const { return m_x; }
3498 private:
3499  typename tuple_type<A25>::reference m_x;
3500 };
3501 
3502 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
3503 struct tuple_element<tuple<A0, A1, A2, 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> {
3505  typename tuple_type<A26>::reference get() { return m_x; }
3506  typename tuple_type<A26>::const_reference get() const { return m_x; }
3507 private:
3508  typename tuple_type<A26>::reference m_x;
3509 };
3510 
3511 
3512 
3513 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3514 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3516  typename tuple_type<A0>::reference get() { return m_x; }
3517  typename tuple_type<A0>::const_reference get() const { return m_x; }
3518 private:
3519  typename tuple_type<A0>::reference m_x;
3520 };
3521 
3522 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3523 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3525  typename tuple_type<A1>::reference get() { return m_x; }
3526  typename tuple_type<A1>::const_reference get() const { return m_x; }
3527 private:
3528  typename tuple_type<A1>::reference m_x;
3529 };
3530 
3531 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3532 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3534  typename tuple_type<A2>::reference get() { return m_x; }
3535  typename tuple_type<A2>::const_reference get() const { return m_x; }
3536 private:
3537  typename tuple_type<A2>::reference m_x;
3538 };
3539 
3540 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3541 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3543  typename tuple_type<A3>::reference get() { return m_x; }
3544  typename tuple_type<A3>::const_reference get() const { return m_x; }
3545 private:
3546  typename tuple_type<A3>::reference m_x;
3547 };
3548 
3549 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3550 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3552  typename tuple_type<A4>::reference get() { return m_x; }
3553  typename tuple_type<A4>::const_reference get() const { return m_x; }
3554 private:
3555  typename tuple_type<A4>::reference m_x;
3556 };
3557 
3558 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3559 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3561  typename tuple_type<A5>::reference get() { return m_x; }
3562  typename tuple_type<A5>::const_reference get() const { return m_x; }
3563 private:
3564  typename tuple_type<A5>::reference m_x;
3565 };
3566 
3567 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3568 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3570  typename tuple_type<A6>::reference get() { return m_x; }
3571  typename tuple_type<A6>::const_reference get() const { return m_x; }
3572 private:
3573  typename tuple_type<A6>::reference m_x;
3574 };
3575 
3576 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3577 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3579  typename tuple_type<A7>::reference get() { return m_x; }
3580  typename tuple_type<A7>::const_reference get() const { return m_x; }
3581 private:
3582  typename tuple_type<A7>::reference m_x;
3583 };
3584 
3585 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3586 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3588  typename tuple_type<A8>::reference get() { return m_x; }
3589  typename tuple_type<A8>::const_reference get() const { return m_x; }
3590 private:
3591  typename tuple_type<A8>::reference m_x;
3592 };
3593 
3594 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3595 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3597  typename tuple_type<A9>::reference get() { return m_x; }
3598  typename tuple_type<A9>::const_reference get() const { return m_x; }
3599 private:
3600  typename tuple_type<A9>::reference m_x;
3601 };
3602 
3603 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3604 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3606  typename tuple_type<A10>::reference get() { return m_x; }
3607  typename tuple_type<A10>::const_reference get() const { return m_x; }
3608 private:
3609  typename tuple_type<A10>::reference m_x;
3610 };
3611 
3612 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3613 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3615  typename tuple_type<A11>::reference get() { return m_x; }
3616  typename tuple_type<A11>::const_reference get() const { return m_x; }
3617 private:
3618  typename tuple_type<A11>::reference m_x;
3619 };
3620 
3621 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3622 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3624  typename tuple_type<A12>::reference get() { return m_x; }
3625  typename tuple_type<A12>::const_reference get() const { return m_x; }
3626 private:
3627  typename tuple_type<A12>::reference m_x;
3628 };
3629 
3630 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3631 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3633  typename tuple_type<A13>::reference get() { return m_x; }
3634  typename tuple_type<A13>::const_reference get() const { return m_x; }
3635 private:
3636  typename tuple_type<A13>::reference m_x;
3637 };
3638 
3639 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3640 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3642  typename tuple_type<A14>::reference get() { return m_x; }
3643  typename tuple_type<A14>::const_reference get() const { return m_x; }
3644 private:
3645  typename tuple_type<A14>::reference m_x;
3646 };
3647 
3648 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3649 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3651  typename tuple_type<A15>::reference get() { return m_x; }
3652  typename tuple_type<A15>::const_reference get() const { return m_x; }
3653 private:
3654  typename tuple_type<A15>::reference m_x;
3655 };
3656 
3657 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3658 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3660  typename tuple_type<A16>::reference get() { return m_x; }
3661  typename tuple_type<A16>::const_reference get() const { return m_x; }
3662 private:
3663  typename tuple_type<A16>::reference m_x;
3664 };
3665 
3666 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3667 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3669  typename tuple_type<A17>::reference get() { return m_x; }
3670  typename tuple_type<A17>::const_reference get() const { return m_x; }
3671 private:
3672  typename tuple_type<A17>::reference m_x;
3673 };
3674 
3675 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3676 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3678  typename tuple_type<A18>::reference get() { return m_x; }
3679  typename tuple_type<A18>::const_reference get() const { return m_x; }
3680 private:
3681  typename tuple_type<A18>::reference m_x;
3682 };
3683 
3684 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3685 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3687  typename tuple_type<A19>::reference get() { return m_x; }
3688  typename tuple_type<A19>::const_reference get() const { return m_x; }
3689 private:
3690  typename tuple_type<A19>::reference m_x;
3691 };
3692 
3693 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3694 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3696  typename tuple_type<A20>::reference get() { return m_x; }
3697  typename tuple_type<A20>::const_reference get() const { return m_x; }
3698 private:
3699  typename tuple_type<A20>::reference m_x;
3700 };
3701 
3702 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3703 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3705  typename tuple_type<A21>::reference get() { return m_x; }
3706  typename tuple_type<A21>::const_reference get() const { return m_x; }
3707 private:
3708  typename tuple_type<A21>::reference m_x;
3709 };
3710 
3711 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3712 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3714  typename tuple_type<A22>::reference get() { return m_x; }
3715  typename tuple_type<A22>::const_reference get() const { return m_x; }
3716 private:
3717  typename tuple_type<A22>::reference m_x;
3718 };
3719 
3720 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3721 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3723  typename tuple_type<A23>::reference get() { return m_x; }
3724  typename tuple_type<A23>::const_reference get() const { return m_x; }
3725 private:
3726  typename tuple_type<A23>::reference m_x;
3727 };
3728 
3729 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3730 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3732  typename tuple_type<A24>::reference get() { return m_x; }
3733  typename tuple_type<A24>::const_reference get() const { return m_x; }
3734 private:
3735  typename tuple_type<A24>::reference m_x;
3736 };
3737 
3738 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3739 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3741  typename tuple_type<A25>::reference get() { return m_x; }
3742  typename tuple_type<A25>::const_reference get() const { return m_x; }
3743 private:
3744  typename tuple_type<A25>::reference m_x;
3745 };
3746 
3747 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3748 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3750  typename tuple_type<A26>::reference get() { return m_x; }
3751  typename tuple_type<A26>::const_reference get() const { return m_x; }
3752 private:
3753  typename tuple_type<A26>::reference m_x;
3754 };
3755 
3756 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
3757 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
3759  typename tuple_type<A27>::reference get() { return m_x; }
3760  typename tuple_type<A27>::const_reference get() const { return m_x; }
3761 private:
3762  typename tuple_type<A27>::reference m_x;
3763 };
3764 
3765 
3766 
3767 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3768 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3770  typename tuple_type<A0>::reference get() { return m_x; }
3771  typename tuple_type<A0>::const_reference get() const { return m_x; }
3772 private:
3773  typename tuple_type<A0>::reference m_x;
3774 };
3775 
3776 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3777 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3779  typename tuple_type<A1>::reference get() { return m_x; }
3780  typename tuple_type<A1>::const_reference get() const { return m_x; }
3781 private:
3782  typename tuple_type<A1>::reference m_x;
3783 };
3784 
3785 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3786 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3788  typename tuple_type<A2>::reference get() { return m_x; }
3789  typename tuple_type<A2>::const_reference get() const { return m_x; }
3790 private:
3791  typename tuple_type<A2>::reference m_x;
3792 };
3793 
3794 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3795 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3797  typename tuple_type<A3>::reference get() { return m_x; }
3798  typename tuple_type<A3>::const_reference get() const { return m_x; }
3799 private:
3800  typename tuple_type<A3>::reference m_x;
3801 };
3802 
3803 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3804 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3806  typename tuple_type<A4>::reference get() { return m_x; }
3807  typename tuple_type<A4>::const_reference get() const { return m_x; }
3808 private:
3809  typename tuple_type<A4>::reference m_x;
3810 };
3811 
3812 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3813 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3815  typename tuple_type<A5>::reference get() { return m_x; }
3816  typename tuple_type<A5>::const_reference get() const { return m_x; }
3817 private:
3818  typename tuple_type<A5>::reference m_x;
3819 };
3820 
3821 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3822 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3824  typename tuple_type<A6>::reference get() { return m_x; }
3825  typename tuple_type<A6>::const_reference get() const { return m_x; }
3826 private:
3827  typename tuple_type<A6>::reference m_x;
3828 };
3829 
3830 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3831 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3833  typename tuple_type<A7>::reference get() { return m_x; }
3834  typename tuple_type<A7>::const_reference get() const { return m_x; }
3835 private:
3836  typename tuple_type<A7>::reference m_x;
3837 };
3838 
3839 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3840 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3842  typename tuple_type<A8>::reference get() { return m_x; }
3843  typename tuple_type<A8>::const_reference get() const { return m_x; }
3844 private:
3845  typename tuple_type<A8>::reference m_x;
3846 };
3847 
3848 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3849 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3851  typename tuple_type<A9>::reference get() { return m_x; }
3852  typename tuple_type<A9>::const_reference get() const { return m_x; }
3853 private:
3854  typename tuple_type<A9>::reference m_x;
3855 };
3856 
3857 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3858 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3860  typename tuple_type<A10>::reference get() { return m_x; }
3861  typename tuple_type<A10>::const_reference get() const { return m_x; }
3862 private:
3863  typename tuple_type<A10>::reference m_x;
3864 };
3865 
3866 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3867 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3869  typename tuple_type<A11>::reference get() { return m_x; }
3870  typename tuple_type<A11>::const_reference get() const { return m_x; }
3871 private:
3872  typename tuple_type<A11>::reference m_x;
3873 };
3874 
3875 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3876 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3878  typename tuple_type<A12>::reference get() { return m_x; }
3879  typename tuple_type<A12>::const_reference get() const { return m_x; }
3880 private:
3881  typename tuple_type<A12>::reference m_x;
3882 };
3883 
3884 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3885 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3887  typename tuple_type<A13>::reference get() { return m_x; }
3888  typename tuple_type<A13>::const_reference get() const { return m_x; }
3889 private:
3890  typename tuple_type<A13>::reference m_x;
3891 };
3892 
3893 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3894 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3896  typename tuple_type<A14>::reference get() { return m_x; }
3897  typename tuple_type<A14>::const_reference get() const { return m_x; }
3898 private:
3899  typename tuple_type<A14>::reference m_x;
3900 };
3901 
3902 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3903 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3905  typename tuple_type<A15>::reference get() { return m_x; }
3906  typename tuple_type<A15>::const_reference get() const { return m_x; }
3907 private:
3908  typename tuple_type<A15>::reference m_x;
3909 };
3910 
3911 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3912 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3914  typename tuple_type<A16>::reference get() { return m_x; }
3915  typename tuple_type<A16>::const_reference get() const { return m_x; }
3916 private:
3917  typename tuple_type<A16>::reference m_x;
3918 };
3919 
3920 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3921 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3923  typename tuple_type<A17>::reference get() { return m_x; }
3924  typename tuple_type<A17>::const_reference get() const { return m_x; }
3925 private:
3926  typename tuple_type<A17>::reference m_x;
3927 };
3928 
3929 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3930 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3932  typename tuple_type<A18>::reference get() { return m_x; }
3933  typename tuple_type<A18>::const_reference get() const { return m_x; }
3934 private:
3935  typename tuple_type<A18>::reference m_x;
3936 };
3937 
3938 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3939 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3941  typename tuple_type<A19>::reference get() { return m_x; }
3942  typename tuple_type<A19>::const_reference get() const { return m_x; }
3943 private:
3944  typename tuple_type<A19>::reference m_x;
3945 };
3946 
3947 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3948 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3950  typename tuple_type<A20>::reference get() { return m_x; }
3951  typename tuple_type<A20>::const_reference get() const { return m_x; }
3952 private:
3953  typename tuple_type<A20>::reference m_x;
3954 };
3955 
3956 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3957 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3959  typename tuple_type<A21>::reference get() { return m_x; }
3960  typename tuple_type<A21>::const_reference get() const { return m_x; }
3961 private:
3962  typename tuple_type<A21>::reference m_x;
3963 };
3964 
3965 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3966 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3968  typename tuple_type<A22>::reference get() { return m_x; }
3969  typename tuple_type<A22>::const_reference get() const { return m_x; }
3970 private:
3971  typename tuple_type<A22>::reference m_x;
3972 };
3973 
3974 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3975 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3977  typename tuple_type<A23>::reference get() { return m_x; }
3978  typename tuple_type<A23>::const_reference get() const { return m_x; }
3979 private:
3980  typename tuple_type<A23>::reference m_x;
3981 };
3982 
3983 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3984 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3986  typename tuple_type<A24>::reference get() { return m_x; }
3987  typename tuple_type<A24>::const_reference get() const { return m_x; }
3988 private:
3989  typename tuple_type<A24>::reference m_x;
3990 };
3991 
3992 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
3993 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
3995  typename tuple_type<A25>::reference get() { return m_x; }
3996  typename tuple_type<A25>::const_reference get() const { return m_x; }
3997 private:
3998  typename tuple_type<A25>::reference m_x;
3999 };
4000 
4001 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
4002 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4004  typename tuple_type<A26>::reference get() { return m_x; }
4005  typename tuple_type<A26>::const_reference get() const { return m_x; }
4006 private:
4007  typename tuple_type<A26>::reference m_x;
4008 };
4009 
4010 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
4011 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4013  typename tuple_type<A27>::reference get() { return m_x; }
4014  typename tuple_type<A27>::const_reference get() const { return m_x; }
4015 private:
4016  typename tuple_type<A27>::reference m_x;
4017 };
4018 
4019 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
4020 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4022  typename tuple_type<A28>::reference get() { return m_x; }
4023  typename tuple_type<A28>::const_reference get() const { return m_x; }
4024 private:
4025  typename tuple_type<A28>::reference m_x;
4026 };
4027 
4028 
4029 
4030 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4031 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4033  typename tuple_type<A0>::reference get() { return m_x; }
4034  typename tuple_type<A0>::const_reference get() const { return m_x; }
4035 private:
4036  typename tuple_type<A0>::reference m_x;
4037 };
4038 
4039 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4040 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4042  typename tuple_type<A1>::reference get() { return m_x; }
4043  typename tuple_type<A1>::const_reference get() const { return m_x; }
4044 private:
4045  typename tuple_type<A1>::reference m_x;
4046 };
4047 
4048 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4049 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4051  typename tuple_type<A2>::reference get() { return m_x; }
4052  typename tuple_type<A2>::const_reference get() const { return m_x; }
4053 private:
4054  typename tuple_type<A2>::reference m_x;
4055 };
4056 
4057 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4058 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4060  typename tuple_type<A3>::reference get() { return m_x; }
4061  typename tuple_type<A3>::const_reference get() const { return m_x; }
4062 private:
4063  typename tuple_type<A3>::reference m_x;
4064 };
4065 
4066 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4067 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4069  typename tuple_type<A4>::reference get() { return m_x; }
4070  typename tuple_type<A4>::const_reference get() const { return m_x; }
4071 private:
4072  typename tuple_type<A4>::reference m_x;
4073 };
4074 
4075 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4076 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4078  typename tuple_type<A5>::reference get() { return m_x; }
4079  typename tuple_type<A5>::const_reference get() const { return m_x; }
4080 private:
4081  typename tuple_type<A5>::reference m_x;
4082 };
4083 
4084 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4085 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4087  typename tuple_type<A6>::reference get() { return m_x; }
4088  typename tuple_type<A6>::const_reference get() const { return m_x; }
4089 private:
4090  typename tuple_type<A6>::reference m_x;
4091 };
4092 
4093 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4094 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4096  typename tuple_type<A7>::reference get() { return m_x; }
4097  typename tuple_type<A7>::const_reference get() const { return m_x; }
4098 private:
4099  typename tuple_type<A7>::reference m_x;
4100 };
4101 
4102 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4103 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4105  typename tuple_type<A8>::reference get() { return m_x; }
4106  typename tuple_type<A8>::const_reference get() const { return m_x; }
4107 private:
4108  typename tuple_type<A8>::reference m_x;
4109 };
4110 
4111 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4112 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4114  typename tuple_type<A9>::reference get() { return m_x; }
4115  typename tuple_type<A9>::const_reference get() const { return m_x; }
4116 private:
4117  typename tuple_type<A9>::reference m_x;
4118 };
4119 
4120 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4121 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4123  typename tuple_type<A10>::reference get() { return m_x; }
4124  typename tuple_type<A10>::const_reference get() const { return m_x; }
4125 private:
4126  typename tuple_type<A10>::reference m_x;
4127 };
4128 
4129 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4130 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4132  typename tuple_type<A11>::reference get() { return m_x; }
4133  typename tuple_type<A11>::const_reference get() const { return m_x; }
4134 private:
4135  typename tuple_type<A11>::reference m_x;
4136 };
4137 
4138 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4139 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4141  typename tuple_type<A12>::reference get() { return m_x; }
4142  typename tuple_type<A12>::const_reference get() const { return m_x; }
4143 private:
4144  typename tuple_type<A12>::reference m_x;
4145 };
4146 
4147 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4148 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4150  typename tuple_type<A13>::reference get() { return m_x; }
4151  typename tuple_type<A13>::const_reference get() const { return m_x; }
4152 private:
4153  typename tuple_type<A13>::reference m_x;
4154 };
4155 
4156 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4157 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4159  typename tuple_type<A14>::reference get() { return m_x; }
4160  typename tuple_type<A14>::const_reference get() const { return m_x; }
4161 private:
4162  typename tuple_type<A14>::reference m_x;
4163 };
4164 
4165 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4166 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4168  typename tuple_type<A15>::reference get() { return m_x; }
4169  typename tuple_type<A15>::const_reference get() const { return m_x; }
4170 private:
4171  typename tuple_type<A15>::reference m_x;
4172 };
4173 
4174 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4175 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4177  typename tuple_type<A16>::reference get() { return m_x; }
4178  typename tuple_type<A16>::const_reference get() const { return m_x; }
4179 private:
4180  typename tuple_type<A16>::reference m_x;
4181 };
4182 
4183 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4184 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4186  typename tuple_type<A17>::reference get() { return m_x; }
4187  typename tuple_type<A17>::const_reference get() const { return m_x; }
4188 private:
4189  typename tuple_type<A17>::reference m_x;
4190 };
4191 
4192 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4193 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4195  typename tuple_type<A18>::reference get() { return m_x; }
4196  typename tuple_type<A18>::const_reference get() const { return m_x; }
4197 private:
4198  typename tuple_type<A18>::reference m_x;
4199 };
4200 
4201 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4202 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4204  typename tuple_type<A19>::reference get() { return m_x; }
4205  typename tuple_type<A19>::const_reference get() const { return m_x; }
4206 private:
4207  typename tuple_type<A19>::reference m_x;
4208 };
4209 
4210 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4211 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4213  typename tuple_type<A20>::reference get() { return m_x; }
4214  typename tuple_type<A20>::const_reference get() const { return m_x; }
4215 private:
4216  typename tuple_type<A20>::reference m_x;
4217 };
4218 
4219 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4220 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4222  typename tuple_type<A21>::reference get() { return m_x; }
4223  typename tuple_type<A21>::const_reference get() const { return m_x; }
4224 private:
4225  typename tuple_type<A21>::reference m_x;
4226 };
4227 
4228 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4229 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4231  typename tuple_type<A22>::reference get() { return m_x; }
4232  typename tuple_type<A22>::const_reference get() const { return m_x; }
4233 private:
4234  typename tuple_type<A22>::reference m_x;
4235 };
4236 
4237 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4238 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4240  typename tuple_type<A23>::reference get() { return m_x; }
4241  typename tuple_type<A23>::const_reference get() const { return m_x; }
4242 private:
4243  typename tuple_type<A23>::reference m_x;
4244 };
4245 
4246 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4247 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4249  typename tuple_type<A24>::reference get() { return m_x; }
4250  typename tuple_type<A24>::const_reference get() const { return m_x; }
4251 private:
4252  typename tuple_type<A24>::reference m_x;
4253 };
4254 
4255 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4256 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4258  typename tuple_type<A25>::reference get() { return m_x; }
4259  typename tuple_type<A25>::const_reference get() const { return m_x; }
4260 private:
4261  typename tuple_type<A25>::reference m_x;
4262 };
4263 
4264 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4265 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4267  typename tuple_type<A26>::reference get() { return m_x; }
4268  typename tuple_type<A26>::const_reference get() const { return m_x; }
4269 private:
4270  typename tuple_type<A26>::reference m_x;
4271 };
4272 
4273 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4274 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4276  typename tuple_type<A27>::reference get() { return m_x; }
4277  typename tuple_type<A27>::const_reference get() const { return m_x; }
4278 private:
4279  typename tuple_type<A27>::reference m_x;
4280 };
4281 
4282 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4283 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4285  typename tuple_type<A28>::reference get() { return m_x; }
4286  typename tuple_type<A28>::const_reference get() const { return m_x; }
4287 private:
4288  typename tuple_type<A28>::reference m_x;
4289 };
4290 
4291 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4292 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4294  typename tuple_type<A29>::reference get() { return m_x; }
4295  typename tuple_type<A29>::const_reference get() const { return m_x; }
4296 private:
4297  typename tuple_type<A29>::reference m_x;
4298 };
4299 
4300 
4301 
4302 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4303 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4305  typename tuple_type<A0>::reference get() { return m_x; }
4306  typename tuple_type<A0>::const_reference get() const { return m_x; }
4307 private:
4308  typename tuple_type<A0>::reference m_x;
4309 };
4310 
4311 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4312 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4314  typename tuple_type<A1>::reference get() { return m_x; }
4315  typename tuple_type<A1>::const_reference get() const { return m_x; }
4316 private:
4317  typename tuple_type<A1>::reference m_x;
4318 };
4319 
4320 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4321 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4323  typename tuple_type<A2>::reference get() { return m_x; }
4324  typename tuple_type<A2>::const_reference get() const { return m_x; }
4325 private:
4326  typename tuple_type<A2>::reference m_x;
4327 };
4328 
4329 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4330 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4332  typename tuple_type<A3>::reference get() { return m_x; }
4333  typename tuple_type<A3>::const_reference get() const { return m_x; }
4334 private:
4335  typename tuple_type<A3>::reference m_x;
4336 };
4337 
4338 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4339 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4341  typename tuple_type<A4>::reference get() { return m_x; }
4342  typename tuple_type<A4>::const_reference get() const { return m_x; }
4343 private:
4344  typename tuple_type<A4>::reference m_x;
4345 };
4346 
4347 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4348 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4350  typename tuple_type<A5>::reference get() { return m_x; }
4351  typename tuple_type<A5>::const_reference get() const { return m_x; }
4352 private:
4353  typename tuple_type<A5>::reference m_x;
4354 };
4355 
4356 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4357 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4359  typename tuple_type<A6>::reference get() { return m_x; }
4360  typename tuple_type<A6>::const_reference get() const { return m_x; }
4361 private:
4362  typename tuple_type<A6>::reference m_x;
4363 };
4364 
4365 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4366 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4368  typename tuple_type<A7>::reference get() { return m_x; }
4369  typename tuple_type<A7>::const_reference get() const { return m_x; }
4370 private:
4371  typename tuple_type<A7>::reference m_x;
4372 };
4373 
4374 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4375 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4377  typename tuple_type<A8>::reference get() { return m_x; }
4378  typename tuple_type<A8>::const_reference get() const { return m_x; }
4379 private:
4380  typename tuple_type<A8>::reference m_x;
4381 };
4382 
4383 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4384 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4386  typename tuple_type<A9>::reference get() { return m_x; }
4387  typename tuple_type<A9>::const_reference get() const { return m_x; }
4388 private:
4389  typename tuple_type<A9>::reference m_x;
4390 };
4391 
4392 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4393 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4395  typename tuple_type<A10>::reference get() { return m_x; }
4396  typename tuple_type<A10>::const_reference get() const { return m_x; }
4397 private:
4398  typename tuple_type<A10>::reference m_x;
4399 };
4400 
4401 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4402 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4404  typename tuple_type<A11>::reference get() { return m_x; }
4405  typename tuple_type<A11>::const_reference get() const { return m_x; }
4406 private:
4407  typename tuple_type<A11>::reference m_x;
4408 };
4409 
4410 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4411 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4413  typename tuple_type<A12>::reference get() { return m_x; }
4414  typename tuple_type<A12>::const_reference get() const { return m_x; }
4415 private:
4416  typename tuple_type<A12>::reference m_x;
4417 };
4418 
4419 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4420 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4422  typename tuple_type<A13>::reference get() { return m_x; }
4423  typename tuple_type<A13>::const_reference get() const { return m_x; }
4424 private:
4425  typename tuple_type<A13>::reference m_x;
4426 };
4427 
4428 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4429 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4431  typename tuple_type<A14>::reference get() { return m_x; }
4432  typename tuple_type<A14>::const_reference get() const { return m_x; }
4433 private:
4434  typename tuple_type<A14>::reference m_x;
4435 };
4436 
4437 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4438 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4440  typename tuple_type<A15>::reference get() { return m_x; }
4441  typename tuple_type<A15>::const_reference get() const { return m_x; }
4442 private:
4443  typename tuple_type<A15>::reference m_x;
4444 };
4445 
4446 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4447 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4449  typename tuple_type<A16>::reference get() { return m_x; }
4450  typename tuple_type<A16>::const_reference get() const { return m_x; }
4451 private:
4452  typename tuple_type<A16>::reference m_x;
4453 };
4454 
4455 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4456 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4458  typename tuple_type<A17>::reference get() { return m_x; }
4459  typename tuple_type<A17>::const_reference get() const { return m_x; }
4460 private:
4461  typename tuple_type<A17>::reference m_x;
4462 };
4463 
4464 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4465 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4467  typename tuple_type<A18>::reference get() { return m_x; }
4468  typename tuple_type<A18>::const_reference get() const { return m_x; }
4469 private:
4470  typename tuple_type<A18>::reference m_x;
4471 };
4472 
4473 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4474 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4476  typename tuple_type<A19>::reference get() { return m_x; }
4477  typename tuple_type<A19>::const_reference get() const { return m_x; }
4478 private:
4479  typename tuple_type<A19>::reference m_x;
4480 };
4481 
4482 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4483 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4485  typename tuple_type<A20>::reference get() { return m_x; }
4486  typename tuple_type<A20>::const_reference get() const { return m_x; }
4487 private:
4488  typename tuple_type<A20>::reference m_x;
4489 };
4490 
4491 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4492 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4494  typename tuple_type<A21>::reference get() { return m_x; }
4495  typename tuple_type<A21>::const_reference get() const { return m_x; }
4496 private:
4497  typename tuple_type<A21>::reference m_x;
4498 };
4499 
4500 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4501 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4503  typename tuple_type<A22>::reference get() { return m_x; }
4504  typename tuple_type<A22>::const_reference get() const { return m_x; }
4505 private:
4506  typename tuple_type<A22>::reference m_x;
4507 };
4508 
4509 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4510 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4512  typename tuple_type<A23>::reference get() { return m_x; }
4513  typename tuple_type<A23>::const_reference get() const { return m_x; }
4514 private:
4515  typename tuple_type<A23>::reference m_x;
4516 };
4517 
4518 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4519 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4521  typename tuple_type<A24>::reference get() { return m_x; }
4522  typename tuple_type<A24>::const_reference get() const { return m_x; }
4523 private:
4524  typename tuple_type<A24>::reference m_x;
4525 };
4526 
4527 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4528 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4530  typename tuple_type<A25>::reference get() { return m_x; }
4531  typename tuple_type<A25>::const_reference get() const { return m_x; }
4532 private:
4533  typename tuple_type<A25>::reference m_x;
4534 };
4535 
4536 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4537 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4539  typename tuple_type<A26>::reference get() { return m_x; }
4540  typename tuple_type<A26>::const_reference get() const { return m_x; }
4541 private:
4542  typename tuple_type<A26>::reference m_x;
4543 };
4544 
4545 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4546 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4548  typename tuple_type<A27>::reference get() { return m_x; }
4549  typename tuple_type<A27>::const_reference get() const { return m_x; }
4550 private:
4551  typename tuple_type<A27>::reference m_x;
4552 };
4553 
4554 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4555 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4557  typename tuple_type<A28>::reference get() { return m_x; }
4558  typename tuple_type<A28>::const_reference get() const { return m_x; }
4559 private:
4560  typename tuple_type<A28>::reference m_x;
4561 };
4562 
4563 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4564 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4566  typename tuple_type<A29>::reference get() { return m_x; }
4567  typename tuple_type<A29>::const_reference get() const { return m_x; }
4568 private:
4569  typename tuple_type<A29>::reference m_x;
4570 };
4571 
4572 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4573 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4575  typename tuple_type<A30>::reference get() { return m_x; }
4576  typename tuple_type<A30>::const_reference get() const { return m_x; }
4577 private:
4578  typename tuple_type<A30>::reference m_x;
4579 };
4580 
4581 
4582 
4583 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4584 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4586  typename tuple_type<A0>::reference get() { return m_x; }
4587  typename tuple_type<A0>::const_reference get() const { return m_x; }
4588 private:
4589  typename tuple_type<A0>::reference m_x;
4590 };
4591 
4592 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4593 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4595  typename tuple_type<A1>::reference get() { return m_x; }
4596  typename tuple_type<A1>::const_reference get() const { return m_x; }
4597 private:
4598  typename tuple_type<A1>::reference m_x;
4599 };
4600 
4601 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4602 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4604  typename tuple_type<A2>::reference get() { return m_x; }
4605  typename tuple_type<A2>::const_reference get() const { return m_x; }
4606 private:
4607  typename tuple_type<A2>::reference m_x;
4608 };
4609 
4610 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4611 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4613  typename tuple_type<A3>::reference get() { return m_x; }
4614  typename tuple_type<A3>::const_reference get() const { return m_x; }
4615 private:
4616  typename tuple_type<A3>::reference m_x;
4617 };
4618 
4619 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4620 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4622  typename tuple_type<A4>::reference get() { return m_x; }
4623  typename tuple_type<A4>::const_reference get() const { return m_x; }
4624 private:
4625  typename tuple_type<A4>::reference m_x;
4626 };
4627 
4628 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4629 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4631  typename tuple_type<A5>::reference get() { return m_x; }
4632  typename tuple_type<A5>::const_reference get() const { return m_x; }
4633 private:
4634  typename tuple_type<A5>::reference m_x;
4635 };
4636 
4637 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4638 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4640  typename tuple_type<A6>::reference get() { return m_x; }
4641  typename tuple_type<A6>::const_reference get() const { return m_x; }
4642 private:
4643  typename tuple_type<A6>::reference m_x;
4644 };
4645 
4646 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4647 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4649  typename tuple_type<A7>::reference get() { return m_x; }
4650  typename tuple_type<A7>::const_reference get() const { return m_x; }
4651 private:
4652  typename tuple_type<A7>::reference m_x;
4653 };
4654 
4655 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4656 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4658  typename tuple_type<A8>::reference get() { return m_x; }
4659  typename tuple_type<A8>::const_reference get() const { return m_x; }
4660 private:
4661  typename tuple_type<A8>::reference m_x;
4662 };
4663 
4664 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4665 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4667  typename tuple_type<A9>::reference get() { return m_x; }
4668  typename tuple_type<A9>::const_reference get() const { return m_x; }
4669 private:
4670  typename tuple_type<A9>::reference m_x;
4671 };
4672 
4673 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4674 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4676  typename tuple_type<A10>::reference get() { return m_x; }
4677  typename tuple_type<A10>::const_reference get() const { return m_x; }
4678 private:
4679  typename tuple_type<A10>::reference m_x;
4680 };
4681 
4682 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4683 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4685  typename tuple_type<A11>::reference get() { return m_x; }
4686  typename tuple_type<A11>::const_reference get() const { return m_x; }
4687 private:
4688  typename tuple_type<A11>::reference m_x;
4689 };
4690 
4691 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4692 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4694  typename tuple_type<A12>::reference get() { return m_x; }
4695  typename tuple_type<A12>::const_reference get() const { return m_x; }
4696 private:
4697  typename tuple_type<A12>::reference m_x;
4698 };
4699 
4700 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4701 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4703  typename tuple_type<A13>::reference get() { return m_x; }
4704  typename tuple_type<A13>::const_reference get() const { return m_x; }
4705 private:
4706  typename tuple_type<A13>::reference m_x;
4707 };
4708 
4709 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4710 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4712  typename tuple_type<A14>::reference get() { return m_x; }
4713  typename tuple_type<A14>::const_reference get() const { return m_x; }
4714 private:
4715  typename tuple_type<A14>::reference m_x;
4716 };
4717 
4718 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4719 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4721  typename tuple_type<A15>::reference get() { return m_x; }
4722  typename tuple_type<A15>::const_reference get() const { return m_x; }
4723 private:
4724  typename tuple_type<A15>::reference m_x;
4725 };
4726 
4727 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4728 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4730  typename tuple_type<A16>::reference get() { return m_x; }
4731  typename tuple_type<A16>::const_reference get() const { return m_x; }
4732 private:
4733  typename tuple_type<A16>::reference m_x;
4734 };
4735 
4736 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4737 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4739  typename tuple_type<A17>::reference get() { return m_x; }
4740  typename tuple_type<A17>::const_reference get() const { return m_x; }
4741 private:
4742  typename tuple_type<A17>::reference m_x;
4743 };
4744 
4745 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4746 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4748  typename tuple_type<A18>::reference get() { return m_x; }
4749  typename tuple_type<A18>::const_reference get() const { return m_x; }
4750 private:
4751  typename tuple_type<A18>::reference m_x;
4752 };
4753 
4754 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4755 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4757  typename tuple_type<A19>::reference get() { return m_x; }
4758  typename tuple_type<A19>::const_reference get() const { return m_x; }
4759 private:
4760  typename tuple_type<A19>::reference m_x;
4761 };
4762 
4763 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4764 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4766  typename tuple_type<A20>::reference get() { return m_x; }
4767  typename tuple_type<A20>::const_reference get() const { return m_x; }
4768 private:
4769  typename tuple_type<A20>::reference m_x;
4770 };
4771 
4772 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4773 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4775  typename tuple_type<A21>::reference get() { return m_x; }
4776  typename tuple_type<A21>::const_reference get() const { return m_x; }
4777 private:
4778  typename tuple_type<A21>::reference m_x;
4779 };
4780 
4781 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4782 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4784  typename tuple_type<A22>::reference get() { return m_x; }
4785  typename tuple_type<A22>::const_reference get() const { return m_x; }
4786 private:
4787  typename tuple_type<A22>::reference m_x;
4788 };
4789 
4790 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4791 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4793  typename tuple_type<A23>::reference get() { return m_x; }
4794  typename tuple_type<A23>::const_reference get() const { return m_x; }
4795 private:
4796  typename tuple_type<A23>::reference m_x;
4797 };
4798 
4799 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4800 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4802  typename tuple_type<A24>::reference get() { return m_x; }
4803  typename tuple_type<A24>::const_reference get() const { return m_x; }
4804 private:
4805  typename tuple_type<A24>::reference m_x;
4806 };
4807 
4808 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4809 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4811  typename tuple_type<A25>::reference get() { return m_x; }
4812  typename tuple_type<A25>::const_reference get() const { return m_x; }
4813 private:
4814  typename tuple_type<A25>::reference m_x;
4815 };
4816 
4817 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4818 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4820  typename tuple_type<A26>::reference get() { return m_x; }
4821  typename tuple_type<A26>::const_reference get() const { return m_x; }
4822 private:
4823  typename tuple_type<A26>::reference m_x;
4824 };
4825 
4826 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4827 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4829  typename tuple_type<A27>::reference get() { return m_x; }
4830  typename tuple_type<A27>::const_reference get() const { return m_x; }
4831 private:
4832  typename tuple_type<A27>::reference m_x;
4833 };
4834 
4835 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4836 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4838  typename tuple_type<A28>::reference get() { return m_x; }
4839  typename tuple_type<A28>::const_reference get() const { return m_x; }
4840 private:
4841  typename tuple_type<A28>::reference m_x;
4842 };
4843 
4844 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4845 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4847  typename tuple_type<A29>::reference get() { return m_x; }
4848  typename tuple_type<A29>::const_reference get() const { return m_x; }
4849 private:
4850  typename tuple_type<A29>::reference m_x;
4851 };
4852 
4853 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4854 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4856  typename tuple_type<A30>::reference get() { return m_x; }
4857  typename tuple_type<A30>::const_reference get() const { return m_x; }
4858 private:
4859  typename tuple_type<A30>::reference m_x;
4860 };
4861 
4862 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
4863 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
4865  typename tuple_type<A31>::reference get() { return m_x; }
4866  typename tuple_type<A31>::const_reference get() const { return m_x; }
4867 private:
4868  typename tuple_type<A31>::reference m_x;
4869 };
4870 
4871 
4872 
4873 
4874 
4875 template <typename A0>
4876 struct const_tuple_element<tuple<A0>, 0> : tuple_type<A0> {
4877  const_tuple_element(const tuple<A0>& x) : m_x(x.a0) {}
4878  typename tuple_type<A0>::const_reference get() const { return m_x; }
4879 private:
4880  typename tuple_type<A0>::const_reference m_x;
4881 };
4882 
4883 
4884 
4885 template <typename A0, typename A1>
4886 struct const_tuple_element<tuple<A0, A1>, 0> : tuple_type<A0> {
4887  const_tuple_element(const tuple<A0, A1>& x) : m_x(x.a0) {}
4888  typename tuple_type<A0>::const_reference get() const { return m_x; }
4889 private:
4890  typename tuple_type<A0>::const_reference m_x;
4891 };
4892 
4893 template <typename A0, typename A1>
4894 struct const_tuple_element<tuple<A0, A1>, 1> : tuple_type<A1> {
4895  const_tuple_element(const tuple<A0, A1>& x) : m_x(x.a1) {}
4896  typename tuple_type<A1>::const_reference get() const { return m_x; }
4897 private:
4898  typename tuple_type<A1>::const_reference m_x;
4899 };
4900 
4901 
4902 
4903 template <typename A0, typename A1, typename A2>
4904 struct const_tuple_element<tuple<A0, A1, A2>, 0> : tuple_type<A0> {
4905  const_tuple_element(const tuple<A0, A1, A2>& x) : m_x(x.a0) {}
4906  typename tuple_type<A0>::const_reference get() const { return m_x; }
4907 private:
4908  typename tuple_type<A0>::const_reference m_x;
4909 };
4910 
4911 template <typename A0, typename A1, typename A2>
4912 struct const_tuple_element<tuple<A0, A1, A2>, 1> : tuple_type<A1> {
4913  const_tuple_element(const tuple<A0, A1, A2>& x) : m_x(x.a1) {}
4914  typename tuple_type<A1>::const_reference get() const { return m_x; }
4915 private:
4916  typename tuple_type<A1>::const_reference m_x;
4917 };
4918 
4919 template <typename A0, typename A1, typename A2>
4920 struct const_tuple_element<tuple<A0, A1, A2>, 2> : tuple_type<A2> {
4921  const_tuple_element(const tuple<A0, A1, A2>& x) : m_x(x.a2) {}
4922  typename tuple_type<A2>::const_reference get() const { return m_x; }
4923 private:
4924  typename tuple_type<A2>::const_reference m_x;
4925 };
4926 
4927 
4928 
4929 template <typename A0, typename A1, typename A2, typename A3>
4930 struct const_tuple_element<tuple<A0, A1, A2, A3>, 0> : tuple_type<A0> {
4931  const_tuple_element(const tuple<A0, A1, A2, A3>& x) : m_x(x.a0) {}
4932  typename tuple_type<A0>::const_reference get() const { return m_x; }
4933 private:
4934  typename tuple_type<A0>::const_reference m_x;
4935 };
4936 
4937 template <typename A0, typename A1, typename A2, typename A3>
4938 struct const_tuple_element<tuple<A0, A1, A2, A3>, 1> : tuple_type<A1> {
4939  const_tuple_element(const tuple<A0, A1, A2, A3>& x) : m_x(x.a1) {}
4940  typename tuple_type<A1>::const_reference get() const { return m_x; }
4941 private:
4942  typename tuple_type<A1>::const_reference m_x;
4943 };
4944 
4945 template <typename A0, typename A1, typename A2, typename A3>
4946 struct const_tuple_element<tuple<A0, A1, A2, A3>, 2> : tuple_type<A2> {
4947  const_tuple_element(const tuple<A0, A1, A2, A3>& x) : m_x(x.a2) {}
4948  typename tuple_type<A2>::const_reference get() const { return m_x; }
4949 private:
4950  typename tuple_type<A2>::const_reference m_x;
4951 };
4952 
4953 template <typename A0, typename A1, typename A2, typename A3>
4954 struct const_tuple_element<tuple<A0, A1, A2, A3>, 3> : tuple_type<A3> {
4955  const_tuple_element(const tuple<A0, A1, A2, A3>& x) : m_x(x.a3) {}
4956  typename tuple_type<A3>::const_reference get() const { return m_x; }
4957 private:
4958  typename tuple_type<A3>::const_reference m_x;
4959 };
4960 
4961 
4962 
4963 template <typename A0, typename A1, typename A2, typename A3, typename A4>
4964 struct const_tuple_element<tuple<A0, A1, A2, A3, A4>, 0> : tuple_type<A0> {
4965  const_tuple_element(const tuple<A0, A1, A2, A3, A4>& x) : m_x(x.a0) {}
4966  typename tuple_type<A0>::const_reference get() const { return m_x; }
4967 private:
4968  typename tuple_type<A0>::const_reference m_x;
4969 };
4970 
4971 template <typename A0, typename A1, typename A2, typename A3, typename A4>
4972 struct const_tuple_element<tuple<A0, A1, A2, A3, A4>, 1> : tuple_type<A1> {
4973  const_tuple_element(const tuple<A0, A1, A2, A3, A4>& x) : m_x(x.a1) {}
4974  typename tuple_type<A1>::const_reference get() const { return m_x; }
4975 private:
4976  typename tuple_type<A1>::const_reference m_x;
4977 };
4978 
4979 template <typename A0, typename A1, typename A2, typename A3, typename A4>
4980 struct const_tuple_element<tuple<A0, A1, A2, A3, A4>, 2> : tuple_type<A2> {
4981  const_tuple_element(const tuple<A0, A1, A2, A3, A4>& x) : m_x(x.a2) {}
4982  typename tuple_type<A2>::const_reference get() const { return m_x; }
4983 private:
4984  typename tuple_type<A2>::const_reference m_x;
4985 };
4986 
4987 template <typename A0, typename A1, typename A2, typename A3, typename A4>
4988 struct const_tuple_element<tuple<A0, A1, A2, A3, A4>, 3> : tuple_type<A3> {
4989  const_tuple_element(const tuple<A0, A1, A2, A3, A4>& x) : m_x(x.a3) {}
4990  typename tuple_type<A3>::const_reference get() const { return m_x; }
4991 private:
4992  typename tuple_type<A3>::const_reference m_x;
4993 };
4994 
4995 template <typename A0, typename A1, typename A2, typename A3, typename A4>
4996 struct const_tuple_element<tuple<A0, A1, A2, A3, A4>, 4> : tuple_type<A4> {
4997  const_tuple_element(const tuple<A0, A1, A2, A3, A4>& x) : m_x(x.a4) {}
4998  typename tuple_type<A4>::const_reference get() const { return m_x; }
4999 private:
5000  typename tuple_type<A4>::const_reference m_x;
5001 };
5002 
5003 
5004 
5005 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
5006 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 0> : tuple_type<A0> {
5007  const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a0) {}
5008  typename tuple_type<A0>::const_reference get() const { return m_x; }
5009 private:
5010  typename tuple_type<A0>::const_reference m_x;
5011 };
5012 
5013 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
5014 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 1> : tuple_type<A1> {
5015  const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a1) {}
5016  typename tuple_type<A1>::const_reference get() const { return m_x; }
5017 private:
5018  typename tuple_type<A1>::const_reference m_x;
5019 };
5020 
5021 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
5022 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 2> : tuple_type<A2> {
5023  const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a2) {}
5024  typename tuple_type<A2>::const_reference get() const { return m_x; }
5025 private:
5026  typename tuple_type<A2>::const_reference m_x;
5027 };
5028 
5029 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
5030 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 3> : tuple_type<A3> {
5031  const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a3) {}
5032  typename tuple_type<A3>::const_reference get() const { return m_x; }
5033 private:
5034  typename tuple_type<A3>::const_reference m_x;
5035 };
5036 
5037 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
5038 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 4> : tuple_type<A4> {
5039  const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a4) {}
5040  typename tuple_type<A4>::const_reference get() const { return m_x; }
5041 private:
5042  typename tuple_type<A4>::const_reference m_x;
5043 };
5044 
5045 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
5046 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 5> : tuple_type<A5> {
5047  const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a5) {}
5048  typename tuple_type<A5>::const_reference get() const { return m_x; }
5049 private:
5050  typename tuple_type<A5>::const_reference m_x;
5051 };
5052 
5053 
5054 
5055 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
5056 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 0> : tuple_type<A0> {
5058  typename tuple_type<A0>::const_reference get() const { return m_x; }
5059 private:
5060  typename tuple_type<A0>::const_reference m_x;
5061 };
5062 
5063 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
5064 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 1> : tuple_type<A1> {
5066  typename tuple_type<A1>::const_reference get() const { return m_x; }
5067 private:
5068  typename tuple_type<A1>::const_reference m_x;
5069 };
5070 
5071 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
5072 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 2> : tuple_type<A2> {
5074  typename tuple_type<A2>::const_reference get() const { return m_x; }
5075 private:
5076  typename tuple_type<A2>::const_reference m_x;
5077 };
5078 
5079 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
5080 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 3> : tuple_type<A3> {
5082  typename tuple_type<A3>::const_reference get() const { return m_x; }
5083 private:
5084  typename tuple_type<A3>::const_reference m_x;
5085 };
5086 
5087 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
5088 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 4> : tuple_type<A4> {
5090  typename tuple_type<A4>::const_reference get() const { return m_x; }
5091 private:
5092  typename tuple_type<A4>::const_reference m_x;
5093 };
5094 
5095 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
5096 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 5> : tuple_type<A5> {
5098  typename tuple_type<A5>::const_reference get() const { return m_x; }
5099 private:
5100  typename tuple_type<A5>::const_reference m_x;
5101 };
5102 
5103 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
5104 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 6> : tuple_type<A6> {
5106  typename tuple_type<A6>::const_reference get() const { return m_x; }
5107 private:
5108  typename tuple_type<A6>::const_reference m_x;
5109 };
5110 
5111 
5112 
5113 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
5114 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 0> : tuple_type<A0> {
5116  typename tuple_type<A0>::const_reference get() const { return m_x; }
5117 private:
5118  typename tuple_type<A0>::const_reference m_x;
5119 };
5120 
5121 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
5122 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 1> : tuple_type<A1> {
5124  typename tuple_type<A1>::const_reference get() const { return m_x; }
5125 private:
5126  typename tuple_type<A1>::const_reference m_x;
5127 };
5128 
5129 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
5130 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 2> : tuple_type<A2> {
5132  typename tuple_type<A2>::const_reference get() const { return m_x; }
5133 private:
5134  typename tuple_type<A2>::const_reference m_x;
5135 };
5136 
5137 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
5138 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 3> : tuple_type<A3> {
5140  typename tuple_type<A3>::const_reference get() const { return m_x; }
5141 private:
5142  typename tuple_type<A3>::const_reference m_x;
5143 };
5144 
5145 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
5146 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 4> : tuple_type<A4> {
5148  typename tuple_type<A4>::const_reference get() const { return m_x; }
5149 private:
5150  typename tuple_type<A4>::const_reference m_x;
5151 };
5152 
5153 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
5154 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 5> : tuple_type<A5> {
5156  typename tuple_type<A5>::const_reference get() const { return m_x; }
5157 private:
5158  typename tuple_type<A5>::const_reference m_x;
5159 };
5160 
5161 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
5162 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 6> : tuple_type<A6> {
5164  typename tuple_type<A6>::const_reference get() const { return m_x; }
5165 private:
5166  typename tuple_type<A6>::const_reference m_x;
5167 };
5168 
5169 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
5170 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 7> : tuple_type<A7> {
5172  typename tuple_type<A7>::const_reference get() const { return m_x; }
5173 private:
5174  typename tuple_type<A7>::const_reference m_x;
5175 };
5176 
5177 
5178 
5179 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
5180 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 0> : tuple_type<A0> {
5182  typename tuple_type<A0>::const_reference get() const { return m_x; }
5183 private:
5184  typename tuple_type<A0>::const_reference m_x;
5185 };
5186 
5187 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
5188 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 1> : tuple_type<A1> {
5190  typename tuple_type<A1>::const_reference get() const { return m_x; }
5191 private:
5192  typename tuple_type<A1>::const_reference m_x;
5193 };
5194 
5195 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
5196 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 2> : tuple_type<A2> {
5198  typename tuple_type<A2>::const_reference get() const { return m_x; }
5199 private:
5200  typename tuple_type<A2>::const_reference m_x;
5201 };
5202 
5203 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
5204 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 3> : tuple_type<A3> {
5206  typename tuple_type<A3>::const_reference get() const { return m_x; }
5207 private:
5208  typename tuple_type<A3>::const_reference m_x;
5209 };
5210 
5211 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
5212 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 4> : tuple_type<A4> {
5214  typename tuple_type<A4>::const_reference get() const { return m_x; }
5215 private:
5216  typename tuple_type<A4>::const_reference m_x;
5217 };
5218 
5219 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
5220 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 5> : tuple_type<A5> {
5222  typename tuple_type<A5>::const_reference get() const { return m_x; }
5223 private:
5224  typename tuple_type<A5>::const_reference m_x;
5225 };
5226 
5227 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
5228 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 6> : tuple_type<A6> {
5230  typename tuple_type<A6>::const_reference get() const { return m_x; }
5231 private:
5232  typename tuple_type<A6>::const_reference m_x;
5233 };
5234 
5235 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
5236 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 7> : tuple_type<A7> {
5238  typename tuple_type<A7>::const_reference get() const { return m_x; }
5239 private:
5240  typename tuple_type<A7>::const_reference m_x;
5241 };
5242 
5243 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
5244 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 8> : tuple_type<A8> {
5246  typename tuple_type<A8>::const_reference get() const { return m_x; }
5247 private:
5248  typename tuple_type<A8>::const_reference m_x;
5249 };
5250 
5251 
5252 
5253 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
5254 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 0> : tuple_type<A0> {
5256  typename tuple_type<A0>::const_reference get() const { return m_x; }
5257 private:
5258  typename tuple_type<A0>::const_reference m_x;
5259 };
5260 
5261 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
5262 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 1> : tuple_type<A1> {
5264  typename tuple_type<A1>::const_reference get() const { return m_x; }
5265 private:
5266  typename tuple_type<A1>::const_reference m_x;
5267 };
5268 
5269 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
5270 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 2> : tuple_type<A2> {
5272  typename tuple_type<A2>::const_reference get() const { return m_x; }
5273 private:
5274  typename tuple_type<A2>::const_reference m_x;
5275 };
5276 
5277 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
5278 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 3> : tuple_type<A3> {
5280  typename tuple_type<A3>::const_reference get() const { return m_x; }
5281 private:
5282  typename tuple_type<A3>::const_reference m_x;
5283 };
5284 
5285 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
5286 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 4> : tuple_type<A4> {
5288  typename tuple_type<A4>::const_reference get() const { return m_x; }
5289 private:
5290  typename tuple_type<A4>::const_reference m_x;
5291 };
5292 
5293 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
5294 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 5> : tuple_type<A5> {
5296  typename tuple_type<A5>::const_reference get() const { return m_x; }
5297 private:
5298  typename tuple_type<A5>::const_reference m_x;
5299 };
5300 
5301 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
5302 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 6> : tuple_type<A6> {
5304  typename tuple_type<A6>::const_reference get() const { return m_x; }
5305 private:
5306  typename tuple_type<A6>::const_reference m_x;
5307 };
5308 
5309 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
5310 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 7> : tuple_type<A7> {
5312  typename tuple_type<A7>::const_reference get() const { return m_x; }
5313 private:
5314  typename tuple_type<A7>::const_reference m_x;
5315 };
5316 
5317 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
5318 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 8> : tuple_type<A8> {
5320  typename tuple_type<A8>::const_reference get() const { return m_x; }
5321 private:
5322  typename tuple_type<A8>::const_reference m_x;
5323 };
5324 
5325 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
5326 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 9> : tuple_type<A9> {
5328  typename tuple_type<A9>::const_reference get() const { return m_x; }
5329 private:
5330  typename tuple_type<A9>::const_reference m_x;
5331 };
5332 
5333 
5334 
5335 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
5336 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 0> : tuple_type<A0> {
5338  typename tuple_type<A0>::const_reference get() const { return m_x; }
5339 private:
5340  typename tuple_type<A0>::const_reference m_x;
5341 };
5342 
5343 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
5344 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 1> : tuple_type<A1> {
5346  typename tuple_type<A1>::const_reference get() const { return m_x; }
5347 private:
5348  typename tuple_type<A1>::const_reference m_x;
5349 };
5350 
5351 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
5352 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 2> : tuple_type<A2> {
5354  typename tuple_type<A2>::const_reference get() const { return m_x; }
5355 private:
5356  typename tuple_type<A2>::const_reference m_x;
5357 };
5358 
5359 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
5360 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 3> : tuple_type<A3> {
5362  typename tuple_type<A3>::const_reference get() const { return m_x; }
5363 private:
5364  typename tuple_type<A3>::const_reference m_x;
5365 };
5366 
5367 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
5368 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 4> : tuple_type<A4> {
5370  typename tuple_type<A4>::const_reference get() const { return m_x; }
5371 private:
5372  typename tuple_type<A4>::const_reference m_x;
5373 };
5374 
5375 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
5376 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 5> : tuple_type<A5> {
5378  typename tuple_type<A5>::const_reference get() const { return m_x; }
5379 private:
5380  typename tuple_type<A5>::const_reference m_x;
5381 };
5382 
5383 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
5384 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 6> : tuple_type<A6> {
5386  typename tuple_type<A6>::const_reference get() const { return m_x; }
5387 private:
5388  typename tuple_type<A6>::const_reference m_x;
5389 };
5390 
5391 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
5392 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 7> : tuple_type<A7> {
5394  typename tuple_type<A7>::const_reference get() const { return m_x; }
5395 private:
5396  typename tuple_type<A7>::const_reference m_x;
5397 };
5398 
5399 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
5400 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 8> : tuple_type<A8> {
5402  typename tuple_type<A8>::const_reference get() const { return m_x; }
5403 private:
5404  typename tuple_type<A8>::const_reference m_x;
5405 };
5406 
5407 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
5408 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 9> : tuple_type<A9> {
5410  typename tuple_type<A9>::const_reference get() const { return m_x; }
5411 private:
5412  typename tuple_type<A9>::const_reference m_x;
5413 };
5414 
5415 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
5416 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 10> : tuple_type<A10> {
5418  typename tuple_type<A10>::const_reference get() const { return m_x; }
5419 private:
5420  typename tuple_type<A10>::const_reference m_x;
5421 };
5422 
5423 
5424 
5425 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5426 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 0> : tuple_type<A0> {
5428  typename tuple_type<A0>::const_reference get() const { return m_x; }
5429 private:
5430  typename tuple_type<A0>::const_reference m_x;
5431 };
5432 
5433 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5434 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 1> : tuple_type<A1> {
5436  typename tuple_type<A1>::const_reference get() const { return m_x; }
5437 private:
5438  typename tuple_type<A1>::const_reference m_x;
5439 };
5440 
5441 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5442 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 2> : tuple_type<A2> {
5444  typename tuple_type<A2>::const_reference get() const { return m_x; }
5445 private:
5446  typename tuple_type<A2>::const_reference m_x;
5447 };
5448 
5449 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5450 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 3> : tuple_type<A3> {
5452  typename tuple_type<A3>::const_reference get() const { return m_x; }
5453 private:
5454  typename tuple_type<A3>::const_reference m_x;
5455 };
5456 
5457 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5458 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 4> : tuple_type<A4> {
5460  typename tuple_type<A4>::const_reference get() const { return m_x; }
5461 private:
5462  typename tuple_type<A4>::const_reference m_x;
5463 };
5464 
5465 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5466 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 5> : tuple_type<A5> {
5468  typename tuple_type<A5>::const_reference get() const { return m_x; }
5469 private:
5470  typename tuple_type<A5>::const_reference m_x;
5471 };
5472 
5473 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5474 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 6> : tuple_type<A6> {
5476  typename tuple_type<A6>::const_reference get() const { return m_x; }
5477 private:
5478  typename tuple_type<A6>::const_reference m_x;
5479 };
5480 
5481 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5482 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 7> : tuple_type<A7> {
5484  typename tuple_type<A7>::const_reference get() const { return m_x; }
5485 private:
5486  typename tuple_type<A7>::const_reference m_x;
5487 };
5488 
5489 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5490 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 8> : tuple_type<A8> {
5492  typename tuple_type<A8>::const_reference get() const { return m_x; }
5493 private:
5494  typename tuple_type<A8>::const_reference m_x;
5495 };
5496 
5497 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5498 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 9> : tuple_type<A9> {
5500  typename tuple_type<A9>::const_reference get() const { return m_x; }
5501 private:
5502  typename tuple_type<A9>::const_reference m_x;
5503 };
5504 
5505 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5506 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 10> : tuple_type<A10> {
5508  typename tuple_type<A10>::const_reference get() const { return m_x; }
5509 private:
5510  typename tuple_type<A10>::const_reference m_x;
5511 };
5512 
5513 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
5514 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 11> : tuple_type<A11> {
5516  typename tuple_type<A11>::const_reference get() const { return m_x; }
5517 private:
5518  typename tuple_type<A11>::const_reference m_x;
5519 };
5520 
5521 
5522 
5523 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5524 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 0> : tuple_type<A0> {
5526  typename tuple_type<A0>::const_reference get() const { return m_x; }
5527 private:
5528  typename tuple_type<A0>::const_reference m_x;
5529 };
5530 
5531 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5532 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 1> : tuple_type<A1> {
5534  typename tuple_type<A1>::const_reference get() const { return m_x; }
5535 private:
5536  typename tuple_type<A1>::const_reference m_x;
5537 };
5538 
5539 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5540 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 2> : tuple_type<A2> {
5542  typename tuple_type<A2>::const_reference get() const { return m_x; }
5543 private:
5544  typename tuple_type<A2>::const_reference m_x;
5545 };
5546 
5547 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5548 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 3> : tuple_type<A3> {
5550  typename tuple_type<A3>::const_reference get() const { return m_x; }
5551 private:
5552  typename tuple_type<A3>::const_reference m_x;
5553 };
5554 
5555 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5556 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 4> : tuple_type<A4> {
5558  typename tuple_type<A4>::const_reference get() const { return m_x; }
5559 private:
5560  typename tuple_type<A4>::const_reference m_x;
5561 };
5562 
5563 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5564 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 5> : tuple_type<A5> {
5566  typename tuple_type<A5>::const_reference get() const { return m_x; }
5567 private:
5568  typename tuple_type<A5>::const_reference m_x;
5569 };
5570 
5571 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5572 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 6> : tuple_type<A6> {
5574  typename tuple_type<A6>::const_reference get() const { return m_x; }
5575 private:
5576  typename tuple_type<A6>::const_reference m_x;
5577 };
5578 
5579 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5580 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 7> : tuple_type<A7> {
5582  typename tuple_type<A7>::const_reference get() const { return m_x; }
5583 private:
5584  typename tuple_type<A7>::const_reference m_x;
5585 };
5586 
5587 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5588 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 8> : tuple_type<A8> {
5590  typename tuple_type<A8>::const_reference get() const { return m_x; }
5591 private:
5592  typename tuple_type<A8>::const_reference m_x;
5593 };
5594 
5595 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5596 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 9> : tuple_type<A9> {
5598  typename tuple_type<A9>::const_reference get() const { return m_x; }
5599 private:
5600  typename tuple_type<A9>::const_reference m_x;
5601 };
5602 
5603 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5604 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 10> : tuple_type<A10> {
5606  typename tuple_type<A10>::const_reference get() const { return m_x; }
5607 private:
5608  typename tuple_type<A10>::const_reference m_x;
5609 };
5610 
5611 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5612 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 11> : tuple_type<A11> {
5614  typename tuple_type<A11>::const_reference get() const { return m_x; }
5615 private:
5616  typename tuple_type<A11>::const_reference m_x;
5617 };
5618 
5619 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
5620 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 12> : tuple_type<A12> {
5622  typename tuple_type<A12>::const_reference get() const { return m_x; }
5623 private:
5624  typename tuple_type<A12>::const_reference m_x;
5625 };
5626 
5627 
5628 
5629 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5630 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 0> : tuple_type<A0> {
5632  typename tuple_type<A0>::const_reference get() const { return m_x; }
5633 private:
5634  typename tuple_type<A0>::const_reference m_x;
5635 };
5636 
5637 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5638 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 1> : tuple_type<A1> {
5640  typename tuple_type<A1>::const_reference get() const { return m_x; }
5641 private:
5642  typename tuple_type<A1>::const_reference m_x;
5643 };
5644 
5645 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5646 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 2> : tuple_type<A2> {
5648  typename tuple_type<A2>::const_reference get() const { return m_x; }
5649 private:
5650  typename tuple_type<A2>::const_reference m_x;
5651 };
5652 
5653 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5654 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 3> : tuple_type<A3> {
5656  typename tuple_type<A3>::const_reference get() const { return m_x; }
5657 private:
5658  typename tuple_type<A3>::const_reference m_x;
5659 };
5660 
5661 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5662 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 4> : tuple_type<A4> {
5664  typename tuple_type<A4>::const_reference get() const { return m_x; }
5665 private:
5666  typename tuple_type<A4>::const_reference m_x;
5667 };
5668 
5669 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5670 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 5> : tuple_type<A5> {
5672  typename tuple_type<A5>::const_reference get() const { return m_x; }
5673 private:
5674  typename tuple_type<A5>::const_reference m_x;
5675 };
5676 
5677 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5678 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 6> : tuple_type<A6> {
5680  typename tuple_type<A6>::const_reference get() const { return m_x; }
5681 private:
5682  typename tuple_type<A6>::const_reference m_x;
5683 };
5684 
5685 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5686 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 7> : tuple_type<A7> {
5688  typename tuple_type<A7>::const_reference get() const { return m_x; }
5689 private:
5690  typename tuple_type<A7>::const_reference m_x;
5691 };
5692 
5693 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5694 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 8> : tuple_type<A8> {
5696  typename tuple_type<A8>::const_reference get() const { return m_x; }
5697 private:
5698  typename tuple_type<A8>::const_reference m_x;
5699 };
5700 
5701 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5702 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 9> : tuple_type<A9> {
5704  typename tuple_type<A9>::const_reference get() const { return m_x; }
5705 private:
5706  typename tuple_type<A9>::const_reference m_x;
5707 };
5708 
5709 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5710 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 10> : tuple_type<A10> {
5712  typename tuple_type<A10>::const_reference get() const { return m_x; }
5713 private:
5714  typename tuple_type<A10>::const_reference m_x;
5715 };
5716 
5717 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5718 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 11> : tuple_type<A11> {
5720  typename tuple_type<A11>::const_reference get() const { return m_x; }
5721 private:
5722  typename tuple_type<A11>::const_reference m_x;
5723 };
5724 
5725 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5726 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 12> : tuple_type<A12> {
5728  typename tuple_type<A12>::const_reference get() const { return m_x; }
5729 private:
5730  typename tuple_type<A12>::const_reference m_x;
5731 };
5732 
5733 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
5734 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 13> : tuple_type<A13> {
5736  typename tuple_type<A13>::const_reference get() const { return m_x; }
5737 private:
5738  typename tuple_type<A13>::const_reference m_x;
5739 };
5740 
5741 
5742 
5743 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5744 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 0> : tuple_type<A0> {
5746  typename tuple_type<A0>::const_reference get() const { return m_x; }
5747 private:
5748  typename tuple_type<A0>::const_reference m_x;
5749 };
5750 
5751 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5752 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 1> : tuple_type<A1> {
5754  typename tuple_type<A1>::const_reference get() const { return m_x; }
5755 private:
5756  typename tuple_type<A1>::const_reference m_x;
5757 };
5758 
5759 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5760 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 2> : tuple_type<A2> {
5762  typename tuple_type<A2>::const_reference get() const { return m_x; }
5763 private:
5764  typename tuple_type<A2>::const_reference m_x;
5765 };
5766 
5767 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5768 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 3> : tuple_type<A3> {
5770  typename tuple_type<A3>::const_reference get() const { return m_x; }
5771 private:
5772  typename tuple_type<A3>::const_reference m_x;
5773 };
5774 
5775 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5776 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 4> : tuple_type<A4> {
5778  typename tuple_type<A4>::const_reference get() const { return m_x; }
5779 private:
5780  typename tuple_type<A4>::const_reference m_x;
5781 };
5782 
5783 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5784 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 5> : tuple_type<A5> {
5786  typename tuple_type<A5>::const_reference get() const { return m_x; }
5787 private:
5788  typename tuple_type<A5>::const_reference m_x;
5789 };
5790 
5791 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5792 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 6> : tuple_type<A6> {
5794  typename tuple_type<A6>::const_reference get() const { return m_x; }
5795 private:
5796  typename tuple_type<A6>::const_reference m_x;
5797 };
5798 
5799 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5800 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 7> : tuple_type<A7> {
5802  typename tuple_type<A7>::const_reference get() const { return m_x; }
5803 private:
5804  typename tuple_type<A7>::const_reference m_x;
5805 };
5806 
5807 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5808 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 8> : tuple_type<A8> {
5810  typename tuple_type<A8>::const_reference get() const { return m_x; }
5811 private:
5812  typename tuple_type<A8>::const_reference m_x;
5813 };
5814 
5815 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5816 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 9> : tuple_type<A9> {
5818  typename tuple_type<A9>::const_reference get() const { return m_x; }
5819 private:
5820  typename tuple_type<A9>::const_reference m_x;
5821 };
5822 
5823 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5824 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 10> : tuple_type<A10> {
5826  typename tuple_type<A10>::const_reference get() const { return m_x; }
5827 private:
5828  typename tuple_type<A10>::const_reference m_x;
5829 };
5830 
5831 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5832 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 11> : tuple_type<A11> {
5834  typename tuple_type<A11>::const_reference get() const { return m_x; }
5835 private:
5836  typename tuple_type<A11>::const_reference m_x;
5837 };
5838 
5839 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5840 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 12> : tuple_type<A12> {
5842  typename tuple_type<A12>::const_reference get() const { return m_x; }
5843 private:
5844  typename tuple_type<A12>::const_reference m_x;
5845 };
5846 
5847 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5848 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 13> : tuple_type<A13> {
5850  typename tuple_type<A13>::const_reference get() const { return m_x; }
5851 private:
5852  typename tuple_type<A13>::const_reference m_x;
5853 };
5854 
5855 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
5856 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 14> : tuple_type<A14> {
5858  typename tuple_type<A14>::const_reference get() const { return m_x; }
5859 private:
5860  typename tuple_type<A14>::const_reference m_x;
5861 };
5862 
5863 
5864 
5865 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5866 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> {
5868  typename tuple_type<A0>::const_reference get() const { return m_x; }
5869 private:
5870  typename tuple_type<A0>::const_reference m_x;
5871 };
5872 
5873 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5874 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> {
5876  typename tuple_type<A1>::const_reference get() const { return m_x; }
5877 private:
5878  typename tuple_type<A1>::const_reference m_x;
5879 };
5880 
5881 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5882 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> {
5884  typename tuple_type<A2>::const_reference get() const { return m_x; }
5885 private:
5886  typename tuple_type<A2>::const_reference m_x;
5887 };
5888 
5889 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5890 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> {
5892  typename tuple_type<A3>::const_reference get() const { return m_x; }
5893 private:
5894  typename tuple_type<A3>::const_reference m_x;
5895 };
5896 
5897 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5898 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> {
5900  typename tuple_type<A4>::const_reference get() const { return m_x; }
5901 private:
5902  typename tuple_type<A4>::const_reference m_x;
5903 };
5904 
5905 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5906 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> {
5908  typename tuple_type<A5>::const_reference get() const { return m_x; }
5909 private:
5910  typename tuple_type<A5>::const_reference m_x;
5911 };
5912 
5913 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5914 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> {
5916  typename tuple_type<A6>::const_reference get() const { return m_x; }
5917 private:
5918  typename tuple_type<A6>::const_reference m_x;
5919 };
5920 
5921 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5922 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> {
5924  typename tuple_type<A7>::const_reference get() const { return m_x; }
5925 private:
5926  typename tuple_type<A7>::const_reference m_x;
5927 };
5928 
5929 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5930 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> {
5932  typename tuple_type<A8>::const_reference get() const { return m_x; }
5933 private:
5934  typename tuple_type<A8>::const_reference m_x;
5935 };
5936 
5937 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5938 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> {
5940  typename tuple_type<A9>::const_reference get() const { return m_x; }
5941 private:
5942  typename tuple_type<A9>::const_reference m_x;
5943 };
5944 
5945 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5946 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> {
5948  typename tuple_type<A10>::const_reference get() const { return m_x; }
5949 private:
5950  typename tuple_type<A10>::const_reference m_x;
5951 };
5952 
5953 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5954 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> {
5956  typename tuple_type<A11>::const_reference get() const { return m_x; }
5957 private:
5958  typename tuple_type<A11>::const_reference m_x;
5959 };
5960 
5961 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5962 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> {
5964  typename tuple_type<A12>::const_reference get() const { return m_x; }
5965 private:
5966  typename tuple_type<A12>::const_reference m_x;
5967 };
5968 
5969 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5970 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> {
5972  typename tuple_type<A13>::const_reference get() const { return m_x; }
5973 private:
5974  typename tuple_type<A13>::const_reference m_x;
5975 };
5976 
5977 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5978 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> {
5980  typename tuple_type<A14>::const_reference get() const { return m_x; }
5981 private:
5982  typename tuple_type<A14>::const_reference m_x;
5983 };
5984 
5985 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
5986 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> {
5988  typename tuple_type<A15>::const_reference get() const { return m_x; }
5989 private:
5990  typename tuple_type<A15>::const_reference m_x;
5991 };
5992 
5993 
5994 
5995 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
5996 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> {
5998  typename tuple_type<A0>::const_reference get() const { return m_x; }
5999 private:
6000  typename tuple_type<A0>::const_reference m_x;
6001 };
6002 
6003 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6004 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> {
6006  typename tuple_type<A1>::const_reference get() const { return m_x; }
6007 private:
6008  typename tuple_type<A1>::const_reference m_x;
6009 };
6010 
6011 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6012 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> {
6014  typename tuple_type<A2>::const_reference get() const { return m_x; }
6015 private:
6016  typename tuple_type<A2>::const_reference m_x;
6017 };
6018 
6019 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6020 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> {
6022  typename tuple_type<A3>::const_reference get() const { return m_x; }
6023 private:
6024  typename tuple_type<A3>::const_reference m_x;
6025 };
6026 
6027 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6028 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> {
6030  typename tuple_type<A4>::const_reference get() const { return m_x; }
6031 private:
6032  typename tuple_type<A4>::const_reference m_x;
6033 };
6034 
6035 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6036 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> {
6038  typename tuple_type<A5>::const_reference get() const { return m_x; }
6039 private:
6040  typename tuple_type<A5>::const_reference m_x;
6041 };
6042 
6043 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6044 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> {
6046  typename tuple_type<A6>::const_reference get() const { return m_x; }
6047 private:
6048  typename tuple_type<A6>::const_reference m_x;
6049 };
6050 
6051 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6052 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> {
6054  typename tuple_type<A7>::const_reference get() const { return m_x; }
6055 private:
6056  typename tuple_type<A7>::const_reference m_x;
6057 };
6058 
6059 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6060 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> {
6062  typename tuple_type<A8>::const_reference get() const { return m_x; }
6063 private:
6064  typename tuple_type<A8>::const_reference m_x;
6065 };
6066 
6067 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6068 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> {
6070  typename tuple_type<A9>::const_reference get() const { return m_x; }
6071 private:
6072  typename tuple_type<A9>::const_reference m_x;
6073 };
6074 
6075 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6076 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> {
6078  typename tuple_type<A10>::const_reference get() const { return m_x; }
6079 private:
6080  typename tuple_type<A10>::const_reference m_x;
6081 };
6082 
6083 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6084 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> {
6086  typename tuple_type<A11>::const_reference get() const { return m_x; }
6087 private:
6088  typename tuple_type<A11>::const_reference m_x;
6089 };
6090 
6091 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6092 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> {
6094  typename tuple_type<A12>::const_reference get() const { return m_x; }
6095 private:
6096  typename tuple_type<A12>::const_reference m_x;
6097 };
6098 
6099 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6100 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> {
6102  typename tuple_type<A13>::const_reference get() const { return m_x; }
6103 private:
6104  typename tuple_type<A13>::const_reference m_x;
6105 };
6106 
6107 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6108 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> {
6110  typename tuple_type<A14>::const_reference get() const { return m_x; }
6111 private:
6112  typename tuple_type<A14>::const_reference m_x;
6113 };
6114 
6115 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6116 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> {
6118  typename tuple_type<A15>::const_reference get() const { return m_x; }
6119 private:
6120  typename tuple_type<A15>::const_reference m_x;
6121 };
6122 
6123 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
6124 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> {
6126  typename tuple_type<A16>::const_reference get() const { return m_x; }
6127 private:
6128  typename tuple_type<A16>::const_reference m_x;
6129 };
6130 
6131 
6132 
6133 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6134 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> {
6136  typename tuple_type<A0>::const_reference get() const { return m_x; }
6137 private:
6138  typename tuple_type<A0>::const_reference m_x;
6139 };
6140 
6141 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6142 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> {
6144  typename tuple_type<A1>::const_reference get() const { return m_x; }
6145 private:
6146  typename tuple_type<A1>::const_reference m_x;
6147 };
6148 
6149 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6150 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> {
6152  typename tuple_type<A2>::const_reference get() const { return m_x; }
6153 private:
6154  typename tuple_type<A2>::const_reference m_x;
6155 };
6156 
6157 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6158 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> {
6160  typename tuple_type<A3>::const_reference get() const { return m_x; }
6161 private:
6162  typename tuple_type<A3>::const_reference m_x;
6163 };
6164 
6165 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6166 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> {
6168  typename tuple_type<A4>::const_reference get() const { return m_x; }
6169 private:
6170  typename tuple_type<A4>::const_reference m_x;
6171 };
6172 
6173 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6174 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> {
6176  typename tuple_type<A5>::const_reference get() const { return m_x; }
6177 private:
6178  typename tuple_type<A5>::const_reference m_x;
6179 };
6180 
6181 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6182 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> {
6184  typename tuple_type<A6>::const_reference get() const { return m_x; }
6185 private:
6186  typename tuple_type<A6>::const_reference m_x;
6187 };
6188 
6189 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6190 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> {
6192  typename tuple_type<A7>::const_reference get() const { return m_x; }
6193 private:
6194  typename tuple_type<A7>::const_reference m_x;
6195 };
6196 
6197 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6198 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> {
6200  typename tuple_type<A8>::const_reference get() const { return m_x; }
6201 private:
6202  typename tuple_type<A8>::const_reference m_x;
6203 };
6204 
6205 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6206 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> {
6208  typename tuple_type<A9>::const_reference get() const { return m_x; }
6209 private:
6210  typename tuple_type<A9>::const_reference m_x;
6211 };
6212 
6213 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6214 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> {
6216  typename tuple_type<A10>::const_reference get() const { return m_x; }
6217 private:
6218  typename tuple_type<A10>::const_reference m_x;
6219 };
6220 
6221 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6222 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> {
6224  typename tuple_type<A11>::const_reference get() const { return m_x; }
6225 private:
6226  typename tuple_type<A11>::const_reference m_x;
6227 };
6228 
6229 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6230 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> {
6232  typename tuple_type<A12>::const_reference get() const { return m_x; }
6233 private:
6234  typename tuple_type<A12>::const_reference m_x;
6235 };
6236 
6237 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6238 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> {
6240  typename tuple_type<A13>::const_reference get() const { return m_x; }
6241 private:
6242  typename tuple_type<A13>::const_reference m_x;
6243 };
6244 
6245 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6246 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> {
6248  typename tuple_type<A14>::const_reference get() const { return m_x; }
6249 private:
6250  typename tuple_type<A14>::const_reference m_x;
6251 };
6252 
6253 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6254 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> {
6256  typename tuple_type<A15>::const_reference get() const { return m_x; }
6257 private:
6258  typename tuple_type<A15>::const_reference m_x;
6259 };
6260 
6261 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6262 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> {
6264  typename tuple_type<A16>::const_reference get() const { return m_x; }
6265 private:
6266  typename tuple_type<A16>::const_reference m_x;
6267 };
6268 
6269 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
6270 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> {
6272  typename tuple_type<A17>::const_reference get() const { return m_x; }
6273 private:
6274  typename tuple_type<A17>::const_reference m_x;
6275 };
6276 
6277 
6278 
6279 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6280 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> {
6282  typename tuple_type<A0>::const_reference get() const { return m_x; }
6283 private:
6284  typename tuple_type<A0>::const_reference m_x;
6285 };
6286 
6287 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6288 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> {
6290  typename tuple_type<A1>::const_reference get() const { return m_x; }
6291 private:
6292  typename tuple_type<A1>::const_reference m_x;
6293 };
6294 
6295 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6296 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> {
6298  typename tuple_type<A2>::const_reference get() const { return m_x; }
6299 private:
6300  typename tuple_type<A2>::const_reference m_x;
6301 };
6302 
6303 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6304 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> {
6306  typename tuple_type<A3>::const_reference get() const { return m_x; }
6307 private:
6308  typename tuple_type<A3>::const_reference m_x;
6309 };
6310 
6311 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6312 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> {
6314  typename tuple_type<A4>::const_reference get() const { return m_x; }
6315 private:
6316  typename tuple_type<A4>::const_reference m_x;
6317 };
6318 
6319 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6320 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> {
6322  typename tuple_type<A5>::const_reference get() const { return m_x; }
6323 private:
6324  typename tuple_type<A5>::const_reference m_x;
6325 };
6326 
6327 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6328 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> {
6330  typename tuple_type<A6>::const_reference get() const { return m_x; }
6331 private:
6332  typename tuple_type<A6>::const_reference m_x;
6333 };
6334 
6335 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6336 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> {
6338  typename tuple_type<A7>::const_reference get() const { return m_x; }
6339 private:
6340  typename tuple_type<A7>::const_reference m_x;
6341 };
6342 
6343 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6344 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> {
6346  typename tuple_type<A8>::const_reference get() const { return m_x; }
6347 private:
6348  typename tuple_type<A8>::const_reference m_x;
6349 };
6350 
6351 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6352 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> {
6354  typename tuple_type<A9>::const_reference get() const { return m_x; }
6355 private:
6356  typename tuple_type<A9>::const_reference m_x;
6357 };
6358 
6359 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6360 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> {
6362  typename tuple_type<A10>::const_reference get() const { return m_x; }
6363 private:
6364  typename tuple_type<A10>::const_reference m_x;
6365 };
6366 
6367 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6368 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> {
6370  typename tuple_type<A11>::const_reference get() const { return m_x; }
6371 private:
6372  typename tuple_type<A11>::const_reference m_x;
6373 };
6374 
6375 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6376 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> {
6378  typename tuple_type<A12>::const_reference get() const { return m_x; }
6379 private:
6380  typename tuple_type<A12>::const_reference m_x;
6381 };
6382 
6383 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6384 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> {
6386  typename tuple_type<A13>::const_reference get() const { return m_x; }
6387 private:
6388  typename tuple_type<A13>::const_reference m_x;
6389 };
6390 
6391 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6392 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> {
6394  typename tuple_type<A14>::const_reference get() const { return m_x; }
6395 private:
6396  typename tuple_type<A14>::const_reference m_x;
6397 };
6398 
6399 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6400 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> {
6402  typename tuple_type<A15>::const_reference get() const { return m_x; }
6403 private:
6404  typename tuple_type<A15>::const_reference m_x;
6405 };
6406 
6407 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6408 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> {
6410  typename tuple_type<A16>::const_reference get() const { return m_x; }
6411 private:
6412  typename tuple_type<A16>::const_reference m_x;
6413 };
6414 
6415 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6416 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> {
6418  typename tuple_type<A17>::const_reference get() const { return m_x; }
6419 private:
6420  typename tuple_type<A17>::const_reference m_x;
6421 };
6422 
6423 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
6424 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> {
6426  typename tuple_type<A18>::const_reference get() const { return m_x; }
6427 private:
6428  typename tuple_type<A18>::const_reference m_x;
6429 };
6430 
6431 
6432 
6433 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6434 struct 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> {
6436  typename tuple_type<A0>::const_reference get() const { return m_x; }
6437 private:
6438  typename tuple_type<A0>::const_reference m_x;
6439 };
6440 
6441 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6442 struct 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> {
6444  typename tuple_type<A1>::const_reference get() const { return m_x; }
6445 private:
6446  typename tuple_type<A1>::const_reference m_x;
6447 };
6448 
6449 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6450 struct 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> {
6452  typename tuple_type<A2>::const_reference get() const { return m_x; }
6453 private:
6454  typename tuple_type<A2>::const_reference m_x;
6455 };
6456 
6457 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6458 struct 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> {
6460  typename tuple_type<A3>::const_reference get() const { return m_x; }
6461 private:
6462  typename tuple_type<A3>::const_reference m_x;
6463 };
6464 
6465 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6466 struct 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> {
6468  typename tuple_type<A4>::const_reference get() const { return m_x; }
6469 private:
6470  typename tuple_type<A4>::const_reference m_x;
6471 };
6472 
6473 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6474 struct 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> {
6476  typename tuple_type<A5>::const_reference get() const { return m_x; }
6477 private:
6478  typename tuple_type<A5>::const_reference m_x;
6479 };
6480 
6481 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6482 struct 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> {
6484  typename tuple_type<A6>::const_reference get() const { return m_x; }
6485 private:
6486  typename tuple_type<A6>::const_reference m_x;
6487 };
6488 
6489 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6490 struct 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> {
6492  typename tuple_type<A7>::const_reference get() const { return m_x; }
6493 private:
6494  typename tuple_type<A7>::const_reference m_x;
6495 };
6496 
6497 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6498 struct 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> {
6500  typename tuple_type<A8>::const_reference get() const { return m_x; }
6501 private:
6502  typename tuple_type<A8>::const_reference m_x;
6503 };
6504 
6505 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6506 struct 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> {
6508  typename tuple_type<A9>::const_reference get() const { return m_x; }
6509 private:
6510  typename tuple_type<A9>::const_reference m_x;
6511 };
6512 
6513 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6514 struct 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> {
6516  typename tuple_type<A10>::const_reference get() const { return m_x; }
6517 private:
6518  typename tuple_type<A10>::const_reference m_x;
6519 };
6520 
6521 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6522 struct 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> {
6524  typename tuple_type<A11>::const_reference get() const { return m_x; }
6525 private:
6526  typename tuple_type<A11>::const_reference m_x;
6527 };
6528 
6529 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6530 struct 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> {
6532  typename tuple_type<A12>::const_reference get() const { return m_x; }
6533 private:
6534  typename tuple_type<A12>::const_reference m_x;
6535 };
6536 
6537 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6538 struct 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> {
6540  typename tuple_type<A13>::const_reference get() const { return m_x; }
6541 private:
6542  typename tuple_type<A13>::const_reference m_x;
6543 };
6544 
6545 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6546 struct 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> {
6548  typename tuple_type<A14>::const_reference get() const { return m_x; }
6549 private:
6550  typename tuple_type<A14>::const_reference m_x;
6551 };
6552 
6553 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6554 struct 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> {
6556  typename tuple_type<A15>::const_reference get() const { return m_x; }
6557 private:
6558  typename tuple_type<A15>::const_reference m_x;
6559 };
6560 
6561 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6562 struct 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> {
6564  typename tuple_type<A16>::const_reference get() const { return m_x; }
6565 private:
6566  typename tuple_type<A16>::const_reference m_x;
6567 };
6568 
6569 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6570 struct 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> {
6572  typename tuple_type<A17>::const_reference get() const { return m_x; }
6573 private:
6574  typename tuple_type<A17>::const_reference m_x;
6575 };
6576 
6577 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6578 struct 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> {
6580  typename tuple_type<A18>::const_reference get() const { return m_x; }
6581 private:
6582  typename tuple_type<A18>::const_reference m_x;
6583 };
6584 
6585 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
6586 struct 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> {
6588  typename tuple_type<A19>::const_reference get() const { return m_x; }
6589 private:
6590  typename tuple_type<A19>::const_reference m_x;
6591 };
6592 
6593 
6594 
6595 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6596 struct const_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> {
6598  typename tuple_type<A0>::const_reference get() const { return m_x; }
6599 private:
6600  typename tuple_type<A0>::const_reference m_x;
6601 };
6602 
6603 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6604 struct const_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> {
6606  typename tuple_type<A1>::const_reference get() const { return m_x; }
6607 private:
6608  typename tuple_type<A1>::const_reference m_x;
6609 };
6610 
6611 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6612 struct const_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> {
6614  typename tuple_type<A2>::const_reference get() const { return m_x; }
6615 private:
6616  typename tuple_type<A2>::const_reference m_x;
6617 };
6618 
6619 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6620 struct const_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> {
6622  typename tuple_type<A3>::const_reference get() const { return m_x; }
6623 private:
6624  typename tuple_type<A3>::const_reference m_x;
6625 };
6626 
6627 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6628 struct const_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> {
6630  typename tuple_type<A4>::const_reference get() const { return m_x; }
6631 private:
6632  typename tuple_type<A4>::const_reference m_x;
6633 };
6634 
6635 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6636 struct const_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> {
6638  typename tuple_type<A5>::const_reference get() const { return m_x; }
6639 private:
6640  typename tuple_type<A5>::const_reference m_x;
6641 };
6642 
6643 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6644 struct const_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> {
6646  typename tuple_type<A6>::const_reference get() const { return m_x; }
6647 private:
6648  typename tuple_type<A6>::const_reference m_x;
6649 };
6650 
6651 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6652 struct const_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> {
6654  typename tuple_type<A7>::const_reference get() const { return m_x; }
6655 private:
6656  typename tuple_type<A7>::const_reference m_x;
6657 };
6658 
6659 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6660 struct const_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> {
6662  typename tuple_type<A8>::const_reference get() const { return m_x; }
6663 private:
6664  typename tuple_type<A8>::const_reference m_x;
6665 };
6666 
6667 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6668 struct const_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> {
6670  typename tuple_type<A9>::const_reference get() const { return m_x; }
6671 private:
6672  typename tuple_type<A9>::const_reference m_x;
6673 };
6674 
6675 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6676 struct const_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> {
6678  typename tuple_type<A10>::const_reference get() const { return m_x; }
6679 private:
6680  typename tuple_type<A10>::const_reference m_x;
6681 };
6682 
6683 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6684 struct const_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> {
6686  typename tuple_type<A11>::const_reference get() const { return m_x; }
6687 private:
6688  typename tuple_type<A11>::const_reference m_x;
6689 };
6690 
6691 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6692 struct const_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> {
6694  typename tuple_type<A12>::const_reference get() const { return m_x; }
6695 private:
6696  typename tuple_type<A12>::const_reference m_x;
6697 };
6698 
6699 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6700 struct const_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> {
6702  typename tuple_type<A13>::const_reference get() const { return m_x; }
6703 private:
6704  typename tuple_type<A13>::const_reference m_x;
6705 };
6706 
6707 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6708 struct const_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> {
6710  typename tuple_type<A14>::const_reference get() const { return m_x; }
6711 private:
6712  typename tuple_type<A14>::const_reference m_x;
6713 };
6714 
6715 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6716 struct const_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> {
6718  typename tuple_type<A15>::const_reference get() const { return m_x; }
6719 private:
6720  typename tuple_type<A15>::const_reference m_x;
6721 };
6722 
6723 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6724 struct const_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> {
6726  typename tuple_type<A16>::const_reference get() const { return m_x; }
6727 private:
6728  typename tuple_type<A16>::const_reference m_x;
6729 };
6730 
6731 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6732 struct const_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> {
6734  typename tuple_type<A17>::const_reference get() const { return m_x; }
6735 private:
6736  typename tuple_type<A17>::const_reference m_x;
6737 };
6738 
6739 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6740 struct const_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> {
6742  typename tuple_type<A18>::const_reference get() const { return m_x; }
6743 private:
6744  typename tuple_type<A18>::const_reference m_x;
6745 };
6746 
6747 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6748 struct const_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> {
6750  typename tuple_type<A19>::const_reference get() const { return m_x; }
6751 private:
6752  typename tuple_type<A19>::const_reference m_x;
6753 };
6754 
6755 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
6756 struct const_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> {
6758  typename tuple_type<A20>::const_reference get() const { return m_x; }
6759 private:
6760  typename tuple_type<A20>::const_reference m_x;
6761 };
6762 
6763 
6764 
6765 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6766 struct const_tuple_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> {
6768  typename tuple_type<A0>::const_reference get() const { return m_x; }
6769 private:
6770  typename tuple_type<A0>::const_reference m_x;
6771 };
6772 
6773 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6774 struct const_tuple_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> {
6776  typename tuple_type<A1>::const_reference get() const { return m_x; }
6777 private:
6778  typename tuple_type<A1>::const_reference m_x;
6779 };
6780 
6781 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6782 struct const_tuple_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> {
6784  typename tuple_type<A2>::const_reference get() const { return m_x; }
6785 private:
6786  typename tuple_type<A2>::const_reference m_x;
6787 };
6788 
6789 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6790 struct const_tuple_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> {
6792  typename tuple_type<A3>::const_reference get() const { return m_x; }
6793 private:
6794  typename tuple_type<A3>::const_reference m_x;
6795 };
6796 
6797 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6798 struct const_tuple_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> {
6800  typename tuple_type<A4>::const_reference get() const { return m_x; }
6801 private:
6802  typename tuple_type<A4>::const_reference m_x;
6803 };
6804 
6805 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6806 struct const_tuple_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> {
6808  typename tuple_type<A5>::const_reference get() const { return m_x; }
6809 private:
6810  typename tuple_type<A5>::const_reference m_x;
6811 };
6812 
6813 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6814 struct const_tuple_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> {
6816  typename tuple_type<A6>::const_reference get() const { return m_x; }
6817 private:
6818  typename tuple_type<A6>::const_reference m_x;
6819 };
6820 
6821 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6822 struct const_tuple_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> {
6824  typename tuple_type<A7>::const_reference get() const { return m_x; }
6825 private:
6826  typename tuple_type<A7>::const_reference m_x;
6827 };
6828 
6829 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6830 struct const_tuple_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> {
6832  typename tuple_type<A8>::const_reference get() const { return m_x; }
6833 private:
6834  typename tuple_type<A8>::const_reference m_x;
6835 };
6836 
6837 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6838 struct const_tuple_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> {
6840  typename tuple_type<A9>::const_reference get() const { return m_x; }
6841 private:
6842  typename tuple_type<A9>::const_reference m_x;
6843 };
6844 
6845 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6846 struct const_tuple_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> {
6848  typename tuple_type<A10>::const_reference get() const { return m_x; }
6849 private:
6850  typename tuple_type<A10>::const_reference m_x;
6851 };
6852 
6853 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6854 struct const_tuple_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> {
6856  typename tuple_type<A11>::const_reference get() const { return m_x; }
6857 private:
6858  typename tuple_type<A11>::const_reference m_x;
6859 };
6860 
6861 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6862 struct const_tuple_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> {
6864  typename tuple_type<A12>::const_reference get() const { return m_x; }
6865 private:
6866  typename tuple_type<A12>::const_reference m_x;
6867 };
6868 
6869 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6870 struct const_tuple_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> {
6872  typename tuple_type<A13>::const_reference get() const { return m_x; }
6873 private:
6874  typename tuple_type<A13>::const_reference m_x;
6875 };
6876 
6877 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6878 struct const_tuple_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> {
6880  typename tuple_type<A14>::const_reference get() const { return m_x; }
6881 private:
6882  typename tuple_type<A14>::const_reference m_x;
6883 };
6884 
6885 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6886 struct const_tuple_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> {
6888  typename tuple_type<A15>::const_reference get() const { return m_x; }
6889 private:
6890  typename tuple_type<A15>::const_reference m_x;
6891 };
6892 
6893 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6894 struct const_tuple_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> {
6896  typename tuple_type<A16>::const_reference get() const { return m_x; }
6897 private:
6898  typename tuple_type<A16>::const_reference m_x;
6899 };
6900 
6901 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6902 struct const_tuple_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> {
6904  typename tuple_type<A17>::const_reference get() const { return m_x; }
6905 private:
6906  typename tuple_type<A17>::const_reference m_x;
6907 };
6908 
6909 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6910 struct const_tuple_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> {
6912  typename tuple_type<A18>::const_reference get() const { return m_x; }
6913 private:
6914  typename tuple_type<A18>::const_reference m_x;
6915 };
6916 
6917 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6918 struct const_tuple_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> {
6920  typename tuple_type<A19>::const_reference get() const { return m_x; }
6921 private:
6922  typename tuple_type<A19>::const_reference m_x;
6923 };
6924 
6925 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6926 struct const_tuple_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> {
6928  typename tuple_type<A20>::const_reference get() const { return m_x; }
6929 private:
6930  typename tuple_type<A20>::const_reference m_x;
6931 };
6932 
6933 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
6934 struct const_tuple_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> {
6936  typename tuple_type<A21>::const_reference get() const { return m_x; }
6937 private:
6938  typename tuple_type<A21>::const_reference m_x;
6939 };
6940 
6941 
6942 
6943 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
6944 struct const_tuple_element<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> {
6946  typename tuple_type<A0>::const_reference get() const { return m_x; }
6947 private:
6948  typename tuple_type<A0>::const_reference m_x;
6949 };
6950 
6951 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
6952 struct const_tuple_element<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> {
6954  typename tuple_type<A1>::const_reference get() const { return m_x; }
6955 private:
6956  typename tuple_type<A1>::const_reference m_x;
6957 };
6958 
6959 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
6960 struct const_tuple_element<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> {
6962  typename tuple_type<A2>::const_reference get() const { return m_x; }
6963 private:
6964  typename tuple_type<A2>::const_reference m_x;
6965 };
6966 
6967 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
6968 struct const_tuple_element<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> {
6970  typename tuple_type<A3>::const_reference get() const { return m_x; }
6971 private:
6972  typename tuple_type<A3>::const_reference m_x;
6973 };
6974 
6975 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
6976 struct const_tuple_element<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> {
6978  typename tuple_type<A4>::const_reference get() const { return m_x; }
6979 private:
6980  typename tuple_type<A4>::const_reference m_x;
6981 };
6982 
6983 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
6984 struct const_tuple_element<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> {
6986  typename tuple_type<A5>::const_reference get() const { return m_x; }
6987 private:
6988  typename tuple_type<A5>::const_reference m_x;
6989 };
6990 
6991 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
6992 struct const_tuple_element<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> {
6994  typename tuple_type<A6>::const_reference get() const { return m_x; }
6995 private:
6996  typename tuple_type<A6>::const_reference m_x;
6997 };
6998 
6999 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7000 struct const_tuple_element<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> {
7002  typename tuple_type<A7>::const_reference get() const { return m_x; }
7003 private:
7004  typename tuple_type<A7>::const_reference m_x;
7005 };
7006 
7007 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7008 struct const_tuple_element<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> {
7010  typename tuple_type<A8>::const_reference get() const { return m_x; }
7011 private:
7012  typename tuple_type<A8>::const_reference m_x;
7013 };
7014 
7015 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7016 struct const_tuple_element<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> {
7018  typename tuple_type<A9>::const_reference get() const { return m_x; }
7019 private:
7020  typename tuple_type<A9>::const_reference m_x;
7021 };
7022 
7023 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7024 struct const_tuple_element<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> {
7026  typename tuple_type<A10>::const_reference get() const { return m_x; }
7027 private:
7028  typename tuple_type<A10>::const_reference m_x;
7029 };
7030 
7031 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7032 struct const_tuple_element<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> {
7034  typename tuple_type<A11>::const_reference get() const { return m_x; }
7035 private:
7036  typename tuple_type<A11>::const_reference m_x;
7037 };
7038 
7039 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7040 struct const_tuple_element<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> {
7042  typename tuple_type<A12>::const_reference get() const { return m_x; }
7043 private:
7044  typename tuple_type<A12>::const_reference m_x;
7045 };
7046 
7047 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7048 struct const_tuple_element<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> {
7050  typename tuple_type<A13>::const_reference get() const { return m_x; }
7051 private:
7052  typename tuple_type<A13>::const_reference m_x;
7053 };
7054 
7055 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7056 struct const_tuple_element<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> {
7058  typename tuple_type<A14>::const_reference get() const { return m_x; }
7059 private:
7060  typename tuple_type<A14>::const_reference m_x;
7061 };
7062 
7063 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7064 struct const_tuple_element<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> {
7066  typename tuple_type<A15>::const_reference get() const { return m_x; }
7067 private:
7068  typename tuple_type<A15>::const_reference m_x;
7069 };
7070 
7071 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7072 struct const_tuple_element<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> {
7074  typename tuple_type<A16>::const_reference get() const { return m_x; }
7075 private:
7076  typename tuple_type<A16>::const_reference m_x;
7077 };
7078 
7079 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7080 struct const_tuple_element<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> {
7082  typename tuple_type<A17>::const_reference get() const { return m_x; }
7083 private:
7084  typename tuple_type<A17>::const_reference m_x;
7085 };
7086 
7087 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7088 struct const_tuple_element<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> {
7090  typename tuple_type<A18>::const_reference get() const { return m_x; }
7091 private:
7092  typename tuple_type<A18>::const_reference m_x;
7093 };
7094 
7095 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7096 struct const_tuple_element<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> {
7098  typename tuple_type<A19>::const_reference get() const { return m_x; }
7099 private:
7100  typename tuple_type<A19>::const_reference m_x;
7101 };
7102 
7103 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7104 struct const_tuple_element<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> {
7106  typename tuple_type<A20>::const_reference get() const { return m_x; }
7107 private:
7108  typename tuple_type<A20>::const_reference m_x;
7109 };
7110 
7111 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7112 struct const_tuple_element<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> {
7114  typename tuple_type<A21>::const_reference get() const { return m_x; }
7115 private:
7116  typename tuple_type<A21>::const_reference m_x;
7117 };
7118 
7119 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
7120 struct const_tuple_element<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> {
7122  typename tuple_type<A22>::const_reference get() const { return m_x; }
7123 private:
7124  typename tuple_type<A22>::const_reference m_x;
7125 };
7126 
7127 
7128 
7129 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7130 struct const_tuple_element<tuple<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> {
7132  typename tuple_type<A0>::const_reference get() const { return m_x; }
7133 private:
7134  typename tuple_type<A0>::const_reference m_x;
7135 };
7136 
7137 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7138 struct const_tuple_element<tuple<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> {
7140  typename tuple_type<A1>::const_reference get() const { return m_x; }
7141 private:
7142  typename tuple_type<A1>::const_reference m_x;
7143 };
7144 
7145 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7146 struct const_tuple_element<tuple<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> {
7148  typename tuple_type<A2>::const_reference get() const { return m_x; }
7149 private:
7150  typename tuple_type<A2>::const_reference m_x;
7151 };
7152 
7153 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7154 struct const_tuple_element<tuple<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> {
7156  typename tuple_type<A3>::const_reference get() const { return m_x; }
7157 private:
7158  typename tuple_type<A3>::const_reference m_x;
7159 };
7160 
7161 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7162 struct const_tuple_element<tuple<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> {
7164  typename tuple_type<A4>::const_reference get() const { return m_x; }
7165 private:
7166  typename tuple_type<A4>::const_reference m_x;
7167 };
7168 
7169 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7170 struct const_tuple_element<tuple<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> {
7172  typename tuple_type<A5>::const_reference get() const { return m_x; }
7173 private:
7174  typename tuple_type<A5>::const_reference m_x;
7175 };
7176 
7177 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7178 struct const_tuple_element<tuple<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> {
7180  typename tuple_type<A6>::const_reference get() const { return m_x; }
7181 private:
7182  typename tuple_type<A6>::const_reference m_x;
7183 };
7184 
7185 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7186 struct const_tuple_element<tuple<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> {
7188  typename tuple_type<A7>::const_reference get() const { return m_x; }
7189 private:
7190  typename tuple_type<A7>::const_reference m_x;
7191 };
7192 
7193 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7194 struct const_tuple_element<tuple<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> {
7196  typename tuple_type<A8>::const_reference get() const { return m_x; }
7197 private:
7198  typename tuple_type<A8>::const_reference m_x;
7199 };
7200 
7201 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7202 struct const_tuple_element<tuple<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> {
7204  typename tuple_type<A9>::const_reference get() const { return m_x; }
7205 private:
7206  typename tuple_type<A9>::const_reference m_x;
7207 };
7208 
7209 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7210 struct const_tuple_element<tuple<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> {
7212  typename tuple_type<A10>::const_reference get() const { return m_x; }
7213 private:
7214  typename tuple_type<A10>::const_reference m_x;
7215 };
7216 
7217 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7218 struct const_tuple_element<tuple<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> {
7220  typename tuple_type<A11>::const_reference get() const { return m_x; }
7221 private:
7222  typename tuple_type<A11>::const_reference m_x;
7223 };
7224 
7225 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7226 struct const_tuple_element<tuple<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> {
7228  typename tuple_type<A12>::const_reference get() const { return m_x; }
7229 private:
7230  typename tuple_type<A12>::const_reference m_x;
7231 };
7232 
7233 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7234 struct const_tuple_element<tuple<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> {
7236  typename tuple_type<A13>::const_reference get() const { return m_x; }
7237 private:
7238  typename tuple_type<A13>::const_reference m_x;
7239 };
7240 
7241 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7242 struct const_tuple_element<tuple<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> {
7244  typename tuple_type<A14>::const_reference get() const { return m_x; }
7245 private:
7246  typename tuple_type<A14>::const_reference m_x;
7247 };
7248 
7249 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7250 struct const_tuple_element<tuple<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> {
7252  typename tuple_type<A15>::const_reference get() const { return m_x; }
7253 private:
7254  typename tuple_type<A15>::const_reference m_x;
7255 };
7256 
7257 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7258 struct const_tuple_element<tuple<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> {
7260  typename tuple_type<A16>::const_reference get() const { return m_x; }
7261 private:
7262  typename tuple_type<A16>::const_reference m_x;
7263 };
7264 
7265 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7266 struct const_tuple_element<tuple<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> {
7268  typename tuple_type<A17>::const_reference get() const { return m_x; }
7269 private:
7270  typename tuple_type<A17>::const_reference m_x;
7271 };
7272 
7273 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7274 struct const_tuple_element<tuple<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> {
7276  typename tuple_type<A18>::const_reference get() const { return m_x; }
7277 private:
7278  typename tuple_type<A18>::const_reference m_x;
7279 };
7280 
7281 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7282 struct const_tuple_element<tuple<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> {
7284  typename tuple_type<A19>::const_reference get() const { return m_x; }
7285 private:
7286  typename tuple_type<A19>::const_reference m_x;
7287 };
7288 
7289 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7290 struct const_tuple_element<tuple<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> {
7292  typename tuple_type<A20>::const_reference get() const { return m_x; }
7293 private:
7294  typename tuple_type<A20>::const_reference m_x;
7295 };
7296 
7297 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7298 struct const_tuple_element<tuple<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> {
7300  typename tuple_type<A21>::const_reference get() const { return m_x; }
7301 private:
7302  typename tuple_type<A21>::const_reference m_x;
7303 };
7304 
7305 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7306 struct const_tuple_element<tuple<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> {
7308  typename tuple_type<A22>::const_reference get() const { return m_x; }
7309 private:
7310  typename tuple_type<A22>::const_reference m_x;
7311 };
7312 
7313 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
7314 struct const_tuple_element<tuple<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> {
7316  typename tuple_type<A23>::const_reference get() const { return m_x; }
7317 private:
7318  typename tuple_type<A23>::const_reference m_x;
7319 };
7320 
7321 
7322 
7323 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7324 struct const_tuple_element<tuple<A0, 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> {
7326  typename tuple_type<A0>::const_reference get() const { return m_x; }
7327 private:
7328  typename tuple_type<A0>::const_reference m_x;
7329 };
7330 
7331 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7332 struct const_tuple_element<tuple<A0, 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> {
7334  typename tuple_type<A1>::const_reference get() const { return m_x; }
7335 private:
7336  typename tuple_type<A1>::const_reference m_x;
7337 };
7338 
7339 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7340 struct const_tuple_element<tuple<A0, 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> {
7342  typename tuple_type<A2>::const_reference get() const { return m_x; }
7343 private:
7344  typename tuple_type<A2>::const_reference m_x;
7345 };
7346 
7347 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7348 struct const_tuple_element<tuple<A0, 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> {
7350  typename tuple_type<A3>::const_reference get() const { return m_x; }
7351 private:
7352  typename tuple_type<A3>::const_reference m_x;
7353 };
7354 
7355 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7356 struct const_tuple_element<tuple<A0, 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> {
7358  typename tuple_type<A4>::const_reference get() const { return m_x; }
7359 private:
7360  typename tuple_type<A4>::const_reference m_x;
7361 };
7362 
7363 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7364 struct const_tuple_element<tuple<A0, 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> {
7366  typename tuple_type<A5>::const_reference get() const { return m_x; }
7367 private:
7368  typename tuple_type<A5>::const_reference m_x;
7369 };
7370 
7371 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7372 struct const_tuple_element<tuple<A0, 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> {
7374  typename tuple_type<A6>::const_reference get() const { return m_x; }
7375 private:
7376  typename tuple_type<A6>::const_reference m_x;
7377 };
7378 
7379 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7380 struct const_tuple_element<tuple<A0, 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> {
7382  typename tuple_type<A7>::const_reference get() const { return m_x; }
7383 private:
7384  typename tuple_type<A7>::const_reference m_x;
7385 };
7386 
7387 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7388 struct const_tuple_element<tuple<A0, 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> {
7390  typename tuple_type<A8>::const_reference get() const { return m_x; }
7391 private:
7392  typename tuple_type<A8>::const_reference m_x;
7393 };
7394 
7395 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7396 struct const_tuple_element<tuple<A0, 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> {
7398  typename tuple_type<A9>::const_reference get() const { return m_x; }
7399 private:
7400  typename tuple_type<A9>::const_reference m_x;
7401 };
7402 
7403 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7404 struct const_tuple_element<tuple<A0, 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> {
7406  typename tuple_type<A10>::const_reference get() const { return m_x; }
7407 private:
7408  typename tuple_type<A10>::const_reference m_x;
7409 };
7410 
7411 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7412 struct const_tuple_element<tuple<A0, 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> {
7414  typename tuple_type<A11>::const_reference get() const { return m_x; }
7415 private:
7416  typename tuple_type<A11>::const_reference m_x;
7417 };
7418 
7419 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7420 struct const_tuple_element<tuple<A0, 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> {
7422  typename tuple_type<A12>::const_reference get() const { return m_x; }
7423 private:
7424  typename tuple_type<A12>::const_reference m_x;
7425 };
7426 
7427 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7428 struct const_tuple_element<tuple<A0, 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> {
7430  typename tuple_type<A13>::const_reference get() const { return m_x; }
7431 private:
7432  typename tuple_type<A13>::const_reference m_x;
7433 };
7434 
7435 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7436 struct const_tuple_element<tuple<A0, 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> {
7438  typename tuple_type<A14>::const_reference get() const { return m_x; }
7439 private:
7440  typename tuple_type<A14>::const_reference m_x;
7441 };
7442 
7443 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7444 struct const_tuple_element<tuple<A0, 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> {
7446  typename tuple_type<A15>::const_reference get() const { return m_x; }
7447 private:
7448  typename tuple_type<A15>::const_reference m_x;
7449 };
7450 
7451 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7452 struct const_tuple_element<tuple<A0, 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> {
7454  typename tuple_type<A16>::const_reference get() const { return m_x; }
7455 private:
7456  typename tuple_type<A16>::const_reference m_x;
7457 };
7458 
7459 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7460 struct const_tuple_element<tuple<A0, 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> {
7462  typename tuple_type<A17>::const_reference get() const { return m_x; }
7463 private:
7464  typename tuple_type<A17>::const_reference m_x;
7465 };
7466 
7467 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7468 struct const_tuple_element<tuple<A0, 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> {
7470  typename tuple_type<A18>::const_reference get() const { return m_x; }
7471 private:
7472  typename tuple_type<A18>::const_reference m_x;
7473 };
7474 
7475 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7476 struct const_tuple_element<tuple<A0, 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> {
7478  typename tuple_type<A19>::const_reference get() const { return m_x; }
7479 private:
7480  typename tuple_type<A19>::const_reference m_x;
7481 };
7482 
7483 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7484 struct const_tuple_element<tuple<A0, 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> {
7486  typename tuple_type<A20>::const_reference get() const { return m_x; }
7487 private:
7488  typename tuple_type<A20>::const_reference m_x;
7489 };
7490 
7491 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7492 struct const_tuple_element<tuple<A0, 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> {
7494  typename tuple_type<A21>::const_reference get() const { return m_x; }
7495 private:
7496  typename tuple_type<A21>::const_reference m_x;
7497 };
7498 
7499 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7500 struct const_tuple_element<tuple<A0, 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> {
7502  typename tuple_type<A22>::const_reference get() const { return m_x; }
7503 private:
7504  typename tuple_type<A22>::const_reference m_x;
7505 };
7506 
7507 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7508 struct const_tuple_element<tuple<A0, 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> {
7510  typename tuple_type<A23>::const_reference get() const { return m_x; }
7511 private:
7512  typename tuple_type<A23>::const_reference m_x;
7513 };
7514 
7515 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
7516 struct const_tuple_element<tuple<A0, 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> {
7518  typename tuple_type<A24>::const_reference get() const { return m_x; }
7519 private:
7520  typename tuple_type<A24>::const_reference m_x;
7521 };
7522 
7523 
7524 
7525 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7526 struct const_tuple_element<tuple<A0, A1, 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> {
7528  typename tuple_type<A0>::const_reference get() const { return m_x; }
7529 private:
7530  typename tuple_type<A0>::const_reference m_x;
7531 };
7532 
7533 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7534 struct const_tuple_element<tuple<A0, A1, 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> {
7536  typename tuple_type<A1>::const_reference get() const { return m_x; }
7537 private:
7538  typename tuple_type<A1>::const_reference m_x;
7539 };
7540 
7541 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7542 struct const_tuple_element<tuple<A0, A1, 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> {
7544  typename tuple_type<A2>::const_reference get() const { return m_x; }
7545 private:
7546  typename tuple_type<A2>::const_reference m_x;
7547 };
7548 
7549 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7550 struct const_tuple_element<tuple<A0, A1, 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> {
7552  typename tuple_type<A3>::const_reference get() const { return m_x; }
7553 private:
7554  typename tuple_type<A3>::const_reference m_x;
7555 };
7556 
7557 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7558 struct const_tuple_element<tuple<A0, A1, 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> {
7560  typename tuple_type<A4>::const_reference get() const { return m_x; }
7561 private:
7562  typename tuple_type<A4>::const_reference m_x;
7563 };
7564 
7565 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7566 struct const_tuple_element<tuple<A0, A1, 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> {
7568  typename tuple_type<A5>::const_reference get() const { return m_x; }
7569 private:
7570  typename tuple_type<A5>::const_reference m_x;
7571 };
7572 
7573 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7574 struct const_tuple_element<tuple<A0, A1, 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> {
7576  typename tuple_type<A6>::const_reference get() const { return m_x; }
7577 private:
7578  typename tuple_type<A6>::const_reference m_x;
7579 };
7580 
7581 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7582 struct const_tuple_element<tuple<A0, A1, 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> {
7584  typename tuple_type<A7>::const_reference get() const { return m_x; }
7585 private:
7586  typename tuple_type<A7>::const_reference m_x;
7587 };
7588 
7589 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7590 struct const_tuple_element<tuple<A0, A1, 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> {
7592  typename tuple_type<A8>::const_reference get() const { return m_x; }
7593 private:
7594  typename tuple_type<A8>::const_reference m_x;
7595 };
7596 
7597 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7598 struct const_tuple_element<tuple<A0, A1, 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> {
7600  typename tuple_type<A9>::const_reference get() const { return m_x; }
7601 private:
7602  typename tuple_type<A9>::const_reference m_x;
7603 };
7604 
7605 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7606 struct const_tuple_element<tuple<A0, A1, 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> {
7608  typename tuple_type<A10>::const_reference get() const { return m_x; }
7609 private:
7610  typename tuple_type<A10>::const_reference m_x;
7611 };
7612 
7613 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7614 struct const_tuple_element<tuple<A0, A1, 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> {
7616  typename tuple_type<A11>::const_reference get() const { return m_x; }
7617 private:
7618  typename tuple_type<A11>::const_reference m_x;
7619 };
7620 
7621 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7622 struct const_tuple_element<tuple<A0, A1, 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> {
7624  typename tuple_type<A12>::const_reference get() const { return m_x; }
7625 private:
7626  typename tuple_type<A12>::const_reference m_x;
7627 };
7628 
7629 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7630 struct const_tuple_element<tuple<A0, A1, 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> {
7632  typename tuple_type<A13>::const_reference get() const { return m_x; }
7633 private:
7634  typename tuple_type<A13>::const_reference m_x;
7635 };
7636 
7637 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7638 struct const_tuple_element<tuple<A0, A1, 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> {
7640  typename tuple_type<A14>::const_reference get() const { return m_x; }
7641 private:
7642  typename tuple_type<A14>::const_reference m_x;
7643 };
7644 
7645 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7646 struct const_tuple_element<tuple<A0, A1, 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> {
7648  typename tuple_type<A15>::const_reference get() const { return m_x; }
7649 private:
7650  typename tuple_type<A15>::const_reference m_x;
7651 };
7652 
7653 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7654 struct const_tuple_element<tuple<A0, A1, 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> {
7656  typename tuple_type<A16>::const_reference get() const { return m_x; }
7657 private:
7658  typename tuple_type<A16>::const_reference m_x;
7659 };
7660 
7661 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7662 struct const_tuple_element<tuple<A0, A1, 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> {
7664  typename tuple_type<A17>::const_reference get() const { return m_x; }
7665 private:
7666  typename tuple_type<A17>::const_reference m_x;
7667 };
7668 
7669 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7670 struct const_tuple_element<tuple<A0, A1, 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> {
7672  typename tuple_type<A18>::const_reference get() const { return m_x; }
7673 private:
7674  typename tuple_type<A18>::const_reference m_x;
7675 };
7676 
7677 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7678 struct const_tuple_element<tuple<A0, A1, 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> {
7680  typename tuple_type<A19>::const_reference get() const { return m_x; }
7681 private:
7682  typename tuple_type<A19>::const_reference m_x;
7683 };
7684 
7685 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7686 struct const_tuple_element<tuple<A0, A1, 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> {
7688  typename tuple_type<A20>::const_reference get() const { return m_x; }
7689 private:
7690  typename tuple_type<A20>::const_reference m_x;
7691 };
7692 
7693 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7694 struct const_tuple_element<tuple<A0, A1, 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> {
7696  typename tuple_type<A21>::const_reference get() const { return m_x; }
7697 private:
7698  typename tuple_type<A21>::const_reference m_x;
7699 };
7700 
7701 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7702 struct const_tuple_element<tuple<A0, A1, 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> {
7704  typename tuple_type<A22>::const_reference get() const { return m_x; }
7705 private:
7706  typename tuple_type<A22>::const_reference m_x;
7707 };
7708 
7709 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7710 struct const_tuple_element<tuple<A0, A1, 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> {
7712  typename tuple_type<A23>::const_reference get() const { return m_x; }
7713 private:
7714  typename tuple_type<A23>::const_reference m_x;
7715 };
7716 
7717 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7718 struct const_tuple_element<tuple<A0, A1, 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> {
7720  typename tuple_type<A24>::const_reference get() const { return m_x; }
7721 private:
7722  typename tuple_type<A24>::const_reference m_x;
7723 };
7724 
7725 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
7726 struct const_tuple_element<tuple<A0, A1, 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> {
7728  typename tuple_type<A25>::const_reference get() const { return m_x; }
7729 private:
7730  typename tuple_type<A25>::const_reference m_x;
7731 };
7732 
7733 
7734 
7735 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7736 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7738  typename tuple_type<A0>::const_reference get() const { return m_x; }
7739 private:
7740  typename tuple_type<A0>::const_reference m_x;
7741 };
7742 
7743 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7744 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7746  typename tuple_type<A1>::const_reference get() const { return m_x; }
7747 private:
7748  typename tuple_type<A1>::const_reference m_x;
7749 };
7750 
7751 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7752 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7754  typename tuple_type<A2>::const_reference get() const { return m_x; }
7755 private:
7756  typename tuple_type<A2>::const_reference m_x;
7757 };
7758 
7759 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7760 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7762  typename tuple_type<A3>::const_reference get() const { return m_x; }
7763 private:
7764  typename tuple_type<A3>::const_reference m_x;
7765 };
7766 
7767 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7768 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7770  typename tuple_type<A4>::const_reference get() const { return m_x; }
7771 private:
7772  typename tuple_type<A4>::const_reference m_x;
7773 };
7774 
7775 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7776 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7778  typename tuple_type<A5>::const_reference get() const { return m_x; }
7779 private:
7780  typename tuple_type<A5>::const_reference m_x;
7781 };
7782 
7783 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7784 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7786  typename tuple_type<A6>::const_reference get() const { return m_x; }
7787 private:
7788  typename tuple_type<A6>::const_reference m_x;
7789 };
7790 
7791 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7792 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7794  typename tuple_type<A7>::const_reference get() const { return m_x; }
7795 private:
7796  typename tuple_type<A7>::const_reference m_x;
7797 };
7798 
7799 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7800 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7802  typename tuple_type<A8>::const_reference get() const { return m_x; }
7803 private:
7804  typename tuple_type<A8>::const_reference m_x;
7805 };
7806 
7807 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7808 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7810  typename tuple_type<A9>::const_reference get() const { return m_x; }
7811 private:
7812  typename tuple_type<A9>::const_reference m_x;
7813 };
7814 
7815 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7816 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7818  typename tuple_type<A10>::const_reference get() const { return m_x; }
7819 private:
7820  typename tuple_type<A10>::const_reference m_x;
7821 };
7822 
7823 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7824 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7826  typename tuple_type<A11>::const_reference get() const { return m_x; }
7827 private:
7828  typename tuple_type<A11>::const_reference m_x;
7829 };
7830 
7831 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7832 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7834  typename tuple_type<A12>::const_reference get() const { return m_x; }
7835 private:
7836  typename tuple_type<A12>::const_reference m_x;
7837 };
7838 
7839 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7840 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7842  typename tuple_type<A13>::const_reference get() const { return m_x; }
7843 private:
7844  typename tuple_type<A13>::const_reference m_x;
7845 };
7846 
7847 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7848 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7850  typename tuple_type<A14>::const_reference get() const { return m_x; }
7851 private:
7852  typename tuple_type<A14>::const_reference m_x;
7853 };
7854 
7855 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7856 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7858  typename tuple_type<A15>::const_reference get() const { return m_x; }
7859 private:
7860  typename tuple_type<A15>::const_reference m_x;
7861 };
7862 
7863 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7864 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7866  typename tuple_type<A16>::const_reference get() const { return m_x; }
7867 private:
7868  typename tuple_type<A16>::const_reference m_x;
7869 };
7870 
7871 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7872 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7874  typename tuple_type<A17>::const_reference get() const { return m_x; }
7875 private:
7876  typename tuple_type<A17>::const_reference m_x;
7877 };
7878 
7879 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7880 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7882  typename tuple_type<A18>::const_reference get() const { return m_x; }
7883 private:
7884  typename tuple_type<A18>::const_reference m_x;
7885 };
7886 
7887 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7888 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7890  typename tuple_type<A19>::const_reference get() const { return m_x; }
7891 private:
7892  typename tuple_type<A19>::const_reference m_x;
7893 };
7894 
7895 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7896 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7898  typename tuple_type<A20>::const_reference get() const { return m_x; }
7899 private:
7900  typename tuple_type<A20>::const_reference m_x;
7901 };
7902 
7903 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7904 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7906  typename tuple_type<A21>::const_reference get() const { return m_x; }
7907 private:
7908  typename tuple_type<A21>::const_reference m_x;
7909 };
7910 
7911 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7912 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7914  typename tuple_type<A22>::const_reference get() const { return m_x; }
7915 private:
7916  typename tuple_type<A22>::const_reference m_x;
7917 };
7918 
7919 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7920 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7922  typename tuple_type<A23>::const_reference get() const { return m_x; }
7923 private:
7924  typename tuple_type<A23>::const_reference m_x;
7925 };
7926 
7927 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7928 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7930  typename tuple_type<A24>::const_reference get() const { return m_x; }
7931 private:
7932  typename tuple_type<A24>::const_reference m_x;
7933 };
7934 
7935 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7936 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7938  typename tuple_type<A25>::const_reference get() const { return m_x; }
7939 private:
7940  typename tuple_type<A25>::const_reference m_x;
7941 };
7942 
7943 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
7944 struct const_tuple_element<tuple<A0, A1, A2, 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> {
7946  typename tuple_type<A26>::const_reference get() const { return m_x; }
7947 private:
7948  typename tuple_type<A26>::const_reference m_x;
7949 };
7950 
7951 
7952 
7953 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
7954 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
7956  typename tuple_type<A0>::const_reference get() const { return m_x; }
7957 private:
7958  typename tuple_type<A0>::const_reference m_x;
7959 };
7960 
7961 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
7962 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
7964  typename tuple_type<A1>::const_reference get() const { return m_x; }
7965 private:
7966  typename tuple_type<A1>::const_reference m_x;
7967 };
7968 
7969 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
7970 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
7972  typename tuple_type<A2>::const_reference get() const { return m_x; }
7973 private:
7974  typename tuple_type<A2>::const_reference m_x;
7975 };
7976 
7977 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
7978 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
7980  typename tuple_type<A3>::const_reference get() const { return m_x; }
7981 private:
7982  typename tuple_type<A3>::const_reference m_x;
7983 };
7984 
7985 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
7986 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
7988  typename tuple_type<A4>::const_reference get() const { return m_x; }
7989 private:
7990  typename tuple_type<A4>::const_reference m_x;
7991 };
7992 
7993 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
7994 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
7996  typename tuple_type<A5>::const_reference get() const { return m_x; }
7997 private:
7998  typename tuple_type<A5>::const_reference m_x;
7999 };
8000 
8001 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8002 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
8004  typename tuple_type<A6>::const_reference get() const { return m_x; }
8005 private:
8006  typename tuple_type<A6>::const_reference m_x;
8007 };
8008 
8009 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8010 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
8012  typename tuple_type<A7>::const_reference get() const { return m_x; }
8013 private:
8014  typename tuple_type<A7>::const_reference m_x;
8015 };
8016 
8017 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8018 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
8020  typename tuple_type<A8>::const_reference get() const { return m_x; }
8021 private:
8022  typename tuple_type<A8>::const_reference m_x;
8023 };
8024 
8025 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8026 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
8028  typename tuple_type<A9>::const_reference get() const { return m_x; }
8029 private:
8030  typename tuple_type<A9>::const_reference m_x;
8031 };
8032 
8033 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8034 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
8036  typename tuple_type<A10>::const_reference get() const { return m_x; }
8037 private:
8038  typename tuple_type<A10>::const_reference m_x;
8039 };
8040 
8041 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8042 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
8044  typename tuple_type<A11>::const_reference get() const { return m_x; }
8045 private:
8046  typename tuple_type<A11>::const_reference m_x;
8047 };
8048 
8049 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8050 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
8052  typename tuple_type<A12>::const_reference get() const { return m_x; }
8053 private:
8054  typename tuple_type<A12>::const_reference m_x;
8055 };
8056 
8057 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8058 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
8060  typename tuple_type<A13>::const_reference get() const { return m_x; }
8061 private:
8062  typename tuple_type<A13>::const_reference m_x;
8063 };
8064 
8065 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8066 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
8068  typename tuple_type<A14>::const_reference get() const { return m_x; }
8069 private:
8070  typename tuple_type<A14>::const_reference m_x;
8071 };
8072 
8073 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8074 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
8076  typename tuple_type<A15>::const_reference get() const { return m_x; }
8077 private:
8078  typename tuple_type<A15>::const_reference m_x;
8079 };
8080 
8081 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8082 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
8084  typename tuple_type<A16>::const_reference get() const { return m_x; }
8085 private:
8086  typename tuple_type<A16>::const_reference m_x;
8087 };
8088 
8089 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8090 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
8092  typename tuple_type<A17>::const_reference get() const { return m_x; }
8093 private:
8094  typename tuple_type<A17>::const_reference m_x;
8095 };
8096 
8097 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8098 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
8100  typename tuple_type<A18>::const_reference get() const { return m_x; }
8101 private:
8102  typename tuple_type<A18>::const_reference m_x;
8103 };
8104 
8105 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8106 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
8108  typename tuple_type<A19>::const_reference get() const { return m_x; }
8109 private:
8110  typename tuple_type<A19>::const_reference m_x;
8111 };
8112 
8113 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8114 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
8116  typename tuple_type<A20>::const_reference get() const { return m_x; }
8117 private:
8118  typename tuple_type<A20>::const_reference m_x;
8119 };
8120 
8121 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8122 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
8124  typename tuple_type<A21>::const_reference get() const { return m_x; }
8125 private:
8126  typename tuple_type<A21>::const_reference m_x;
8127 };
8128 
8129 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8130 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
8132  typename tuple_type<A22>::const_reference get() const { return m_x; }
8133 private:
8134  typename tuple_type<A22>::const_reference m_x;
8135 };
8136 
8137 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8138 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
8140  typename tuple_type<A23>::const_reference get() const { return m_x; }
8141 private:
8142  typename tuple_type<A23>::const_reference m_x;
8143 };
8144 
8145 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8146 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
8148  typename tuple_type<A24>::const_reference get() const { return m_x; }
8149 private:
8150  typename tuple_type<A24>::const_reference m_x;
8151 };
8152 
8153 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8154 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
8156  typename tuple_type<A25>::const_reference get() const { return m_x; }
8157 private:
8158  typename tuple_type<A25>::const_reference m_x;
8159 };
8160 
8161 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8162 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
8164  typename tuple_type<A26>::const_reference get() const { return m_x; }
8165 private:
8166  typename tuple_type<A26>::const_reference m_x;
8167 };
8168 
8169 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
8170 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
8172  typename tuple_type<A27>::const_reference get() const { return m_x; }
8173 private:
8174  typename tuple_type<A27>::const_reference m_x;
8175 };
8176 
8177 
8178 
8179 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8180 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8182  typename tuple_type<A0>::const_reference get() const { return m_x; }
8183 private:
8184  typename tuple_type<A0>::const_reference m_x;
8185 };
8186 
8187 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8188 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8190  typename tuple_type<A1>::const_reference get() const { return m_x; }
8191 private:
8192  typename tuple_type<A1>::const_reference m_x;
8193 };
8194 
8195 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8196 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8198  typename tuple_type<A2>::const_reference get() const { return m_x; }
8199 private:
8200  typename tuple_type<A2>::const_reference m_x;
8201 };
8202 
8203 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8204 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8206  typename tuple_type<A3>::const_reference get() const { return m_x; }
8207 private:
8208  typename tuple_type<A3>::const_reference m_x;
8209 };
8210 
8211 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8212 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8214  typename tuple_type<A4>::const_reference get() const { return m_x; }
8215 private:
8216  typename tuple_type<A4>::const_reference m_x;
8217 };
8218 
8219 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8220 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8222  typename tuple_type<A5>::const_reference get() const { return m_x; }
8223 private:
8224  typename tuple_type<A5>::const_reference m_x;
8225 };
8226 
8227 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8228 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8230  typename tuple_type<A6>::const_reference get() const { return m_x; }
8231 private:
8232  typename tuple_type<A6>::const_reference m_x;
8233 };
8234 
8235 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8236 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8238  typename tuple_type<A7>::const_reference get() const { return m_x; }
8239 private:
8240  typename tuple_type<A7>::const_reference m_x;
8241 };
8242 
8243 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8244 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8246  typename tuple_type<A8>::const_reference get() const { return m_x; }
8247 private:
8248  typename tuple_type<A8>::const_reference m_x;
8249 };
8250 
8251 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8252 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8254  typename tuple_type<A9>::const_reference get() const { return m_x; }
8255 private:
8256  typename tuple_type<A9>::const_reference m_x;
8257 };
8258 
8259 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8260 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8262  typename tuple_type<A10>::const_reference get() const { return m_x; }
8263 private:
8264  typename tuple_type<A10>::const_reference m_x;
8265 };
8266 
8267 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8268 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8270  typename tuple_type<A11>::const_reference get() const { return m_x; }
8271 private:
8272  typename tuple_type<A11>::const_reference m_x;
8273 };
8274 
8275 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8276 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8278  typename tuple_type<A12>::const_reference get() const { return m_x; }
8279 private:
8280  typename tuple_type<A12>::const_reference m_x;
8281 };
8282 
8283 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8284 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8286  typename tuple_type<A13>::const_reference get() const { return m_x; }
8287 private:
8288  typename tuple_type<A13>::const_reference m_x;
8289 };
8290 
8291 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8292 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8294  typename tuple_type<A14>::const_reference get() const { return m_x; }
8295 private:
8296  typename tuple_type<A14>::const_reference m_x;
8297 };
8298 
8299 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8300 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8302  typename tuple_type<A15>::const_reference get() const { return m_x; }
8303 private:
8304  typename tuple_type<A15>::const_reference m_x;
8305 };
8306 
8307 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8308 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8310  typename tuple_type<A16>::const_reference get() const { return m_x; }
8311 private:
8312  typename tuple_type<A16>::const_reference m_x;
8313 };
8314 
8315 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8316 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8318  typename tuple_type<A17>::const_reference get() const { return m_x; }
8319 private:
8320  typename tuple_type<A17>::const_reference m_x;
8321 };
8322 
8323 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8324 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8326  typename tuple_type<A18>::const_reference get() const { return m_x; }
8327 private:
8328  typename tuple_type<A18>::const_reference m_x;
8329 };
8330 
8331 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8332 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8334  typename tuple_type<A19>::const_reference get() const { return m_x; }
8335 private:
8336  typename tuple_type<A19>::const_reference m_x;
8337 };
8338 
8339 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8340 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8342  typename tuple_type<A20>::const_reference get() const { return m_x; }
8343 private:
8344  typename tuple_type<A20>::const_reference m_x;
8345 };
8346 
8347 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8348 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8350  typename tuple_type<A21>::const_reference get() const { return m_x; }
8351 private:
8352  typename tuple_type<A21>::const_reference m_x;
8353 };
8354 
8355 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8356 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8358  typename tuple_type<A22>::const_reference get() const { return m_x; }
8359 private:
8360  typename tuple_type<A22>::const_reference m_x;
8361 };
8362 
8363 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8364 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8366  typename tuple_type<A23>::const_reference get() const { return m_x; }
8367 private:
8368  typename tuple_type<A23>::const_reference m_x;
8369 };
8370 
8371 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8372 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8374  typename tuple_type<A24>::const_reference get() const { return m_x; }
8375 private:
8376  typename tuple_type<A24>::const_reference m_x;
8377 };
8378 
8379 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8380 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8382  typename tuple_type<A25>::const_reference get() const { return m_x; }
8383 private:
8384  typename tuple_type<A25>::const_reference m_x;
8385 };
8386 
8387 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8388 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8390  typename tuple_type<A26>::const_reference get() const { return m_x; }
8391 private:
8392  typename tuple_type<A26>::const_reference m_x;
8393 };
8394 
8395 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8396 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8398  typename tuple_type<A27>::const_reference get() const { return m_x; }
8399 private:
8400  typename tuple_type<A27>::const_reference m_x;
8401 };
8402 
8403 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
8404 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8406  typename tuple_type<A28>::const_reference get() const { return m_x; }
8407 private:
8408  typename tuple_type<A28>::const_reference m_x;
8409 };
8410 
8411 
8412 
8413 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8414 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8416  typename tuple_type<A0>::const_reference get() const { return m_x; }
8417 private:
8418  typename tuple_type<A0>::const_reference m_x;
8419 };
8420 
8421 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8422 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8424  typename tuple_type<A1>::const_reference get() const { return m_x; }
8425 private:
8426  typename tuple_type<A1>::const_reference m_x;
8427 };
8428 
8429 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8430 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8432  typename tuple_type<A2>::const_reference get() const { return m_x; }
8433 private:
8434  typename tuple_type<A2>::const_reference m_x;
8435 };
8436 
8437 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8438 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8440  typename tuple_type<A3>::const_reference get() const { return m_x; }
8441 private:
8442  typename tuple_type<A3>::const_reference m_x;
8443 };
8444 
8445 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8446 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8448  typename tuple_type<A4>::const_reference get() const { return m_x; }
8449 private:
8450  typename tuple_type<A4>::const_reference m_x;
8451 };
8452 
8453 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8454 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8456  typename tuple_type<A5>::const_reference get() const { return m_x; }
8457 private:
8458  typename tuple_type<A5>::const_reference m_x;
8459 };
8460 
8461 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8462 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8464  typename tuple_type<A6>::const_reference get() const { return m_x; }
8465 private:
8466  typename tuple_type<A6>::const_reference m_x;
8467 };
8468 
8469 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8470 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8472  typename tuple_type<A7>::const_reference get() const { return m_x; }
8473 private:
8474  typename tuple_type<A7>::const_reference m_x;
8475 };
8476 
8477 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8478 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8480  typename tuple_type<A8>::const_reference get() const { return m_x; }
8481 private:
8482  typename tuple_type<A8>::const_reference m_x;
8483 };
8484 
8485 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8486 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8488  typename tuple_type<A9>::const_reference get() const { return m_x; }
8489 private:
8490  typename tuple_type<A9>::const_reference m_x;
8491 };
8492 
8493 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8494 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8496  typename tuple_type<A10>::const_reference get() const { return m_x; }
8497 private:
8498  typename tuple_type<A10>::const_reference m_x;
8499 };
8500 
8501 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8502 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8504  typename tuple_type<A11>::const_reference get() const { return m_x; }
8505 private:
8506  typename tuple_type<A11>::const_reference m_x;
8507 };
8508 
8509 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8510 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8512  typename tuple_type<A12>::const_reference get() const { return m_x; }
8513 private:
8514  typename tuple_type<A12>::const_reference m_x;
8515 };
8516 
8517 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8518 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8520  typename tuple_type<A13>::const_reference get() const { return m_x; }
8521 private:
8522  typename tuple_type<A13>::const_reference m_x;
8523 };
8524 
8525 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8526 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8528  typename tuple_type<A14>::const_reference get() const { return m_x; }
8529 private:
8530  typename tuple_type<A14>::const_reference m_x;
8531 };
8532 
8533 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8534 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8536  typename tuple_type<A15>::const_reference get() const { return m_x; }
8537 private:
8538  typename tuple_type<A15>::const_reference m_x;
8539 };
8540 
8541 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8542 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8544  typename tuple_type<A16>::const_reference get() const { return m_x; }
8545 private:
8546  typename tuple_type<A16>::const_reference m_x;
8547 };
8548 
8549 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8550 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8552  typename tuple_type<A17>::const_reference get() const { return m_x; }
8553 private:
8554  typename tuple_type<A17>::const_reference m_x;
8555 };
8556 
8557 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8558 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8560  typename tuple_type<A18>::const_reference get() const { return m_x; }
8561 private:
8562  typename tuple_type<A18>::const_reference m_x;
8563 };
8564 
8565 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8566 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8568  typename tuple_type<A19>::const_reference get() const { return m_x; }
8569 private:
8570  typename tuple_type<A19>::const_reference m_x;
8571 };
8572 
8573 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8574 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8576  typename tuple_type<A20>::const_reference get() const { return m_x; }
8577 private:
8578  typename tuple_type<A20>::const_reference m_x;
8579 };
8580 
8581 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8582 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8584  typename tuple_type<A21>::const_reference get() const { return m_x; }
8585 private:
8586  typename tuple_type<A21>::const_reference m_x;
8587 };
8588 
8589 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8590 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8592  typename tuple_type<A22>::const_reference get() const { return m_x; }
8593 private:
8594  typename tuple_type<A22>::const_reference m_x;
8595 };
8596 
8597 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8598 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8600  typename tuple_type<A23>::const_reference get() const { return m_x; }
8601 private:
8602  typename tuple_type<A23>::const_reference m_x;
8603 };
8604 
8605 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8606 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8608  typename tuple_type<A24>::const_reference get() const { return m_x; }
8609 private:
8610  typename tuple_type<A24>::const_reference m_x;
8611 };
8612 
8613 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8614 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8616  typename tuple_type<A25>::const_reference get() const { return m_x; }
8617 private:
8618  typename tuple_type<A25>::const_reference m_x;
8619 };
8620 
8621 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8622 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8624  typename tuple_type<A26>::const_reference get() const { return m_x; }
8625 private:
8626  typename tuple_type<A26>::const_reference m_x;
8627 };
8628 
8629 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8630 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8632  typename tuple_type<A27>::const_reference get() const { return m_x; }
8633 private:
8634  typename tuple_type<A27>::const_reference m_x;
8635 };
8636 
8637 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8638 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8640  typename tuple_type<A28>::const_reference get() const { return m_x; }
8641 private:
8642  typename tuple_type<A28>::const_reference m_x;
8643 };
8644 
8645 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8646 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8648  typename tuple_type<A29>::const_reference get() const { return m_x; }
8649 private:
8650  typename tuple_type<A29>::const_reference m_x;
8651 };
8652 
8653 
8654 
8655 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8656 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8658  typename tuple_type<A0>::const_reference get() const { return m_x; }
8659 private:
8660  typename tuple_type<A0>::const_reference m_x;
8661 };
8662 
8663 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8664 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8666  typename tuple_type<A1>::const_reference get() const { return m_x; }
8667 private:
8668  typename tuple_type<A1>::const_reference m_x;
8669 };
8670 
8671 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8672 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8674  typename tuple_type<A2>::const_reference get() const { return m_x; }
8675 private:
8676  typename tuple_type<A2>::const_reference m_x;
8677 };
8678 
8679 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8680 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8682  typename tuple_type<A3>::const_reference get() const { return m_x; }
8683 private:
8684  typename tuple_type<A3>::const_reference m_x;
8685 };
8686 
8687 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8688 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8690  typename tuple_type<A4>::const_reference get() const { return m_x; }
8691 private:
8692  typename tuple_type<A4>::const_reference m_x;
8693 };
8694 
8695 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8696 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8698  typename tuple_type<A5>::const_reference get() const { return m_x; }
8699 private:
8700  typename tuple_type<A5>::const_reference m_x;
8701 };
8702 
8703 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8704 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8706  typename tuple_type<A6>::const_reference get() const { return m_x; }
8707 private:
8708  typename tuple_type<A6>::const_reference m_x;
8709 };
8710 
8711 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8712 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8714  typename tuple_type<A7>::const_reference get() const { return m_x; }
8715 private:
8716  typename tuple_type<A7>::const_reference m_x;
8717 };
8718 
8719 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8720 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8722  typename tuple_type<A8>::const_reference get() const { return m_x; }
8723 private:
8724  typename tuple_type<A8>::const_reference m_x;
8725 };
8726 
8727 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8728 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8730  typename tuple_type<A9>::const_reference get() const { return m_x; }
8731 private:
8732  typename tuple_type<A9>::const_reference m_x;
8733 };
8734 
8735 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8736 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8738  typename tuple_type<A10>::const_reference get() const { return m_x; }
8739 private:
8740  typename tuple_type<A10>::const_reference m_x;
8741 };
8742 
8743 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8744 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8746  typename tuple_type<A11>::const_reference get() const { return m_x; }
8747 private:
8748  typename tuple_type<A11>::const_reference m_x;
8749 };
8750 
8751 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8752 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8754  typename tuple_type<A12>::const_reference get() const { return m_x; }
8755 private:
8756  typename tuple_type<A12>::const_reference m_x;
8757 };
8758 
8759 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8760 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8762  typename tuple_type<A13>::const_reference get() const { return m_x; }
8763 private:
8764  typename tuple_type<A13>::const_reference m_x;
8765 };
8766 
8767 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8768 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8770  typename tuple_type<A14>::const_reference get() const { return m_x; }
8771 private:
8772  typename tuple_type<A14>::const_reference m_x;
8773 };
8774 
8775 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8776 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8778  typename tuple_type<A15>::const_reference get() const { return m_x; }
8779 private:
8780  typename tuple_type<A15>::const_reference m_x;
8781 };
8782 
8783 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8784 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8786  typename tuple_type<A16>::const_reference get() const { return m_x; }
8787 private:
8788  typename tuple_type<A16>::const_reference m_x;
8789 };
8790 
8791 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8792 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8794  typename tuple_type<A17>::const_reference get() const { return m_x; }
8795 private:
8796  typename tuple_type<A17>::const_reference m_x;
8797 };
8798 
8799 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8800 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8802  typename tuple_type<A18>::const_reference get() const { return m_x; }
8803 private:
8804  typename tuple_type<A18>::const_reference m_x;
8805 };
8806 
8807 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8808 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8810  typename tuple_type<A19>::const_reference get() const { return m_x; }
8811 private:
8812  typename tuple_type<A19>::const_reference m_x;
8813 };
8814 
8815 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8816 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8818  typename tuple_type<A20>::const_reference get() const { return m_x; }
8819 private:
8820  typename tuple_type<A20>::const_reference m_x;
8821 };
8822 
8823 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8824 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8826  typename tuple_type<A21>::const_reference get() const { return m_x; }
8827 private:
8828  typename tuple_type<A21>::const_reference m_x;
8829 };
8830 
8831 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8832 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8834  typename tuple_type<A22>::const_reference get() const { return m_x; }
8835 private:
8836  typename tuple_type<A22>::const_reference m_x;
8837 };
8838 
8839 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8840 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8842  typename tuple_type<A23>::const_reference get() const { return m_x; }
8843 private:
8844  typename tuple_type<A23>::const_reference m_x;
8845 };
8846 
8847 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8848 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8850  typename tuple_type<A24>::const_reference get() const { return m_x; }
8851 private:
8852  typename tuple_type<A24>::const_reference m_x;
8853 };
8854 
8855 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8856 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8858  typename tuple_type<A25>::const_reference get() const { return m_x; }
8859 private:
8860  typename tuple_type<A25>::const_reference m_x;
8861 };
8862 
8863 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8864 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8866  typename tuple_type<A26>::const_reference get() const { return m_x; }
8867 private:
8868  typename tuple_type<A26>::const_reference m_x;
8869 };
8870 
8871 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8872 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8874  typename tuple_type<A27>::const_reference get() const { return m_x; }
8875 private:
8876  typename tuple_type<A27>::const_reference m_x;
8877 };
8878 
8879 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8880 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8882  typename tuple_type<A28>::const_reference get() const { return m_x; }
8883 private:
8884  typename tuple_type<A28>::const_reference m_x;
8885 };
8886 
8887 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8888 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8890  typename tuple_type<A29>::const_reference get() const { return m_x; }
8891 private:
8892  typename tuple_type<A29>::const_reference m_x;
8893 };
8894 
8895 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8896 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8898  typename tuple_type<A30>::const_reference get() const { return m_x; }
8899 private:
8900  typename tuple_type<A30>::const_reference m_x;
8901 };
8902 
8903 
8904 
8905 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8906 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8908  typename tuple_type<A0>::const_reference get() const { return m_x; }
8909 private:
8910  typename tuple_type<A0>::const_reference m_x;
8911 };
8912 
8913 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8914 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8916  typename tuple_type<A1>::const_reference get() const { return m_x; }
8917 private:
8918  typename tuple_type<A1>::const_reference m_x;
8919 };
8920 
8921 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8922 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8924  typename tuple_type<A2>::const_reference get() const { return m_x; }
8925 private:
8926  typename tuple_type<A2>::const_reference m_x;
8927 };
8928 
8929 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8930 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8932  typename tuple_type<A3>::const_reference get() const { return m_x; }
8933 private:
8934  typename tuple_type<A3>::const_reference m_x;
8935 };
8936 
8937 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8938 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8940  typename tuple_type<A4>::const_reference get() const { return m_x; }
8941 private:
8942  typename tuple_type<A4>::const_reference m_x;
8943 };
8944 
8945 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8946 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8948  typename tuple_type<A5>::const_reference get() const { return m_x; }
8949 private:
8950  typename tuple_type<A5>::const_reference m_x;
8951 };
8952 
8953 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8954 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8956  typename tuple_type<A6>::const_reference get() const { return m_x; }
8957 private:
8958  typename tuple_type<A6>::const_reference m_x;
8959 };
8960 
8961 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8962 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8964  typename tuple_type<A7>::const_reference get() const { return m_x; }
8965 private:
8966  typename tuple_type<A7>::const_reference m_x;
8967 };
8968 
8969 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8970 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8972  typename tuple_type<A8>::const_reference get() const { return m_x; }
8973 private:
8974  typename tuple_type<A8>::const_reference m_x;
8975 };
8976 
8977 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8978 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8980  typename tuple_type<A9>::const_reference get() const { return m_x; }
8981 private:
8982  typename tuple_type<A9>::const_reference m_x;
8983 };
8984 
8985 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8986 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8988  typename tuple_type<A10>::const_reference get() const { return m_x; }
8989 private:
8990  typename tuple_type<A10>::const_reference m_x;
8991 };
8992 
8993 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
8994 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
8996  typename tuple_type<A11>::const_reference get() const { return m_x; }
8997 private:
8998  typename tuple_type<A11>::const_reference m_x;
8999 };
9000 
9001 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
9002 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
9004  typename tuple_type<A12>::const_reference get() const { return m_x; }
9005 private:
9006  typename tuple_type<A12>::const_reference m_x;
9007 };
9008 
9009 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
9010 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
9012  typename tuple_type<A13>::const_reference get() const { return m_x; }
9013 private:
9014  typename tuple_type<A13>::const_reference m_x;
9015 };
9016 
9017 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
9018 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
9020  typename tuple_type<A14>::const_reference get() const { return m_x; }
9021 private:
9022  typename tuple_type<A14>::const_reference m_x;
9023 };
9024 
9025 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
9026 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
9028  typename tuple_type<A15>::const_reference get() const { return m_x; }
9029 private:
9030  typename tuple_type<A15>::const_reference m_x;
9031 };
9032 
9033 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
9034 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
9036  typename tuple_type<A16>::const_reference get() const { return m_x; }
9037 private:
9038  typename tuple_type<A16>::const_reference m_x;
9039 };
9040 
9041 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
9042 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
9044  typename tuple_type<A17>::const_reference get() const { return m_x; }
9045 private:
9046  typename tuple_type<A17>::const_reference m_x;
9047 };
9048 
9049 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
9050 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
9052  typename tuple_type<A18>::const_reference get() const { return m_x; }
9053 private:
9054  typename tuple_type<A18>::const_reference m_x;
9055 };
9056 
9057 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
9058 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
9060  typename tuple_type<A19>::const_reference get() const { return m_x; }
9061 private:
9062  typename tuple_type<A19>::const_reference m_x;
9063 };
9064 
9065 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
9066 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
9068  typename tuple_type<A20>::const_reference get() const { return m_x; }
9069 private:
9070  typename tuple_type<A20>::const_reference m_x;
9071 };
9072 
9073 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
9074 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
9076  typename tuple_type<A21>::const_reference get() const { return m_x; }
9077 private:
9078  typename tuple_type<A21>::const_reference m_x;
9079 };
9080 
9081 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
9082 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
9084  typename tuple_type<A22>::const_reference get() const { return m_x; }
9085 private:
9086  typename tuple_type<A22>::const_reference m_x;
9087 };
9088 
9089 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
9090 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
9092  typename tuple_type<A23>::const_reference get() const { return m_x; }
9093 private:
9094  typename tuple_type<A23>::const_reference m_x;
9095 };
9096 
9097 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
9098 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
9100  typename tuple_type<A24>::const_reference get() const { return m_x; }
9101 private:
9102  typename tuple_type<A24>::const_reference m_x;
9103 };
9104 
9105 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
9106 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
9108  typename tuple_type<A25>::const_reference get() const { return m_x; }
9109 private:
9110  typename tuple_type<A25>::const_reference m_x;
9111 };
9112 
9113 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
9114 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
9116  typename tuple_type<A26>::const_reference get() const { return m_x; }
9117 private:
9118  typename tuple_type<A26>::const_reference m_x;
9119 };
9120 
9121 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
9122 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
9124  typename tuple_type<A27>::const_reference get() const { return m_x; }
9125 private:
9126  typename tuple_type<A27>::const_reference m_x;
9127 };
9128 
9129 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
9130 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
9132  typename tuple_type<A28>::const_reference get() const { return m_x; }
9133 private:
9134  typename tuple_type<A28>::const_reference m_x;
9135 };
9136 
9137 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
9138 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
9140  typename tuple_type<A29>::const_reference get() const { return m_x; }
9141 private:
9142  typename tuple_type<A29>::const_reference m_x;
9143 };
9144 
9145 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
9146 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
9148  typename tuple_type<A30>::const_reference get() const { return m_x; }
9149 private:
9150  typename tuple_type<A30>::const_reference m_x;
9151 };
9152 
9153 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
9154 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
9156  typename tuple_type<A31>::const_reference get() const { return m_x; }
9157 private:
9158  typename tuple_type<A31>::const_reference m_x;
9159 };
9160 
9161 
9163 
9164 template <>
9165 struct tuple<> {
9166  tuple() {}
9167  tuple(msgpack::object const& o) { o.convert(*this); }
9169 };
9170 
9172 
9173 template <typename A0>
9174 struct tuple<A0> {
9175  typedef tuple<A0> value_type;
9176  tuple() {}
9177  tuple(typename tuple_type<A0>::transparent_reference _a0) :
9178  a0(_a0) {}
9179  tuple(msgpack::object const& o) { o.convert(*this); }
9180  template <int N> typename tuple_element<value_type, N>::reference get()
9181  { return tuple_element<value_type, N>(*this).get(); }
9182  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9183  { return const_tuple_element<value_type, N>(*this).get(); }
9184 
9185  A0 a0;
9186 };
9187 
9188 template <int N, typename A0>
9190 { return t.template get<N>(); }
9191 template <int N, typename A0>
9193 { return t.template get<N>(); }
9194 
9195 template <typename A0, typename A1>
9196 struct tuple<A0, A1> {
9197  typedef tuple<A0, A1> value_type;
9198  tuple() {}
9200  a0(_a0), a1(_a1) {}
9201  tuple(msgpack::object const& o) { o.convert(*this); }
9202  template <int N> typename tuple_element<value_type, N>::reference get()
9203  { return tuple_element<value_type, N>(*this).get(); }
9204  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9205  { return const_tuple_element<value_type, N>(*this).get(); }
9206 
9207  A0 a0;
9208  A1 a1;
9209 };
9210 
9211 template <int N, typename A0, typename A1>
9213 { return t.template get<N>(); }
9214 template <int N, typename A0, typename A1>
9216 { return t.template get<N>(); }
9217 
9218 template <typename A0, typename A1, typename A2>
9219 struct tuple<A0, A1, A2> {
9220  typedef tuple<A0, A1, A2> value_type;
9221  tuple() {}
9223  a0(_a0), a1(_a1), a2(_a2) {}
9224  tuple(msgpack::object const& o) { o.convert(*this); }
9225  template <int N> typename tuple_element<value_type, N>::reference get()
9226  { return tuple_element<value_type, N>(*this).get(); }
9227  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9228  { return const_tuple_element<value_type, N>(*this).get(); }
9229 
9230  A0 a0;
9231  A1 a1;
9232  A2 a2;
9233 };
9234 
9235 template <int N, typename A0, typename A1, typename A2>
9237 { return t.template get<N>(); }
9238 template <int N, typename A0, typename A1, typename A2>
9240 { return t.template get<N>(); }
9241 
9242 template <typename A0, typename A1, typename A2, typename A3>
9243 struct tuple<A0, A1, A2, A3> {
9245  tuple() {}
9247  a0(_a0), a1(_a1), a2(_a2), a3(_a3) {}
9248  tuple(msgpack::object const& o) { o.convert(*this); }
9249  template <int N> typename tuple_element<value_type, N>::reference get()
9250  { return tuple_element<value_type, N>(*this).get(); }
9251  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9252  { return const_tuple_element<value_type, N>(*this).get(); }
9253 
9254  A0 a0;
9255  A1 a1;
9256  A2 a2;
9257  A3 a3;
9258 };
9259 
9260 template <int N, typename A0, typename A1, typename A2, typename A3>
9262 { return t.template get<N>(); }
9263 template <int N, typename A0, typename A1, typename A2, typename A3>
9265 { return t.template get<N>(); }
9266 
9267 template <typename A0, typename A1, typename A2, typename A3, typename A4>
9268 struct tuple<A0, A1, A2, A3, A4> {
9270  tuple() {}
9272  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4) {}
9273  tuple(msgpack::object const& o) { o.convert(*this); }
9274  template <int N> typename tuple_element<value_type, N>::reference get()
9275  { return tuple_element<value_type, N>(*this).get(); }
9276  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9277  { return const_tuple_element<value_type, N>(*this).get(); }
9278 
9279  A0 a0;
9280  A1 a1;
9281  A2 a2;
9282  A3 a3;
9283  A4 a4;
9284 };
9285 
9286 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4>
9288 { return t.template get<N>(); }
9289 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4>
9291 { return t.template get<N>(); }
9292 
9293 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
9294 struct tuple<A0, A1, A2, A3, A4, A5> {
9296  tuple() {}
9298  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5) {}
9299  tuple(msgpack::object const& o) { o.convert(*this); }
9300  template <int N> typename tuple_element<value_type, N>::reference get()
9301  { return tuple_element<value_type, N>(*this).get(); }
9302  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9303  { return const_tuple_element<value_type, N>(*this).get(); }
9304 
9305  A0 a0;
9306  A1 a1;
9307  A2 a2;
9308  A3 a3;
9309  A4 a4;
9310  A5 a5;
9311 };
9312 
9313 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
9315 { return t.template get<N>(); }
9316 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
9318 { return t.template get<N>(); }
9319 
9320 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
9321 struct tuple<A0, A1, A2, A3, A4, A5, A6> {
9323  tuple() {}
9325  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6) {}
9326  tuple(msgpack::object const& o) { o.convert(*this); }
9327  template <int N> typename tuple_element<value_type, N>::reference get()
9328  { return tuple_element<value_type, N>(*this).get(); }
9329  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9330  { return const_tuple_element<value_type, N>(*this).get(); }
9331 
9332  A0 a0;
9333  A1 a1;
9334  A2 a2;
9335  A3 a3;
9336  A4 a4;
9337  A5 a5;
9338  A6 a6;
9339 };
9340 
9341 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
9343 { return t.template get<N>(); }
9344 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
9346 { return t.template get<N>(); }
9347 
9348 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
9349 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7> {
9351  tuple() {}
9353  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7) {}
9354  tuple(msgpack::object const& o) { o.convert(*this); }
9355  template <int N> typename tuple_element<value_type, N>::reference get()
9356  { return tuple_element<value_type, N>(*this).get(); }
9357  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9358  { return const_tuple_element<value_type, N>(*this).get(); }
9359 
9360  A0 a0;
9361  A1 a1;
9362  A2 a2;
9363  A3 a3;
9364  A4 a4;
9365  A5 a5;
9366  A6 a6;
9367  A7 a7;
9368 };
9369 
9370 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
9372 { return t.template get<N>(); }
9373 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
9375 { return t.template get<N>(); }
9376 
9377 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
9378 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> {
9380  tuple() {}
9382  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8) {}
9383  tuple(msgpack::object const& o) { o.convert(*this); }
9384  template <int N> typename tuple_element<value_type, N>::reference get()
9385  { return tuple_element<value_type, N>(*this).get(); }
9386  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9387  { return const_tuple_element<value_type, N>(*this).get(); }
9388 
9389  A0 a0;
9390  A1 a1;
9391  A2 a2;
9392  A3 a3;
9393  A4 a4;
9394  A5 a5;
9395  A6 a6;
9396  A7 a7;
9397  A8 a8;
9398 };
9399 
9400 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
9402 { return t.template get<N>(); }
9403 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
9405 { return t.template get<N>(); }
9406 
9407 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
9408 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> {
9410  tuple() {}
9412  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9) {}
9413  tuple(msgpack::object const& o) { o.convert(*this); }
9414  template <int N> typename tuple_element<value_type, N>::reference get()
9415  { return tuple_element<value_type, N>(*this).get(); }
9416  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9417  { return const_tuple_element<value_type, N>(*this).get(); }
9418 
9419  A0 a0;
9420  A1 a1;
9421  A2 a2;
9422  A3 a3;
9423  A4 a4;
9424  A5 a5;
9425  A6 a6;
9426  A7 a7;
9427  A8 a8;
9428  A9 a9;
9429 };
9430 
9431 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
9433 { return t.template get<N>(); }
9434 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
9436 { return t.template get<N>(); }
9437 
9438 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
9439 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> {
9441  tuple() {}
9443  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10) {}
9444  tuple(msgpack::object const& o) { o.convert(*this); }
9445  template <int N> typename tuple_element<value_type, N>::reference get()
9446  { return tuple_element<value_type, N>(*this).get(); }
9447  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9448  { return const_tuple_element<value_type, N>(*this).get(); }
9449 
9450  A0 a0;
9451  A1 a1;
9452  A2 a2;
9453  A3 a3;
9454  A4 a4;
9455  A5 a5;
9456  A6 a6;
9457  A7 a7;
9458  A8 a8;
9459  A9 a9;
9460  A10 a10;
9461 };
9462 
9463 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>
9465 { return t.template get<N>(); }
9466 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>
9468 { return t.template get<N>(); }
9469 
9470 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
9471 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> {
9473  tuple() {}
9475  a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11) {}
9476  tuple(msgpack::object const& o) { o.convert(*this); }
9477  template <int N> typename tuple_element<value_type, N>::reference get()
9478  { return tuple_element<value_type, N>(*this).get(); }
9479  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9480  { return const_tuple_element<value_type, N>(*this).get(); }
9481 
9482  A0 a0;
9483  A1 a1;
9484  A2 a2;
9485  A3 a3;
9486  A4 a4;
9487  A5 a5;
9488  A6 a6;
9489  A7 a7;
9490  A8 a8;
9491  A9 a9;
9492  A10 a10;
9493  A11 a11;
9494 };
9495 
9496 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>
9498 { return t.template get<N>(); }
9499 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>
9501 { return t.template get<N>(); }
9502 
9503 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
9504 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> {
9506  tuple() {}
9508  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) {}
9509  tuple(msgpack::object const& o) { o.convert(*this); }
9510  template <int N> typename tuple_element<value_type, N>::reference get()
9511  { return tuple_element<value_type, N>(*this).get(); }
9512  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9513  { return const_tuple_element<value_type, N>(*this).get(); }
9514 
9515  A0 a0;
9516  A1 a1;
9517  A2 a2;
9518  A3 a3;
9519  A4 a4;
9520  A5 a5;
9521  A6 a6;
9522  A7 a7;
9523  A8 a8;
9524  A9 a9;
9525  A10 a10;
9526  A11 a11;
9527  A12 a12;
9528 };
9529 
9530 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>
9532 { return t.template get<N>(); }
9533 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>
9535 { return t.template get<N>(); }
9536 
9537 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
9538 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> {
9540  tuple() {}
9542  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) {}
9543  tuple(msgpack::object const& o) { o.convert(*this); }
9544  template <int N> typename tuple_element<value_type, N>::reference get()
9545  { return tuple_element<value_type, N>(*this).get(); }
9546  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9547  { return const_tuple_element<value_type, N>(*this).get(); }
9548 
9549  A0 a0;
9550  A1 a1;
9551  A2 a2;
9552  A3 a3;
9553  A4 a4;
9554  A5 a5;
9555  A6 a6;
9556  A7 a7;
9557  A8 a8;
9558  A9 a9;
9559  A10 a10;
9560  A11 a11;
9561  A12 a12;
9562  A13 a13;
9563 };
9564 
9565 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>
9567 { return t.template get<N>(); }
9568 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>
9570 { return t.template get<N>(); }
9571 
9572 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
9573 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> {
9575  tuple() {}
9577  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) {}
9578  tuple(msgpack::object const& o) { o.convert(*this); }
9579  template <int N> typename tuple_element<value_type, N>::reference get()
9580  { return tuple_element<value_type, N>(*this).get(); }
9581  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9582  { return const_tuple_element<value_type, N>(*this).get(); }
9583 
9584  A0 a0;
9585  A1 a1;
9586  A2 a2;
9587  A3 a3;
9588  A4 a4;
9589  A5 a5;
9590  A6 a6;
9591  A7 a7;
9592  A8 a8;
9593  A9 a9;
9594  A10 a10;
9595  A11 a11;
9596  A12 a12;
9597  A13 a13;
9598  A14 a14;
9599 };
9600 
9601 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>
9603 { return t.template get<N>(); }
9604 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>
9606 { return t.template get<N>(); }
9607 
9608 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
9609 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> {
9611  tuple() {}
9613  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) {}
9614  tuple(msgpack::object const& o) { o.convert(*this); }
9615  template <int N> typename tuple_element<value_type, N>::reference get()
9616  { return tuple_element<value_type, N>(*this).get(); }
9617  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9618  { return const_tuple_element<value_type, N>(*this).get(); }
9619 
9620  A0 a0;
9621  A1 a1;
9622  A2 a2;
9623  A3 a3;
9624  A4 a4;
9625  A5 a5;
9626  A6 a6;
9627  A7 a7;
9628  A8 a8;
9629  A9 a9;
9630  A10 a10;
9631  A11 a11;
9632  A12 a12;
9633  A13 a13;
9634  A14 a14;
9635  A15 a15;
9636 };
9637 
9638 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>
9640 { return t.template get<N>(); }
9641 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>
9643 { return t.template get<N>(); }
9644 
9645 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
9646 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> {
9648  tuple() {}
9650  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) {}
9651  tuple(msgpack::object const& o) { o.convert(*this); }
9652  template <int N> typename tuple_element<value_type, N>::reference get()
9653  { return tuple_element<value_type, N>(*this).get(); }
9654  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9655  { return const_tuple_element<value_type, N>(*this).get(); }
9656 
9657  A0 a0;
9658  A1 a1;
9659  A2 a2;
9660  A3 a3;
9661  A4 a4;
9662  A5 a5;
9663  A6 a6;
9664  A7 a7;
9665  A8 a8;
9666  A9 a9;
9667  A10 a10;
9668  A11 a11;
9669  A12 a12;
9670  A13 a13;
9671  A14 a14;
9672  A15 a15;
9673  A16 a16;
9674 };
9675 
9676 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>
9678 { return t.template get<N>(); }
9679 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>
9681 { return t.template get<N>(); }
9682 
9683 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
9684 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> {
9686  tuple() {}
9688  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) {}
9689  tuple(msgpack::object const& o) { o.convert(*this); }
9690  template <int N> typename tuple_element<value_type, N>::reference get()
9691  { return tuple_element<value_type, N>(*this).get(); }
9692  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9693  { return const_tuple_element<value_type, N>(*this).get(); }
9694 
9695  A0 a0;
9696  A1 a1;
9697  A2 a2;
9698  A3 a3;
9699  A4 a4;
9700  A5 a5;
9701  A6 a6;
9702  A7 a7;
9703  A8 a8;
9704  A9 a9;
9705  A10 a10;
9706  A11 a11;
9707  A12 a12;
9708  A13 a13;
9709  A14 a14;
9710  A15 a15;
9711  A16 a16;
9712  A17 a17;
9713 };
9714 
9715 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>
9717 { return t.template get<N>(); }
9718 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>
9720 { return t.template get<N>(); }
9721 
9722 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
9723 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> {
9725  tuple() {}
9727  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) {}
9728  tuple(msgpack::object const& o) { o.convert(*this); }
9729  template <int N> typename tuple_element<value_type, N>::reference get()
9730  { return tuple_element<value_type, N>(*this).get(); }
9731  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9732  { return const_tuple_element<value_type, N>(*this).get(); }
9733 
9734  A0 a0;
9735  A1 a1;
9736  A2 a2;
9737  A3 a3;
9738  A4 a4;
9739  A5 a5;
9740  A6 a6;
9741  A7 a7;
9742  A8 a8;
9743  A9 a9;
9744  A10 a10;
9745  A11 a11;
9746  A12 a12;
9747  A13 a13;
9748  A14 a14;
9749  A15 a15;
9750  A16 a16;
9751  A17 a17;
9752  A18 a18;
9753 };
9754 
9755 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>
9757 { return t.template get<N>(); }
9758 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>
9760 { return t.template get<N>(); }
9761 
9762 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
9763 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> {
9765  tuple() {}
9767  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) {}
9768  tuple(msgpack::object const& o) { o.convert(*this); }
9769  template <int N> typename tuple_element<value_type, N>::reference get()
9770  { return tuple_element<value_type, N>(*this).get(); }
9771  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9772  { return const_tuple_element<value_type, N>(*this).get(); }
9773 
9774  A0 a0;
9775  A1 a1;
9776  A2 a2;
9777  A3 a3;
9778  A4 a4;
9779  A5 a5;
9780  A6 a6;
9781  A7 a7;
9782  A8 a8;
9783  A9 a9;
9784  A10 a10;
9785  A11 a11;
9786  A12 a12;
9787  A13 a13;
9788  A14 a14;
9789  A15 a15;
9790  A16 a16;
9791  A17 a17;
9792  A18 a18;
9793  A19 a19;
9794 };
9795 
9796 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>
9798 { return t.template get<N>(); }
9799 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>
9801 { return t.template get<N>(); }
9802 
9803 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
9804 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> {
9806  tuple() {}
9808  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) {}
9809  tuple(msgpack::object const& o) { o.convert(*this); }
9810  template <int N> typename tuple_element<value_type, N>::reference get()
9811  { return tuple_element<value_type, N>(*this).get(); }
9812  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9813  { return const_tuple_element<value_type, N>(*this).get(); }
9814 
9815  A0 a0;
9816  A1 a1;
9817  A2 a2;
9818  A3 a3;
9819  A4 a4;
9820  A5 a5;
9821  A6 a6;
9822  A7 a7;
9823  A8 a8;
9824  A9 a9;
9825  A10 a10;
9826  A11 a11;
9827  A12 a12;
9828  A13 a13;
9829  A14 a14;
9830  A15 a15;
9831  A16 a16;
9832  A17 a17;
9833  A18 a18;
9834  A19 a19;
9835  A20 a20;
9836 };
9837 
9838 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>
9840 { return t.template get<N>(); }
9841 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>
9843 { return t.template get<N>(); }
9844 
9845 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
9846 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> {
9848  tuple() {}
9850  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) {}
9851  tuple(msgpack::object const& o) { o.convert(*this); }
9852  template <int N> typename tuple_element<value_type, N>::reference get()
9853  { return tuple_element<value_type, N>(*this).get(); }
9854  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9855  { return const_tuple_element<value_type, N>(*this).get(); }
9856 
9857  A0 a0;
9858  A1 a1;
9859  A2 a2;
9860  A3 a3;
9861  A4 a4;
9862  A5 a5;
9863  A6 a6;
9864  A7 a7;
9865  A8 a8;
9866  A9 a9;
9867  A10 a10;
9868  A11 a11;
9869  A12 a12;
9870  A13 a13;
9871  A14 a14;
9872  A15 a15;
9873  A16 a16;
9874  A17 a17;
9875  A18 a18;
9876  A19 a19;
9877  A20 a20;
9878  A21 a21;
9879 };
9880 
9881 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>
9883 { return t.template get<N>(); }
9884 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>
9886 { return t.template get<N>(); }
9887 
9888 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
9889 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> {
9891  tuple() {}
9893  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) {}
9894  tuple(msgpack::object const& o) { o.convert(*this); }
9895  template <int N> typename tuple_element<value_type, N>::reference get()
9896  { return tuple_element<value_type, N>(*this).get(); }
9897  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9898  { return const_tuple_element<value_type, N>(*this).get(); }
9899 
9900  A0 a0;
9901  A1 a1;
9902  A2 a2;
9903  A3 a3;
9904  A4 a4;
9905  A5 a5;
9906  A6 a6;
9907  A7 a7;
9908  A8 a8;
9909  A9 a9;
9910  A10 a10;
9911  A11 a11;
9912  A12 a12;
9913  A13 a13;
9914  A14 a14;
9915  A15 a15;
9916  A16 a16;
9917  A17 a17;
9918  A18 a18;
9919  A19 a19;
9920  A20 a20;
9921  A21 a21;
9922  A22 a22;
9923 };
9924 
9925 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>
9927 { return t.template get<N>(); }
9928 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>
9930 { return t.template get<N>(); }
9931 
9932 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
9933 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> {
9935  tuple() {}
9937  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) {}
9938  tuple(msgpack::object const& o) { o.convert(*this); }
9939  template <int N> typename tuple_element<value_type, N>::reference get()
9940  { return tuple_element<value_type, N>(*this).get(); }
9941  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9942  { return const_tuple_element<value_type, N>(*this).get(); }
9943 
9944  A0 a0;
9945  A1 a1;
9946  A2 a2;
9947  A3 a3;
9948  A4 a4;
9949  A5 a5;
9950  A6 a6;
9951  A7 a7;
9952  A8 a8;
9953  A9 a9;
9954  A10 a10;
9955  A11 a11;
9956  A12 a12;
9957  A13 a13;
9958  A14 a14;
9959  A15 a15;
9960  A16 a16;
9961  A17 a17;
9962  A18 a18;
9963  A19 a19;
9964  A20 a20;
9965  A21 a21;
9966  A22 a22;
9967  A23 a23;
9968 };
9969 
9970 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>
9972 { return t.template get<N>(); }
9973 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>
9975 { return t.template get<N>(); }
9976 
9977 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
9978 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> {
9980  tuple() {}
9982  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) {}
9983  tuple(msgpack::object const& o) { o.convert(*this); }
9984  template <int N> typename tuple_element<value_type, N>::reference get()
9985  { return tuple_element<value_type, N>(*this).get(); }
9986  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
9987  { return const_tuple_element<value_type, N>(*this).get(); }
9988 
9989  A0 a0;
9990  A1 a1;
9991  A2 a2;
9992  A3 a3;
9993  A4 a4;
9994  A5 a5;
9995  A6 a6;
9996  A7 a7;
9997  A8 a8;
9998  A9 a9;
9999  A10 a10;
10000  A11 a11;
10001  A12 a12;
10002  A13 a13;
10003  A14 a14;
10004  A15 a15;
10005  A16 a16;
10006  A17 a17;
10007  A18 a18;
10008  A19 a19;
10009  A20 a20;
10010  A21 a21;
10011  A22 a22;
10012  A23 a23;
10013  A24 a24;
10014 };
10015 
10016 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>
10018 { return t.template get<N>(); }
10019 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>
10021 { return t.template get<N>(); }
10022 
10023 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
10024 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> {
10026  tuple() {}
10028  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) {}
10029  tuple(msgpack::object const& o) { o.convert(*this); }
10030  template <int N> typename tuple_element<value_type, N>::reference get()
10031  { return tuple_element<value_type, N>(*this).get(); }
10032  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
10033  { return const_tuple_element<value_type, N>(*this).get(); }
10034 
10035  A0 a0;
10036  A1 a1;
10037  A2 a2;
10038  A3 a3;
10039  A4 a4;
10040  A5 a5;
10041  A6 a6;
10042  A7 a7;
10043  A8 a8;
10044  A9 a9;
10045  A10 a10;
10046  A11 a11;
10047  A12 a12;
10048  A13 a13;
10049  A14 a14;
10050  A15 a15;
10051  A16 a16;
10052  A17 a17;
10053  A18 a18;
10054  A19 a19;
10055  A20 a20;
10056  A21 a21;
10057  A22 a22;
10058  A23 a23;
10059  A24 a24;
10060  A25 a25;
10061 };
10062 
10063 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>
10065 { return t.template get<N>(); }
10066 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>
10068 { return t.template get<N>(); }
10069 
10070 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
10071 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> {
10073  tuple() {}
10075  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) {}
10076  tuple(msgpack::object const& o) { o.convert(*this); }
10077  template <int N> typename tuple_element<value_type, N>::reference get()
10078  { return tuple_element<value_type, N>(*this).get(); }
10079  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
10080  { return const_tuple_element<value_type, N>(*this).get(); }
10081 
10082  A0 a0;
10083  A1 a1;
10084  A2 a2;
10085  A3 a3;
10086  A4 a4;
10087  A5 a5;
10088  A6 a6;
10089  A7 a7;
10090  A8 a8;
10091  A9 a9;
10092  A10 a10;
10093  A11 a11;
10094  A12 a12;
10095  A13 a13;
10096  A14 a14;
10097  A15 a15;
10098  A16 a16;
10099  A17 a17;
10100  A18 a18;
10101  A19 a19;
10102  A20 a20;
10103  A21 a21;
10104  A22 a22;
10105  A23 a23;
10106  A24 a24;
10107  A25 a25;
10108  A26 a26;
10109 };
10110 
10111 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>
10113 { return t.template get<N>(); }
10114 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>
10116 { return t.template get<N>(); }
10117 
10118 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
10119 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> {
10121  tuple() {}
10122  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) :
10123  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) {}
10124  tuple(msgpack::object const& o) { o.convert(*this); }
10125  template <int N> typename tuple_element<value_type, N>::reference get()
10126  { return tuple_element<value_type, N>(*this).get(); }
10127  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
10128  { return const_tuple_element<value_type, N>(*this).get(); }
10129 
10130  A0 a0;
10131  A1 a1;
10132  A2 a2;
10133  A3 a3;
10134  A4 a4;
10135  A5 a5;
10136  A6 a6;
10137  A7 a7;
10138  A8 a8;
10139  A9 a9;
10140  A10 a10;
10141  A11 a11;
10142  A12 a12;
10143  A13 a13;
10144  A14 a14;
10145  A15 a15;
10146  A16 a16;
10147  A17 a17;
10148  A18 a18;
10149  A19 a19;
10150  A20 a20;
10151  A21 a21;
10152  A22 a22;
10153  A23 a23;
10154  A24 a24;
10155  A25 a25;
10156  A26 a26;
10157  A27 a27;
10158 };
10159 
10160 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>
10162 { return t.template get<N>(); }
10163 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>
10165 { return t.template get<N>(); }
10166 
10167 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
10168 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> {
10170  tuple() {}
10171  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) :
10172  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) {}
10173  tuple(msgpack::object const& o) { o.convert(*this); }
10174  template <int N> typename tuple_element<value_type, N>::reference get()
10175  { return tuple_element<value_type, N>(*this).get(); }
10176  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
10177  { return const_tuple_element<value_type, N>(*this).get(); }
10178 
10179  A0 a0;
10180  A1 a1;
10181  A2 a2;
10182  A3 a3;
10183  A4 a4;
10184  A5 a5;
10185  A6 a6;
10186  A7 a7;
10187  A8 a8;
10188  A9 a9;
10189  A10 a10;
10190  A11 a11;
10191  A12 a12;
10192  A13 a13;
10193  A14 a14;
10194  A15 a15;
10195  A16 a16;
10196  A17 a17;
10197  A18 a18;
10198  A19 a19;
10199  A20 a20;
10200  A21 a21;
10201  A22 a22;
10202  A23 a23;
10203  A24 a24;
10204  A25 a25;
10205  A26 a26;
10206  A27 a27;
10207  A28 a28;
10208 };
10209 
10210 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>
10212 { return t.template get<N>(); }
10213 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>
10215 { return t.template get<N>(); }
10216 
10217 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
10218 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> {
10220  tuple() {}
10221  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) :
10222  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) {}
10223  tuple(msgpack::object const& o) { o.convert(*this); }
10224  template <int N> typename tuple_element<value_type, N>::reference get()
10225  { return tuple_element<value_type, N>(*this).get(); }
10226  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
10227  { return const_tuple_element<value_type, N>(*this).get(); }
10228 
10229  A0 a0;
10230  A1 a1;
10231  A2 a2;
10232  A3 a3;
10233  A4 a4;
10234  A5 a5;
10235  A6 a6;
10236  A7 a7;
10237  A8 a8;
10238  A9 a9;
10239  A10 a10;
10240  A11 a11;
10241  A12 a12;
10242  A13 a13;
10243  A14 a14;
10244  A15 a15;
10245  A16 a16;
10246  A17 a17;
10247  A18 a18;
10248  A19 a19;
10249  A20 a20;
10250  A21 a21;
10251  A22 a22;
10252  A23 a23;
10253  A24 a24;
10254  A25 a25;
10255  A26 a26;
10256  A27 a27;
10257  A28 a28;
10258  A29 a29;
10259 };
10260 
10261 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>
10263 { return t.template get<N>(); }
10264 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>
10266 { return t.template get<N>(); }
10267 
10268 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
10269 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> {
10271  tuple() {}
10272  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) :
10273  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) {}
10274  tuple(msgpack::object const& o) { o.convert(*this); }
10275  template <int N> typename tuple_element<value_type, N>::reference get()
10276  { return tuple_element<value_type, N>(*this).get(); }
10277  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
10278  { return const_tuple_element<value_type, N>(*this).get(); }
10279 
10280  A0 a0;
10281  A1 a1;
10282  A2 a2;
10283  A3 a3;
10284  A4 a4;
10285  A5 a5;
10286  A6 a6;
10287  A7 a7;
10288  A8 a8;
10289  A9 a9;
10290  A10 a10;
10291  A11 a11;
10292  A12 a12;
10293  A13 a13;
10294  A14 a14;
10295  A15 a15;
10296  A16 a16;
10297  A17 a17;
10298  A18 a18;
10299  A19 a19;
10300  A20 a20;
10301  A21 a21;
10302  A22 a22;
10303  A23 a23;
10304  A24 a24;
10305  A25 a25;
10306  A26 a26;
10307  A27 a27;
10308  A28 a28;
10309  A29 a29;
10310  A30 a30;
10311 };
10312 
10313 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>
10315 { return t.template get<N>(); }
10316 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>
10318 { return t.template get<N>(); }
10319 
10320 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
10321 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> {
10323  tuple() {}
10324  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) :
10325  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) {}
10326  tuple(msgpack::object const& o) { o.convert(*this); }
10327  template <int N> typename tuple_element<value_type, N>::reference get()
10328  { return tuple_element<value_type, N>(*this).get(); }
10329  template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
10330  { return const_tuple_element<value_type, N>(*this).get(); }
10331 
10332  A0 a0;
10333  A1 a1;
10334  A2 a2;
10335  A3 a3;
10336  A4 a4;
10337  A5 a5;
10338  A6 a6;
10339  A7 a7;
10340  A8 a8;
10341  A9 a9;
10342  A10 a10;
10343  A11 a11;
10344  A12 a12;
10345  A13 a13;
10346  A14 a14;
10347  A15 a15;
10348  A16 a16;
10349  A17 a17;
10350  A18 a18;
10351  A19 a19;
10352  A20 a20;
10353  A21 a21;
10354  A22 a22;
10355  A23 a23;
10356  A24 a24;
10357  A25 a25;
10358  A26 a26;
10359  A27 a27;
10360  A28 a28;
10361  A29 a29;
10362  A30 a30;
10363  A31 a31;
10364 };
10365 
10366 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>
10368 { return t.template get<N>(); }
10369 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>
10371 { return t.template get<N>(); }
10372 
10374 
10376 {
10377  return tuple<>();
10378 }
10379 
10381 
10382 template <typename A0>
10384 {
10385  return tuple<A0>(a0);
10386 }
10387 
10388 template <typename A0, typename A1>
10390 {
10391  return tuple<A0, A1>(a0, a1);
10392 }
10393 
10394 template <typename A0, typename A1, typename A2>
10396 {
10397  return tuple<A0, A1, A2>(a0, a1, a2);
10398 }
10399 
10400 template <typename A0, typename A1, typename A2, typename A3>
10402 {
10403  return tuple<A0, A1, A2, A3>(a0, a1, a2, a3);
10404 }
10405 
10406 template <typename A0, typename A1, typename A2, typename A3, typename A4>
10408 {
10409  return tuple<A0, A1, A2, A3, A4>(a0, a1, a2, a3, a4);
10410 }
10411 
10412 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
10414 {
10415  return tuple<A0, A1, A2, A3, A4, A5>(a0, a1, a2, a3, a4, a5);
10416 }
10417 
10418 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
10420 {
10421  return tuple<A0, A1, A2, A3, A4, A5, A6>(a0, a1, a2, a3, a4, a5, a6);
10422 }
10423 
10424 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
10426 {
10427  return tuple<A0, A1, A2, A3, A4, A5, A6, A7>(a0, a1, a2, a3, a4, a5, a6, a7);
10428 }
10429 
10430 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
10432 {
10433  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>(a0, a1, a2, a3, a4, a5, a6, a7, a8);
10434 }
10435 
10436 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
10438 {
10439  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
10440 }
10441 
10442 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
10444 {
10445  return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
10446 }
10447 
10448 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
10450 {
10451  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);
10452 }
10453 
10454 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
10456 {
10457  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);
10458 }
10459 
10460 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
10462 {
10463  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);
10464 }
10465 
10466 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
10468 {
10469  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);
10470 }
10471 
10472 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
10474 {
10475  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);
10476 }
10477 
10478 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
10480 {
10481  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);
10482 }
10483 
10484 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
10486 {
10487  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);
10488 }
10489 
10490 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
10492 {
10493  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);
10494 }
10495 
10496 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
10498 {
10499  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);
10500 }
10501 
10502 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
10504 {
10505  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);
10506 }
10507 
10508 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
10510 {
10511  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);
10512 }
10513 
10514 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
10516 {
10517  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);
10518 }
10519 
10520 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
10522 {
10523  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);
10524 }
10525 
10526 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
10528 {
10529  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);
10530 }
10531 
10532 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
10533 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)
10534 {
10535  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);
10536 }
10537 
10538 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
10539 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)
10540 {
10541  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);
10542 }
10543 
10544 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
10545 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)
10546 {
10547  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);
10548 }
10549 
10550 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
10551 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)
10552 {
10553  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);
10554 }
10555 
10556 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
10557 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)
10558 {
10559  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);
10560 }
10561 
10562 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
10563 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)
10564 {
10565  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);
10566 }
10567 
10568 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
10569 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)
10570 {
10571  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);
10572 }
10573 
10575 
10576 } // namespace type
10577 
10578 namespace adaptor {
10579 
10580 template <>
10581 struct convert<type::tuple<> > {
10583  msgpack::object const& o,
10584  type::tuple<>&) const {
10585  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10586  return o;
10587  }
10588 };
10589 
10591 
10592 template <typename A0>
10593 struct convert<type::tuple<A0> > {
10594  msgpack::object const& operator()(
10595  msgpack::object const& o,
10596  type::tuple<A0>& v) const {
10597  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10598  if(o.via.array.size < 1) { throw msgpack::type_error(); }
10599 
10600  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10601  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10602  return o;
10603  }
10604 };
10605 
10606 template <typename A0, typename A1>
10607 struct convert<type::tuple<A0, A1> > {
10608  msgpack::object const& operator()(
10609  msgpack::object const& o,
10610  type::tuple<A0, A1>& v) const {
10611  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10612  if(o.via.array.size < 2) { throw msgpack::type_error(); }
10613 
10614  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10615  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10616  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10617  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10618  return o;
10619  }
10620 };
10621 
10622 template <typename A0, typename A1, typename A2>
10623 struct convert<type::tuple<A0, A1, A2> > {
10624  msgpack::object const& operator()(
10625  msgpack::object const& o,
10626  type::tuple<A0, A1, A2>& v) const {
10627  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10628  if(o.via.array.size < 3) { throw msgpack::type_error(); }
10629 
10630  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10631  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10632  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10633  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10634  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10635  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10636  return o;
10637  }
10638 };
10639 
10640 template <typename A0, typename A1, typename A2, typename A3>
10641 struct convert<type::tuple<A0, A1, A2, A3> > {
10642  msgpack::object const& operator()(
10643  msgpack::object const& o,
10644  type::tuple<A0, A1, A2, A3>& v) const {
10645  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10646  if(o.via.array.size < 4) { throw msgpack::type_error(); }
10647 
10648  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10649  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10650  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10651  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10652  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10653  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10654  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10655  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10656  return o;
10657  }
10658 };
10659 
10660 template <typename A0, typename A1, typename A2, typename A3, typename A4>
10661 struct convert<type::tuple<A0, A1, A2, A3, A4> > {
10662  msgpack::object const& operator()(
10663  msgpack::object const& o,
10665  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10666  if(o.via.array.size < 5) { throw msgpack::type_error(); }
10667 
10668  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10669  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10670  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10671  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10672  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10673  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10674  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10675  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10676  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10677  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10678  return o;
10679  }
10680 };
10681 
10682 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
10683 struct convert<type::tuple<A0, A1, A2, A3, A4, A5> > {
10684  msgpack::object const& operator()(
10685  msgpack::object const& o,
10687  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10688  if(o.via.array.size < 6) { throw msgpack::type_error(); }
10689 
10690  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10691  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10692  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10693  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10694  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10695  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10696  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10697  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10698  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10699  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10700  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10701  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10702  return o;
10703  }
10704 };
10705 
10706 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
10707 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6> > {
10708  msgpack::object const& operator()(
10709  msgpack::object const& o,
10711  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10712  if(o.via.array.size < 7) { throw msgpack::type_error(); }
10713 
10714  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10715  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10716  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10717  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10718  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10719  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10720  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10721  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10722  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10723  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10724  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10725  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10726  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10727  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
10728  return o;
10729  }
10730 };
10731 
10732 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
10733 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7> > {
10734  msgpack::object const& operator()(
10735  msgpack::object const& o,
10737  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10738  if(o.via.array.size < 8) { throw msgpack::type_error(); }
10739 
10740  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10741  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10742  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10743  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10744  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10745  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10746  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10747  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10748  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10749  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10750  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10751  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10752  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10753  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
10754  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10755  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
10756  return o;
10757  }
10758 };
10759 
10760 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
10761 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> > {
10762  msgpack::object const& operator()(
10763  msgpack::object const& o,
10765  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10766  if(o.via.array.size < 9) { throw msgpack::type_error(); }
10767 
10768  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10769  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10770  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10771  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10772  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10773  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10774  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10775  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10776  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10777  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10778  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10779  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10780  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10781  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
10782  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10783  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
10784  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10785  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
10786  return o;
10787  }
10788 };
10789 
10790 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
10791 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> > {
10792  msgpack::object const& operator()(
10793  msgpack::object const& o,
10795  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10796  if(o.via.array.size < 10) { throw msgpack::type_error(); }
10797 
10798  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10799  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10800  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10801  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10802  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10803  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10804  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10805  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10806  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10807  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10808  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10809  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10810  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10811  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
10812  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10813  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
10814  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10815  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
10816  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10817  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
10818  return o;
10819  }
10820 };
10821 
10822 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
10823 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> > {
10824  msgpack::object const& operator()(
10825  msgpack::object const& o,
10827  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10828  if(o.via.array.size < 11) { throw msgpack::type_error(); }
10829 
10830  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10831  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10832  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10833  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10834  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10835  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10836  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10837  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10838  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10839  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10840  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10841  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10842  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10843  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
10844  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10845  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
10846  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10847  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
10848  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10849  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
10850  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10851  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
10852  return o;
10853  }
10854 };
10855 
10856 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
10857 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> > {
10858  msgpack::object const& operator()(
10859  msgpack::object const& o,
10861  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10862  if(o.via.array.size < 12) { throw msgpack::type_error(); }
10863 
10864  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10865  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10866  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10867  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10868  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10869  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10870  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10871  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10872  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10873  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10874  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10875  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10876  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10877  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
10878  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10879  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
10880  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10881  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
10882  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10883  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
10884  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10885  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
10886  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10887  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
10888  return o;
10889  }
10890 };
10891 
10892 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
10893 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> > {
10894  msgpack::object const& operator()(
10895  msgpack::object const& o,
10897  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10898  if(o.via.array.size < 13) { throw msgpack::type_error(); }
10899 
10900  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10901  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10902  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10903  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10904  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10905  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10906  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10907  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10908  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10909  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10910  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10911  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10912  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10913  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
10914  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10915  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
10916  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10917  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
10918  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10919  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
10920  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10921  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
10922  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10923  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
10924  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10925  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
10926  return o;
10927  }
10928 };
10929 
10930 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
10931 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> > {
10932  msgpack::object const& operator()(
10933  msgpack::object const& o,
10935  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10936  if(o.via.array.size < 14) { throw msgpack::type_error(); }
10937 
10938  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10939  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10940  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10941  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10942  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10943  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10944  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10945  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10946  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10947  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10948  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10949  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10950  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10951  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
10952  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10953  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
10954  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10955  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
10956  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10957  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
10958  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10959  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
10960  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10961  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
10962  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10963  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
10964  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10965  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
10966  return o;
10967  }
10968 };
10969 
10970 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
10971 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> > {
10972  msgpack::object const& operator()(
10973  msgpack::object const& o,
10975  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
10976  if(o.via.array.size < 15) { throw msgpack::type_error(); }
10977 
10978  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10979  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10980  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10981  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10982  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10983  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10984  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10985  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10986  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10987  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10988  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10989  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10990  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10991  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
10992  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10993  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
10994  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10995  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
10996  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10997  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
10998  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10999  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11000  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11001  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11002  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11003  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11004  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11005  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11006  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11007  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11008  return o;
11009  }
11010 };
11011 
11012 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
11013 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> > {
11014  msgpack::object const& operator()(
11015  msgpack::object const& o,
11017  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11018  if(o.via.array.size < 16) { throw msgpack::type_error(); }
11019 
11020  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11021  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11022  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11023  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11024  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11025  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11026  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11027  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11028  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11029  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11030  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11031  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11032  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11033  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11034  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11035  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11036  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11037  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11038  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11039  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11040  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11041  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11042  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11043  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11044  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11045  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11046  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11047  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11048  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11049  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11050  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11051  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11052  return o;
11053  }
11054 };
11055 
11056 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
11057 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> > {
11058  msgpack::object const& operator()(
11059  msgpack::object const& o,
11061  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11062  if(o.via.array.size < 17) { throw msgpack::type_error(); }
11063 
11064  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11065  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11066  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11067  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11068  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11069  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11070  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11071  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11072  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11073  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11074  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11075  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11076  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11077  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11078  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11079  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11080  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11081  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11082  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11083  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11084  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11085  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11086  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11087  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11088  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11089  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11090  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11091  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11092  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11093  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11094  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11095  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11096  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11097  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11098  return o;
11099  }
11100 };
11101 
11102 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
11103 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> > {
11104  msgpack::object const& operator()(
11105  msgpack::object const& o,
11107  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11108  if(o.via.array.size < 18) { throw msgpack::type_error(); }
11109 
11110  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11111  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11112  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11113  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11114  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11115  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11116  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11117  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11118  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11119  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11120  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11121  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11122  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11123  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11124  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11125  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11126  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11127  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11128  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11129  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11130  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11131  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11132  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11133  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11134  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11135  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11136  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11137  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11138  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11139  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11140  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11141  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11142  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11143  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11144  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11145  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11146  return o;
11147  }
11148 };
11149 
11150 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
11151 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> > {
11152  msgpack::object const& operator()(
11153  msgpack::object const& o,
11155  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11156  if(o.via.array.size < 19) { throw msgpack::type_error(); }
11157 
11158  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11159  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11160  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11161  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11162  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11163  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11164  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11165  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11166  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11167  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11168  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11169  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11170  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11171  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11172  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11173  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11174  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11175  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11176  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11177  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11178  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11179  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11180  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11181  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11182  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11183  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11184  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11185  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11186  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11187  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11188  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11189  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11190  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11191  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11192  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11193  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11194  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11195  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11196  return o;
11197  }
11198 };
11199 
11200 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
11201 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> > {
11202  msgpack::object const& operator()(
11203  msgpack::object const& o,
11205  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11206  if(o.via.array.size < 20) { throw msgpack::type_error(); }
11207 
11208  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11209  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11210  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11211  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11212  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11213  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11214  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11215  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11216  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11217  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11218  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11219  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11220  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11221  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11222  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11223  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11224  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11225  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11226  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11227  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11228  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11229  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11230  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11231  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11232  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11233  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11234  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11235  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11236  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11237  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11238  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11239  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11240  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11241  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11242  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11243  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11244  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11245  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11246  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11247  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11248  return o;
11249  }
11250 };
11251 
11252 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
11253 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> > {
11254  msgpack::object const& operator()(
11255  msgpack::object const& o,
11257  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11258  if(o.via.array.size < 21) { throw msgpack::type_error(); }
11259 
11260  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11261  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11262  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11263  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11264  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11265  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11266  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11267  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11268  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11269  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11270  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11271  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11272  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11273  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11274  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11275  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11276  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11277  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11278  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11279  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11280  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11281  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11282  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11283  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11284  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11285  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11286  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11287  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11288  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11289  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11290  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11291  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11292  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11293  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11294  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11295  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11296  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11297  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11298  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11299  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11300  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11301  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11302  return o;
11303  }
11304 };
11305 
11306 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
11307 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> > {
11308  msgpack::object const& operator()(
11309  msgpack::object const& o,
11311  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11312  if(o.via.array.size < 22) { throw msgpack::type_error(); }
11313 
11314  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11315  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11316  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11317  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11318  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11319  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11320  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11321  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11322  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11323  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11324  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11325  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11326  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11327  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11328  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11329  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11330  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11331  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11332  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11333  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11334  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11335  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11336  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11337  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11338  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11339  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11340  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11341  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11342  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11343  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11344  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11345  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11346  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11347  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11348  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11349  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11350  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11351  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11352  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11353  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11354  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11355  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11356  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11357  o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11358  return o;
11359  }
11360 };
11361 
11362 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
11363 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> > {
11364  msgpack::object const& operator()(
11365  msgpack::object const& o,
11367  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11368  if(o.via.array.size < 23) { throw msgpack::type_error(); }
11369 
11370  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11371  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11372  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11373  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11374  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11375  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11376  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11377  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11378  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11379  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11380  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11381  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11382  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11383  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11384  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11385  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11386  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11387  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11388  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11389  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11390  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11391  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11392  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11393  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11394  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11395  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11396  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11397  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11398  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11399  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11400  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11401  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11402  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11403  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11404  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11405  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11406  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11407  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11408  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11409  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11410  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11411  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11412  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11413  o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11414  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11415  o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11416  return o;
11417  }
11418 };
11419 
11420 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
11421 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> > {
11422  msgpack::object const& operator()(
11423  msgpack::object const& o,
11425  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11426  if(o.via.array.size < 24) { throw msgpack::type_error(); }
11427 
11428  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11429  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11430  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11431  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11432  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11433  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11434  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11435  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11436  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11437  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11438  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11439  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11440  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11441  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11442  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11443  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11444  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11445  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11446  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11447  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11448  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11449  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11450  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11451  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11452  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11453  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11454  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11455  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11456  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11457  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11458  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11459  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11460  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11461  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11462  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11463  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11464  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11465  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11466  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11467  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11468  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11469  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11470  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11471  o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11472  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11473  o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11474  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11475  o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
11476  return o;
11477  }
11478 };
11479 
11480 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
11481 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> > {
11482  msgpack::object const& operator()(
11483  msgpack::object const& o,
11485  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11486  if(o.via.array.size < 25) { throw msgpack::type_error(); }
11487 
11488  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11489  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11490  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11491  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11492  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11493  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11494  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11495  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11496  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11497  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11498  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11499  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11500  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11501  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11502  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11503  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11504  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11505  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11506  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11507  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11508  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11509  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11510  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11511  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11512  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11513  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11514  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11515  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11516  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11517  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11518  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11519  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11520  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11521  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11522  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11523  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11524  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11525  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11526  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11527  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11528  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11529  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11530  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11531  o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11532  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11533  o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11534  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11535  o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
11536  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11537  o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
11538  return o;
11539  }
11540 };
11541 
11542 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
11543 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> > {
11544  msgpack::object const& operator()(
11545  msgpack::object const& o,
11547  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11548  if(o.via.array.size < 26) { throw msgpack::type_error(); }
11549 
11550  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11551  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11552  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11553  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11554  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11555  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11556  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11557  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11558  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11559  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11560  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11561  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11562  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11563  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11564  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11565  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11566  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11567  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11568  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11569  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11570  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11571  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11572  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11573  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11574  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11575  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11576  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11577  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11578  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11579  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11580  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11581  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11582  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11583  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11584  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11585  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11586  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11587  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11588  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11589  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11590  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11591  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11592  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11593  o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11594  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11595  o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11596  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11597  o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
11598  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11599  o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
11600  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11601  o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
11602  return o;
11603  }
11604 };
11605 
11606 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
11607 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> > {
11608  msgpack::object const& operator()(
11609  msgpack::object const& o,
11611  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11612  if(o.via.array.size < 27) { throw msgpack::type_error(); }
11613 
11614  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11615  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11616  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11617  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11618  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11619  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11620  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11621  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11622  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11623  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11624  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11625  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11626  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11627  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11628  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11629  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11630  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11631  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11632  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11633  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11634  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11635  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11636  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11637  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11638  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11639  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11640  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11641  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11642  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11643  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11644  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11645  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11646  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11647  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11648  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11649  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11650  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11651  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11652  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11653  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11654  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11655  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11656  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11657  o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11658  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11659  o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11660  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11661  o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
11662  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11663  o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
11664  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11665  o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
11666  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11667  o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
11668  return o;
11669  }
11670 };
11671 
11672 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
11673 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> > {
11674  msgpack::object const& operator()(
11675  msgpack::object const& o,
11677  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11678  if(o.via.array.size < 28) { throw msgpack::type_error(); }
11679 
11680  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11681  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11682  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11683  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11684  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11685  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11686  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11687  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11688  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11689  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11690  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11691  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11692  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11693  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11694  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11695  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11696  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11697  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11698  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11699  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11700  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11701  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11702  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11703  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11704  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11705  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11706  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11707  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11708  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11709  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11710  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11711  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11712  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11713  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11714  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11715  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11716  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11717  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11718  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11719  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11720  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11721  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11722  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11723  o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11724  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11725  o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11726  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11727  o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
11728  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11729  o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
11730  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11731  o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
11732  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11733  o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
11734  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11735  o.via.array.ptr[27].msgpack::object::convert<typename type::tuple_type<A27>::type>(v.template get<27>());
11736  return o;
11737  }
11738 };
11739 
11740 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
11741 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> > {
11742  msgpack::object const& operator()(
11743  msgpack::object const& o,
11745  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11746  if(o.via.array.size < 29) { throw msgpack::type_error(); }
11747 
11748  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11749  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11750  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11751  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11752  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11753  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11754  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11755  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11756  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11757  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11758  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11759  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11760  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11761  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11762  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11763  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11764  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11765  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11766  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11767  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11768  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11769  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11770  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11771  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11772  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11773  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11774  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11775  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11776  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11777  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11778  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11779  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11780  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11781  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11782  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11783  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11784  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11785  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11786  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11787  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11788  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11789  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11790  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11791  o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11792  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11793  o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11794  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11795  o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
11796  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11797  o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
11798  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11799  o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
11800  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11801  o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
11802  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11803  o.via.array.ptr[27].msgpack::object::convert<typename type::tuple_type<A27>::type>(v.template get<27>());
11804  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11805  o.via.array.ptr[28].msgpack::object::convert<typename type::tuple_type<A28>::type>(v.template get<28>());
11806  return o;
11807  }
11808 };
11809 
11810 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
11811 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> > {
11812  msgpack::object const& operator()(
11813  msgpack::object const& o,
11815  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11816  if(o.via.array.size < 30) { throw msgpack::type_error(); }
11817 
11818  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11819  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11820  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11821  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11822  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11823  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11824  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11825  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11826  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11827  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11828  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11829  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11830  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11831  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11832  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11833  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11834  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11835  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11836  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11837  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11838  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11839  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11840  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11841  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11842  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11843  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11844  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11845  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11846  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11847  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11848  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11849  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11850  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11851  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11852  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11853  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11854  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11855  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11856  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11857  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11858  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11859  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11860  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11861  o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11862  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11863  o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11864  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11865  o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
11866  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11867  o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
11868  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11869  o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
11870  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11871  o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
11872  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11873  o.via.array.ptr[27].msgpack::object::convert<typename type::tuple_type<A27>::type>(v.template get<27>());
11874  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11875  o.via.array.ptr[28].msgpack::object::convert<typename type::tuple_type<A28>::type>(v.template get<28>());
11876  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11877  o.via.array.ptr[29].msgpack::object::convert<typename type::tuple_type<A29>::type>(v.template get<29>());
11878  return o;
11879  }
11880 };
11881 
11882 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
11883 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> > {
11884  msgpack::object const& operator()(
11885  msgpack::object const& o,
11887  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11888  if(o.via.array.size < 31) { throw msgpack::type_error(); }
11889 
11890  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11891  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11892  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11893  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11894  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11895  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11896  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11897  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11898  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11899  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11900  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11901  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11902  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11903  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11904  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11905  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11906  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11907  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11908  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11909  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11910  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11911  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11912  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11913  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11914  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11915  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11916  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11917  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11918  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11919  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11920  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11921  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11922  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11923  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11924  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11925  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11926  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11927  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11928  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11929  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11930  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11931  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11932  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11933  o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11934  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11935  o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11936  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11937  o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
11938  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11939  o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
11940  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11941  o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
11942  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11943  o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
11944  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11945  o.via.array.ptr[27].msgpack::object::convert<typename type::tuple_type<A27>::type>(v.template get<27>());
11946  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11947  o.via.array.ptr[28].msgpack::object::convert<typename type::tuple_type<A28>::type>(v.template get<28>());
11948  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11949  o.via.array.ptr[29].msgpack::object::convert<typename type::tuple_type<A29>::type>(v.template get<29>());
11950  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11951  o.via.array.ptr[30].msgpack::object::convert<typename type::tuple_type<A30>::type>(v.template get<30>());
11952  return o;
11953  }
11954 };
11955 
11956 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
11957 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> > {
11958  msgpack::object const& operator()(
11959  msgpack::object const& o,
11961  if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
11962  if(o.via.array.size < 32) { throw msgpack::type_error(); }
11963 
11964  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11965  o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11966  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11967  o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11968  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11969  o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11970  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11971  o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11972  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11973  o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11974  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11975  o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11976  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11977  o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11978  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11979  o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11980  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11981  o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11982  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11983  o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11984  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11985  o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11986  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11987  o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11988  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11989  o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11990  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11991  o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11992  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11993  o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11994  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11995  o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11996  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11997  o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11998  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11999  o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
12000  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12001  o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
12002  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12003  o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
12004  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12005  o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
12006  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12007  o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
12008  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12009  o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
12010  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12011  o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
12012  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12013  o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
12014  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12015  o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
12016  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12017  o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
12018  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12019  o.via.array.ptr[27].msgpack::object::convert<typename type::tuple_type<A27>::type>(v.template get<27>());
12020  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12021  o.via.array.ptr[28].msgpack::object::convert<typename type::tuple_type<A28>::type>(v.template get<28>());
12022  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12023  o.via.array.ptr[29].msgpack::object::convert<typename type::tuple_type<A29>::type>(v.template get<29>());
12024  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12025  o.via.array.ptr[30].msgpack::object::convert<typename type::tuple_type<A30>::type>(v.template get<30>());
12026  // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12027  o.via.array.ptr[31].msgpack::object::convert<typename type::tuple_type<A31>::type>(v.template get<31>());
12028  return o;
12029  }
12030 };
12031 
12033 
12034 template <>
12035 struct pack<type::tuple<> > {
12036  template <typename Stream>
12039  const type::tuple<>&) const {
12040  o.pack_array(0);
12041  return o;
12042  }
12043 };
12044 
12046 
12047 template <typename A0>
12048 struct pack<type::tuple<A0> > {
12049  template <typename Stream>
12050  msgpack::packer<Stream>& operator()(
12052  const type::tuple<A0>& v) const {
12053  o.pack_array(1);
12054 
12055  o.pack(v.template get<0>());
12056  return o;
12057  }
12058 };
12059 
12060 template <typename A0, typename A1>
12061 struct pack<type::tuple<A0, A1> > {
12062  template <typename Stream>
12063  msgpack::packer<Stream>& operator()(
12065  const type::tuple<A0, A1>& v) const {
12066  o.pack_array(2);
12067 
12068  o.pack(v.template get<0>());
12069  o.pack(v.template get<1>());
12070  return o;
12071  }
12072 };
12073 
12074 template <typename A0, typename A1, typename A2>
12075 struct pack<type::tuple<A0, A1, A2> > {
12076  template <typename Stream>
12077  msgpack::packer<Stream>& operator()(
12079  const type::tuple<A0, A1, A2>& v) const {
12080  o.pack_array(3);
12081 
12082  o.pack(v.template get<0>());
12083  o.pack(v.template get<1>());
12084  o.pack(v.template get<2>());
12085  return o;
12086  }
12087 };
12088 
12089 template <typename A0, typename A1, typename A2, typename A3>
12090 struct pack<type::tuple<A0, A1, A2, A3> > {
12091  template <typename Stream>
12092  msgpack::packer<Stream>& operator()(
12094  const type::tuple<A0, A1, A2, A3>& v) const {
12095  o.pack_array(4);
12096 
12097  o.pack(v.template get<0>());
12098  o.pack(v.template get<1>());
12099  o.pack(v.template get<2>());
12100  o.pack(v.template get<3>());
12101  return o;
12102  }
12103 };
12104 
12105 template <typename A0, typename A1, typename A2, typename A3, typename A4>
12106 struct pack<type::tuple<A0, A1, A2, A3, A4> > {
12107  template <typename Stream>
12108  msgpack::packer<Stream>& operator()(
12110  const type::tuple<A0, A1, A2, A3, A4>& v) const {
12111  o.pack_array(5);
12112 
12113  o.pack(v.template get<0>());
12114  o.pack(v.template get<1>());
12115  o.pack(v.template get<2>());
12116  o.pack(v.template get<3>());
12117  o.pack(v.template get<4>());
12118  return o;
12119  }
12120 };
12121 
12122 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
12123 struct pack<type::tuple<A0, A1, A2, A3, A4, A5> > {
12124  template <typename Stream>
12125  msgpack::packer<Stream>& operator()(
12127  const type::tuple<A0, A1, A2, A3, A4, A5>& v) const {
12128  o.pack_array(6);
12129 
12130  o.pack(v.template get<0>());
12131  o.pack(v.template get<1>());
12132  o.pack(v.template get<2>());
12133  o.pack(v.template get<3>());
12134  o.pack(v.template get<4>());
12135  o.pack(v.template get<5>());
12136  return o;
12137  }
12138 };
12139 
12140 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
12141 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6> > {
12142  template <typename Stream>
12143  msgpack::packer<Stream>& operator()(
12145  const type::tuple<A0, A1, A2, A3, A4, A5, A6>& v) const {
12146  o.pack_array(7);
12147 
12148  o.pack(v.template get<0>());
12149  o.pack(v.template get<1>());
12150  o.pack(v.template get<2>());
12151  o.pack(v.template get<3>());
12152  o.pack(v.template get<4>());
12153  o.pack(v.template get<5>());
12154  o.pack(v.template get<6>());
12155  return o;
12156  }
12157 };
12158 
12159 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
12160 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7> > {
12161  template <typename Stream>
12162  msgpack::packer<Stream>& operator()(
12165  o.pack_array(8);
12166 
12167  o.pack(v.template get<0>());
12168  o.pack(v.template get<1>());
12169  o.pack(v.template get<2>());
12170  o.pack(v.template get<3>());
12171  o.pack(v.template get<4>());
12172  o.pack(v.template get<5>());
12173  o.pack(v.template get<6>());
12174  o.pack(v.template get<7>());
12175  return o;
12176  }
12177 };
12178 
12179 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
12180 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> > {
12181  template <typename Stream>
12182  msgpack::packer<Stream>& operator()(
12185  o.pack_array(9);
12186 
12187  o.pack(v.template get<0>());
12188  o.pack(v.template get<1>());
12189  o.pack(v.template get<2>());
12190  o.pack(v.template get<3>());
12191  o.pack(v.template get<4>());
12192  o.pack(v.template get<5>());
12193  o.pack(v.template get<6>());
12194  o.pack(v.template get<7>());
12195  o.pack(v.template get<8>());
12196  return o;
12197  }
12198 };
12199 
12200 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
12201 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> > {
12202  template <typename Stream>
12203  msgpack::packer<Stream>& operator()(
12206  o.pack_array(10);
12207 
12208  o.pack(v.template get<0>());
12209  o.pack(v.template get<1>());
12210  o.pack(v.template get<2>());
12211  o.pack(v.template get<3>());
12212  o.pack(v.template get<4>());
12213  o.pack(v.template get<5>());
12214  o.pack(v.template get<6>());
12215  o.pack(v.template get<7>());
12216  o.pack(v.template get<8>());
12217  o.pack(v.template get<9>());
12218  return o;
12219  }
12220 };
12221 
12222 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
12223 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> > {
12224  template <typename Stream>
12225  msgpack::packer<Stream>& operator()(
12228  o.pack_array(11);
12229 
12230  o.pack(v.template get<0>());
12231  o.pack(v.template get<1>());
12232  o.pack(v.template get<2>());
12233  o.pack(v.template get<3>());
12234  o.pack(v.template get<4>());
12235  o.pack(v.template get<5>());
12236  o.pack(v.template get<6>());
12237  o.pack(v.template get<7>());
12238  o.pack(v.template get<8>());
12239  o.pack(v.template get<9>());
12240  o.pack(v.template get<10>());
12241  return o;
12242  }
12243 };
12244 
12245 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
12246 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> > {
12247  template <typename Stream>
12248  msgpack::packer<Stream>& operator()(
12251  o.pack_array(12);
12252 
12253  o.pack(v.template get<0>());
12254  o.pack(v.template get<1>());
12255  o.pack(v.template get<2>());
12256  o.pack(v.template get<3>());
12257  o.pack(v.template get<4>());
12258  o.pack(v.template get<5>());
12259  o.pack(v.template get<6>());
12260  o.pack(v.template get<7>());
12261  o.pack(v.template get<8>());
12262  o.pack(v.template get<9>());
12263  o.pack(v.template get<10>());
12264  o.pack(v.template get<11>());
12265  return o;
12266  }
12267 };
12268 
12269 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
12270 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> > {
12271  template <typename Stream>
12272  msgpack::packer<Stream>& operator()(
12275  o.pack_array(13);
12276 
12277  o.pack(v.template get<0>());
12278  o.pack(v.template get<1>());
12279  o.pack(v.template get<2>());
12280  o.pack(v.template get<3>());
12281  o.pack(v.template get<4>());
12282  o.pack(v.template get<5>());
12283  o.pack(v.template get<6>());
12284  o.pack(v.template get<7>());
12285  o.pack(v.template get<8>());
12286  o.pack(v.template get<9>());
12287  o.pack(v.template get<10>());
12288  o.pack(v.template get<11>());
12289  o.pack(v.template get<12>());
12290  return o;
12291  }
12292 };
12293 
12294 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
12295 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> > {
12296  template <typename Stream>
12297  msgpack::packer<Stream>& operator()(
12300  o.pack_array(14);
12301 
12302  o.pack(v.template get<0>());
12303  o.pack(v.template get<1>());
12304  o.pack(v.template get<2>());
12305  o.pack(v.template get<3>());
12306  o.pack(v.template get<4>());
12307  o.pack(v.template get<5>());
12308  o.pack(v.template get<6>());
12309  o.pack(v.template get<7>());
12310  o.pack(v.template get<8>());
12311  o.pack(v.template get<9>());
12312  o.pack(v.template get<10>());
12313  o.pack(v.template get<11>());
12314  o.pack(v.template get<12>());
12315  o.pack(v.template get<13>());
12316  return o;
12317  }
12318 };
12319 
12320 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
12321 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> > {
12322  template <typename Stream>
12323  msgpack::packer<Stream>& operator()(
12326  o.pack_array(15);
12327 
12328  o.pack(v.template get<0>());
12329  o.pack(v.template get<1>());
12330  o.pack(v.template get<2>());
12331  o.pack(v.template get<3>());
12332  o.pack(v.template get<4>());
12333  o.pack(v.template get<5>());
12334  o.pack(v.template get<6>());
12335  o.pack(v.template get<7>());
12336  o.pack(v.template get<8>());
12337  o.pack(v.template get<9>());
12338  o.pack(v.template get<10>());
12339  o.pack(v.template get<11>());
12340  o.pack(v.template get<12>());
12341  o.pack(v.template get<13>());
12342  o.pack(v.template get<14>());
12343  return o;
12344  }
12345 };
12346 
12347 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
12348 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> > {
12349  template <typename Stream>
12350  msgpack::packer<Stream>& operator()(
12353  o.pack_array(16);
12354 
12355  o.pack(v.template get<0>());
12356  o.pack(v.template get<1>());
12357  o.pack(v.template get<2>());
12358  o.pack(v.template get<3>());
12359  o.pack(v.template get<4>());
12360  o.pack(v.template get<5>());
12361  o.pack(v.template get<6>());
12362  o.pack(v.template get<7>());
12363  o.pack(v.template get<8>());
12364  o.pack(v.template get<9>());
12365  o.pack(v.template get<10>());
12366  o.pack(v.template get<11>());
12367  o.pack(v.template get<12>());
12368  o.pack(v.template get<13>());
12369  o.pack(v.template get<14>());
12370  o.pack(v.template get<15>());
12371  return o;
12372  }
12373 };
12374 
12375 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
12376 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> > {
12377  template <typename Stream>
12378  msgpack::packer<Stream>& operator()(
12381  o.pack_array(17);
12382 
12383  o.pack(v.template get<0>());
12384  o.pack(v.template get<1>());
12385  o.pack(v.template get<2>());
12386  o.pack(v.template get<3>());
12387  o.pack(v.template get<4>());
12388  o.pack(v.template get<5>());
12389  o.pack(v.template get<6>());
12390  o.pack(v.template get<7>());
12391  o.pack(v.template get<8>());
12392  o.pack(v.template get<9>());
12393  o.pack(v.template get<10>());
12394  o.pack(v.template get<11>());
12395  o.pack(v.template get<12>());
12396  o.pack(v.template get<13>());
12397  o.pack(v.template get<14>());
12398  o.pack(v.template get<15>());
12399  o.pack(v.template get<16>());
12400  return o;
12401  }
12402 };
12403 
12404 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
12405 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> > {
12406  template <typename Stream>
12407  msgpack::packer<Stream>& operator()(
12410  o.pack_array(18);
12411 
12412  o.pack(v.template get<0>());
12413  o.pack(v.template get<1>());
12414  o.pack(v.template get<2>());
12415  o.pack(v.template get<3>());
12416  o.pack(v.template get<4>());
12417  o.pack(v.template get<5>());
12418  o.pack(v.template get<6>());
12419  o.pack(v.template get<7>());
12420  o.pack(v.template get<8>());
12421  o.pack(v.template get<9>());
12422  o.pack(v.template get<10>());
12423  o.pack(v.template get<11>());
12424  o.pack(v.template get<12>());
12425  o.pack(v.template get<13>());
12426  o.pack(v.template get<14>());
12427  o.pack(v.template get<15>());
12428  o.pack(v.template get<16>());
12429  o.pack(v.template get<17>());
12430  return o;
12431  }
12432 };
12433 
12434 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
12435 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> > {
12436  template <typename Stream>
12437  msgpack::packer<Stream>& operator()(
12440  o.pack_array(19);
12441 
12442  o.pack(v.template get<0>());
12443  o.pack(v.template get<1>());
12444  o.pack(v.template get<2>());
12445  o.pack(v.template get<3>());
12446  o.pack(v.template get<4>());
12447  o.pack(v.template get<5>());
12448  o.pack(v.template get<6>());
12449  o.pack(v.template get<7>());
12450  o.pack(v.template get<8>());
12451  o.pack(v.template get<9>());
12452  o.pack(v.template get<10>());
12453  o.pack(v.template get<11>());
12454  o.pack(v.template get<12>());
12455  o.pack(v.template get<13>());
12456  o.pack(v.template get<14>());
12457  o.pack(v.template get<15>());
12458  o.pack(v.template get<16>());
12459  o.pack(v.template get<17>());
12460  o.pack(v.template get<18>());
12461  return o;
12462  }
12463 };
12464 
12465 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
12466 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> > {
12467  template <typename Stream>
12468  msgpack::packer<Stream>& operator()(
12471  o.pack_array(20);
12472 
12473  o.pack(v.template get<0>());
12474  o.pack(v.template get<1>());
12475  o.pack(v.template get<2>());
12476  o.pack(v.template get<3>());
12477  o.pack(v.template get<4>());
12478  o.pack(v.template get<5>());
12479  o.pack(v.template get<6>());
12480  o.pack(v.template get<7>());
12481  o.pack(v.template get<8>());
12482  o.pack(v.template get<9>());
12483  o.pack(v.template get<10>());
12484  o.pack(v.template get<11>());
12485  o.pack(v.template get<12>());
12486  o.pack(v.template get<13>());
12487  o.pack(v.template get<14>());
12488  o.pack(v.template get<15>());
12489  o.pack(v.template get<16>());
12490  o.pack(v.template get<17>());
12491  o.pack(v.template get<18>());
12492  o.pack(v.template get<19>());
12493  return o;
12494  }
12495 };
12496 
12497 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
12498 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> > {
12499  template <typename Stream>
12500  msgpack::packer<Stream>& operator()(
12503  o.pack_array(21);
12504 
12505  o.pack(v.template get<0>());
12506  o.pack(v.template get<1>());
12507  o.pack(v.template get<2>());
12508  o.pack(v.template get<3>());
12509  o.pack(v.template get<4>());
12510  o.pack(v.template get<5>());
12511  o.pack(v.template get<6>());
12512  o.pack(v.template get<7>());
12513  o.pack(v.template get<8>());
12514  o.pack(v.template get<9>());
12515  o.pack(v.template get<10>());
12516  o.pack(v.template get<11>());
12517  o.pack(v.template get<12>());
12518  o.pack(v.template get<13>());
12519  o.pack(v.template get<14>());
12520  o.pack(v.template get<15>());
12521  o.pack(v.template get<16>());
12522  o.pack(v.template get<17>());
12523  o.pack(v.template get<18>());
12524  o.pack(v.template get<19>());
12525  o.pack(v.template get<20>());
12526  return o;
12527  }
12528 };
12529 
12530 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
12531 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> > {
12532  template <typename Stream>
12533  msgpack::packer<Stream>& operator()(
12536  o.pack_array(22);
12537 
12538  o.pack(v.template get<0>());
12539  o.pack(v.template get<1>());
12540  o.pack(v.template get<2>());
12541  o.pack(v.template get<3>());
12542  o.pack(v.template get<4>());
12543  o.pack(v.template get<5>());
12544  o.pack(v.template get<6>());
12545  o.pack(v.template get<7>());
12546  o.pack(v.template get<8>());
12547  o.pack(v.template get<9>());
12548  o.pack(v.template get<10>());
12549  o.pack(v.template get<11>());
12550  o.pack(v.template get<12>());
12551  o.pack(v.template get<13>());
12552  o.pack(v.template get<14>());
12553  o.pack(v.template get<15>());
12554  o.pack(v.template get<16>());
12555  o.pack(v.template get<17>());
12556  o.pack(v.template get<18>());
12557  o.pack(v.template get<19>());
12558  o.pack(v.template get<20>());
12559  o.pack(v.template get<21>());
12560  return o;
12561  }
12562 };
12563 
12564 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
12565 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> > {
12566  template <typename Stream>
12567  msgpack::packer<Stream>& operator()(
12570  o.pack_array(23);
12571 
12572  o.pack(v.template get<0>());
12573  o.pack(v.template get<1>());
12574  o.pack(v.template get<2>());
12575  o.pack(v.template get<3>());
12576  o.pack(v.template get<4>());
12577  o.pack(v.template get<5>());
12578  o.pack(v.template get<6>());
12579  o.pack(v.template get<7>());
12580  o.pack(v.template get<8>());
12581  o.pack(v.template get<9>());
12582  o.pack(v.template get<10>());
12583  o.pack(v.template get<11>());
12584  o.pack(v.template get<12>());
12585  o.pack(v.template get<13>());
12586  o.pack(v.template get<14>());
12587  o.pack(v.template get<15>());
12588  o.pack(v.template get<16>());
12589  o.pack(v.template get<17>());
12590  o.pack(v.template get<18>());
12591  o.pack(v.template get<19>());
12592  o.pack(v.template get<20>());
12593  o.pack(v.template get<21>());
12594  o.pack(v.template get<22>());
12595  return o;
12596  }
12597 };
12598 
12599 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
12600 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> > {
12601  template <typename Stream>
12602  msgpack::packer<Stream>& operator()(
12605  o.pack_array(24);
12606 
12607  o.pack(v.template get<0>());
12608  o.pack(v.template get<1>());
12609  o.pack(v.template get<2>());
12610  o.pack(v.template get<3>());
12611  o.pack(v.template get<4>());
12612  o.pack(v.template get<5>());
12613  o.pack(v.template get<6>());
12614  o.pack(v.template get<7>());
12615  o.pack(v.template get<8>());
12616  o.pack(v.template get<9>());
12617  o.pack(v.template get<10>());
12618  o.pack(v.template get<11>());
12619  o.pack(v.template get<12>());
12620  o.pack(v.template get<13>());
12621  o.pack(v.template get<14>());
12622  o.pack(v.template get<15>());
12623  o.pack(v.template get<16>());
12624  o.pack(v.template get<17>());
12625  o.pack(v.template get<18>());
12626  o.pack(v.template get<19>());
12627  o.pack(v.template get<20>());
12628  o.pack(v.template get<21>());
12629  o.pack(v.template get<22>());
12630  o.pack(v.template get<23>());
12631  return o;
12632  }
12633 };
12634 
12635 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
12636 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> > {
12637  template <typename Stream>
12638  msgpack::packer<Stream>& operator()(
12641  o.pack_array(25);
12642 
12643  o.pack(v.template get<0>());
12644  o.pack(v.template get<1>());
12645  o.pack(v.template get<2>());
12646  o.pack(v.template get<3>());
12647  o.pack(v.template get<4>());
12648  o.pack(v.template get<5>());
12649  o.pack(v.template get<6>());
12650  o.pack(v.template get<7>());
12651  o.pack(v.template get<8>());
12652  o.pack(v.template get<9>());
12653  o.pack(v.template get<10>());
12654  o.pack(v.template get<11>());
12655  o.pack(v.template get<12>());
12656  o.pack(v.template get<13>());
12657  o.pack(v.template get<14>());
12658  o.pack(v.template get<15>());
12659  o.pack(v.template get<16>());
12660  o.pack(v.template get<17>());
12661  o.pack(v.template get<18>());
12662  o.pack(v.template get<19>());
12663  o.pack(v.template get<20>());
12664  o.pack(v.template get<21>());
12665  o.pack(v.template get<22>());
12666  o.pack(v.template get<23>());
12667  o.pack(v.template get<24>());
12668  return o;
12669  }
12670 };
12671 
12672 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
12673 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> > {
12674  template <typename Stream>
12675  msgpack::packer<Stream>& operator()(
12678  o.pack_array(26);
12679 
12680  o.pack(v.template get<0>());
12681  o.pack(v.template get<1>());
12682  o.pack(v.template get<2>());
12683  o.pack(v.template get<3>());
12684  o.pack(v.template get<4>());
12685  o.pack(v.template get<5>());
12686  o.pack(v.template get<6>());
12687  o.pack(v.template get<7>());
12688  o.pack(v.template get<8>());
12689  o.pack(v.template get<9>());
12690  o.pack(v.template get<10>());
12691  o.pack(v.template get<11>());
12692  o.pack(v.template get<12>());
12693  o.pack(v.template get<13>());
12694  o.pack(v.template get<14>());
12695  o.pack(v.template get<15>());
12696  o.pack(v.template get<16>());
12697  o.pack(v.template get<17>());
12698  o.pack(v.template get<18>());
12699  o.pack(v.template get<19>());
12700  o.pack(v.template get<20>());
12701  o.pack(v.template get<21>());
12702  o.pack(v.template get<22>());
12703  o.pack(v.template get<23>());
12704  o.pack(v.template get<24>());
12705  o.pack(v.template get<25>());
12706  return o;
12707  }
12708 };
12709 
12710 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
12711 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> > {
12712  template <typename Stream>
12713  msgpack::packer<Stream>& operator()(
12716  o.pack_array(27);
12717 
12718  o.pack(v.template get<0>());
12719  o.pack(v.template get<1>());
12720  o.pack(v.template get<2>());
12721  o.pack(v.template get<3>());
12722  o.pack(v.template get<4>());
12723  o.pack(v.template get<5>());
12724  o.pack(v.template get<6>());
12725  o.pack(v.template get<7>());
12726  o.pack(v.template get<8>());
12727  o.pack(v.template get<9>());
12728  o.pack(v.template get<10>());
12729  o.pack(v.template get<11>());
12730  o.pack(v.template get<12>());
12731  o.pack(v.template get<13>());
12732  o.pack(v.template get<14>());
12733  o.pack(v.template get<15>());
12734  o.pack(v.template get<16>());
12735  o.pack(v.template get<17>());
12736  o.pack(v.template get<18>());
12737  o.pack(v.template get<19>());
12738  o.pack(v.template get<20>());
12739  o.pack(v.template get<21>());
12740  o.pack(v.template get<22>());
12741  o.pack(v.template get<23>());
12742  o.pack(v.template get<24>());
12743  o.pack(v.template get<25>());
12744  o.pack(v.template get<26>());
12745  return o;
12746  }
12747 };
12748 
12749 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
12750 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> > {
12751  template <typename Stream>
12752  msgpack::packer<Stream>& operator()(
12755  o.pack_array(28);
12756 
12757  o.pack(v.template get<0>());
12758  o.pack(v.template get<1>());
12759  o.pack(v.template get<2>());
12760  o.pack(v.template get<3>());
12761  o.pack(v.template get<4>());
12762  o.pack(v.template get<5>());
12763  o.pack(v.template get<6>());
12764  o.pack(v.template get<7>());
12765  o.pack(v.template get<8>());
12766  o.pack(v.template get<9>());
12767  o.pack(v.template get<10>());
12768  o.pack(v.template get<11>());
12769  o.pack(v.template get<12>());
12770  o.pack(v.template get<13>());
12771  o.pack(v.template get<14>());
12772  o.pack(v.template get<15>());
12773  o.pack(v.template get<16>());
12774  o.pack(v.template get<17>());
12775  o.pack(v.template get<18>());
12776  o.pack(v.template get<19>());
12777  o.pack(v.template get<20>());
12778  o.pack(v.template get<21>());
12779  o.pack(v.template get<22>());
12780  o.pack(v.template get<23>());
12781  o.pack(v.template get<24>());
12782  o.pack(v.template get<25>());
12783  o.pack(v.template get<26>());
12784  o.pack(v.template get<27>());
12785  return o;
12786  }
12787 };
12788 
12789 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
12790 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> > {
12791  template <typename Stream>
12792  msgpack::packer<Stream>& operator()(
12795  o.pack_array(29);
12796 
12797  o.pack(v.template get<0>());
12798  o.pack(v.template get<1>());
12799  o.pack(v.template get<2>());
12800  o.pack(v.template get<3>());
12801  o.pack(v.template get<4>());
12802  o.pack(v.template get<5>());
12803  o.pack(v.template get<6>());
12804  o.pack(v.template get<7>());
12805  o.pack(v.template get<8>());
12806  o.pack(v.template get<9>());
12807  o.pack(v.template get<10>());
12808  o.pack(v.template get<11>());
12809  o.pack(v.template get<12>());
12810  o.pack(v.template get<13>());
12811  o.pack(v.template get<14>());
12812  o.pack(v.template get<15>());
12813  o.pack(v.template get<16>());
12814  o.pack(v.template get<17>());
12815  o.pack(v.template get<18>());
12816  o.pack(v.template get<19>());
12817  o.pack(v.template get<20>());
12818  o.pack(v.template get<21>());
12819  o.pack(v.template get<22>());
12820  o.pack(v.template get<23>());
12821  o.pack(v.template get<24>());
12822  o.pack(v.template get<25>());
12823  o.pack(v.template get<26>());
12824  o.pack(v.template get<27>());
12825  o.pack(v.template get<28>());
12826  return o;
12827  }
12828 };
12829 
12830 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
12831 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> > {
12832  template <typename Stream>
12833  msgpack::packer<Stream>& operator()(
12836  o.pack_array(30);
12837 
12838  o.pack(v.template get<0>());
12839  o.pack(v.template get<1>());
12840  o.pack(v.template get<2>());
12841  o.pack(v.template get<3>());
12842  o.pack(v.template get<4>());
12843  o.pack(v.template get<5>());
12844  o.pack(v.template get<6>());
12845  o.pack(v.template get<7>());
12846  o.pack(v.template get<8>());
12847  o.pack(v.template get<9>());
12848  o.pack(v.template get<10>());
12849  o.pack(v.template get<11>());
12850  o.pack(v.template get<12>());
12851  o.pack(v.template get<13>());
12852  o.pack(v.template get<14>());
12853  o.pack(v.template get<15>());
12854  o.pack(v.template get<16>());
12855  o.pack(v.template get<17>());
12856  o.pack(v.template get<18>());
12857  o.pack(v.template get<19>());
12858  o.pack(v.template get<20>());
12859  o.pack(v.template get<21>());
12860  o.pack(v.template get<22>());
12861  o.pack(v.template get<23>());
12862  o.pack(v.template get<24>());
12863  o.pack(v.template get<25>());
12864  o.pack(v.template get<26>());
12865  o.pack(v.template get<27>());
12866  o.pack(v.template get<28>());
12867  o.pack(v.template get<29>());
12868  return o;
12869  }
12870 };
12871 
12872 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
12873 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> > {
12874  template <typename Stream>
12875  msgpack::packer<Stream>& operator()(
12878  o.pack_array(31);
12879 
12880  o.pack(v.template get<0>());
12881  o.pack(v.template get<1>());
12882  o.pack(v.template get<2>());
12883  o.pack(v.template get<3>());
12884  o.pack(v.template get<4>());
12885  o.pack(v.template get<5>());
12886  o.pack(v.template get<6>());
12887  o.pack(v.template get<7>());
12888  o.pack(v.template get<8>());
12889  o.pack(v.template get<9>());
12890  o.pack(v.template get<10>());
12891  o.pack(v.template get<11>());
12892  o.pack(v.template get<12>());
12893  o.pack(v.template get<13>());
12894  o.pack(v.template get<14>());
12895  o.pack(v.template get<15>());
12896  o.pack(v.template get<16>());
12897  o.pack(v.template get<17>());
12898  o.pack(v.template get<18>());
12899  o.pack(v.template get<19>());
12900  o.pack(v.template get<20>());
12901  o.pack(v.template get<21>());
12902  o.pack(v.template get<22>());
12903  o.pack(v.template get<23>());
12904  o.pack(v.template get<24>());
12905  o.pack(v.template get<25>());
12906  o.pack(v.template get<26>());
12907  o.pack(v.template get<27>());
12908  o.pack(v.template get<28>());
12909  o.pack(v.template get<29>());
12910  o.pack(v.template get<30>());
12911  return o;
12912  }
12913 };
12914 
12915 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
12916 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> > {
12917  template <typename Stream>
12918  msgpack::packer<Stream>& operator()(
12921  o.pack_array(32);
12922 
12923  o.pack(v.template get<0>());
12924  o.pack(v.template get<1>());
12925  o.pack(v.template get<2>());
12926  o.pack(v.template get<3>());
12927  o.pack(v.template get<4>());
12928  o.pack(v.template get<5>());
12929  o.pack(v.template get<6>());
12930  o.pack(v.template get<7>());
12931  o.pack(v.template get<8>());
12932  o.pack(v.template get<9>());
12933  o.pack(v.template get<10>());
12934  o.pack(v.template get<11>());
12935  o.pack(v.template get<12>());
12936  o.pack(v.template get<13>());
12937  o.pack(v.template get<14>());
12938  o.pack(v.template get<15>());
12939  o.pack(v.template get<16>());
12940  o.pack(v.template get<17>());
12941  o.pack(v.template get<18>());
12942  o.pack(v.template get<19>());
12943  o.pack(v.template get<20>());
12944  o.pack(v.template get<21>());
12945  o.pack(v.template get<22>());
12946  o.pack(v.template get<23>());
12947  o.pack(v.template get<24>());
12948  o.pack(v.template get<25>());
12949  o.pack(v.template get<26>());
12950  o.pack(v.template get<27>());
12951  o.pack(v.template get<28>());
12952  o.pack(v.template get<29>());
12953  o.pack(v.template get<30>());
12954  o.pack(v.template get<31>());
12955  return o;
12956  }
12957 };
12958 
12960 
12961 template <>
12962 struct object_with_zone<type::tuple<> > {
12965  const type::tuple<>&) const {
12967  o.via.array.ptr = nullptr;
12968  o.via.array.size = 0;
12969  }
12970 };
12971 
12973 
12974 template <typename A0>
12975 struct object_with_zone<type::tuple<A0> > {
12976  void operator()(
12978  const type::tuple<A0>& v) const {
12980  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*1));
12981  o.via.array.size = 1;
12982 
12983  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
12984  }
12985 };
12986 
12987 template <typename A0, typename A1>
12988 struct object_with_zone<type::tuple<A0, A1> > {
12989  void operator()(
12991  const type::tuple<A0, A1>& v) const {
12993  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*2));
12994  o.via.array.size = 2;
12995 
12996  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
12997  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
12998  }
12999 };
13000 
13001 template <typename A0, typename A1, typename A2>
13002 struct object_with_zone<type::tuple<A0, A1, A2> > {
13003  void operator()(
13005  const type::tuple<A0, A1, A2>& v) const {
13007  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*3));
13008  o.via.array.size = 3;
13009 
13010  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13011  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13012  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13013  }
13014 };
13015 
13016 template <typename A0, typename A1, typename A2, typename A3>
13017 struct object_with_zone<type::tuple<A0, A1, A2, A3> > {
13018  void operator()(
13020  const type::tuple<A0, A1, A2, A3>& v) const {
13022  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*4));
13023  o.via.array.size = 4;
13024 
13025  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13026  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13027  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13028  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13029  }
13030 };
13031 
13032 template <typename A0, typename A1, typename A2, typename A3, typename A4>
13033 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4> > {
13034  void operator()(
13036  const type::tuple<A0, A1, A2, A3, A4>& v) const {
13038  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*5));
13039  o.via.array.size = 5;
13040 
13041  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13042  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13043  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13044  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13045  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13046  }
13047 };
13048 
13049 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
13050 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5> > {
13051  void operator()(
13053  const type::tuple<A0, A1, A2, A3, A4, A5>& v) const {
13055  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*6));
13056  o.via.array.size = 6;
13057 
13058  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13059  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13060  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13061  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13062  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13063  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13064  }
13065 };
13066 
13067 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
13068 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6> > {
13069  void operator()(
13071  const type::tuple<A0, A1, A2, A3, A4, A5, A6>& v) const {
13073  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*7));
13074  o.via.array.size = 7;
13075 
13076  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13077  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13078  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13079  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13080  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13081  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13082  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13083  }
13084 };
13085 
13086 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
13087 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7> > {
13088  void operator()(
13092  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*8));
13093  o.via.array.size = 8;
13094 
13095  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13096  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13097  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13098  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13099  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13100  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13101  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13102  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13103  }
13104 };
13105 
13106 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
13107 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> > {
13108  void operator()(
13112  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*9));
13113  o.via.array.size = 9;
13114 
13115  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13116  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13117  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13118  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13119  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13120  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13121  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13122  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13123  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13124  }
13125 };
13126 
13127 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
13128 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> > {
13129  void operator()(
13133  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*10));
13134  o.via.array.size = 10;
13135 
13136  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13137  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13138  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13139  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13140  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13141  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13142  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13143  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13144  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13145  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13146  }
13147 };
13148 
13149 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
13150 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> > {
13151  void operator()(
13155  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*11));
13156  o.via.array.size = 11;
13157 
13158  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13159  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13160  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13161  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13162  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13163  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13164  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13165  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13166  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13167  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13168  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13169  }
13170 };
13171 
13172 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
13173 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> > {
13174  void operator()(
13178  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*12));
13179  o.via.array.size = 12;
13180 
13181  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13182  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13183  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13184  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13185  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13186  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13187  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13188  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13189  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13190  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13191  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13192  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13193  }
13194 };
13195 
13196 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
13197 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> > {
13198  void operator()(
13202  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*13));
13203  o.via.array.size = 13;
13204 
13205  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13206  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13207  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13208  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13209  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13210  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13211  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13212  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13213  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13214  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13215  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13216  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13217  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13218  }
13219 };
13220 
13221 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
13222 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> > {
13223  void operator()(
13227  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*14));
13228  o.via.array.size = 14;
13229 
13230  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13231  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13232  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13233  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13234  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13235  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13236  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13237  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13238  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13239  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13240  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13241  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13242  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13243  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13244  }
13245 };
13246 
13247 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
13248 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> > {
13249  void operator()(
13253  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*15));
13254  o.via.array.size = 15;
13255 
13256  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13257  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13258  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13259  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13260  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13261  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13262  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13263  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13264  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13265  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13266  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13267  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13268  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13269  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13270  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13271  }
13272 };
13273 
13274 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
13275 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> > {
13276  void operator()(
13280  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*16));
13281  o.via.array.size = 16;
13282 
13283  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13284  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13285  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13286  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13287  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13288  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13289  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13290  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13291  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13292  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13293  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13294  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13295  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13296  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13297  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13298  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13299  }
13300 };
13301 
13302 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
13303 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> > {
13304  void operator()(
13308  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*17));
13309  o.via.array.size = 17;
13310 
13311  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13312  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13313  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13314  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13315  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13316  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13317  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13318  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13319  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13320  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13321  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13322  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13323  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13324  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13325  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13326  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13327  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13328  }
13329 };
13330 
13331 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
13332 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> > {
13333  void operator()(
13337  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*18));
13338  o.via.array.size = 18;
13339 
13340  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13341  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13342  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13343  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13344  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13345  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13346  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13347  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13348  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13349  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13350  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13351  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13352  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13353  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13354  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13355  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13356  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13357  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13358  }
13359 };
13360 
13361 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
13362 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> > {
13363  void operator()(
13367  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*19));
13368  o.via.array.size = 19;
13369 
13370  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13371  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13372  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13373  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13374  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13375  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13376  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13377  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13378  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13379  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13380  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13381  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13382  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13383  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13384  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13385  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13386  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13387  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13388  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13389  }
13390 };
13391 
13392 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
13393 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> > {
13394  void operator()(
13398  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*20));
13399  o.via.array.size = 20;
13400 
13401  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13402  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13403  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13404  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13405  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13406  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13407  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13408  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13409  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13410  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13411  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13412  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13413  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13414  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13415  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13416  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13417  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13418  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13419  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13420  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13421  }
13422 };
13423 
13424 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
13425 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> > {
13426  void operator()(
13430  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*21));
13431  o.via.array.size = 21;
13432 
13433  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13434  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13435  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13436  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13437  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13438  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13439  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13440  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13441  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13442  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13443  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13444  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13445  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13446  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13447  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13448  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13449  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13450  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13451  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13452  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13453  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13454  }
13455 };
13456 
13457 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
13458 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> > {
13459  void operator()(
13463  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*22));
13464  o.via.array.size = 22;
13465 
13466  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13467  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13468  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13469  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13470  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13471  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13472  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13473  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13474  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13475  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13476  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13477  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13478  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13479  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13480  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13481  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13482  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13483  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13484  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13485  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13486  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13487  o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13488  }
13489 };
13490 
13491 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
13492 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> > {
13493  void operator()(
13497  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*23));
13498  o.via.array.size = 23;
13499 
13500  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13501  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13502  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13503  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13504  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13505  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13506  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13507  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13508  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13509  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13510  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13511  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13512  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13513  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13514  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13515  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13516  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13517  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13518  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13519  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13520  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13521  o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13522  o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13523  }
13524 };
13525 
13526 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
13527 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> > {
13528  void operator()(
13532  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*24));
13533  o.via.array.size = 24;
13534 
13535  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13536  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13537  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13538  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13539  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13540  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13541  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13542  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13543  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13544  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13545  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13546  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13547  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13548  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13549  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13550  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13551  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13552  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13553  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13554  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13555  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13556  o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13557  o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13558  o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13559  }
13560 };
13561 
13562 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
13563 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> > {
13564  void operator()(
13568  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*25));
13569  o.via.array.size = 25;
13570 
13571  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13572  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13573  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13574  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13575  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13576  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13577  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13578  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13579  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13580  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13581  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13582  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13583  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13584  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13585  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13586  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13587  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13588  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13589  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13590  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13591  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13592  o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13593  o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13594  o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13595  o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
13596  }
13597 };
13598 
13599 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
13600 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> > {
13601  void operator()(
13605  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*26));
13606  o.via.array.size = 26;
13607 
13608  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13609  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13610  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13611  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13612  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13613  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13614  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13615  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13616  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13617  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13618  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13619  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13620  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13621  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13622  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13623  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13624  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13625  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13626  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13627  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13628  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13629  o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13630  o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13631  o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13632  o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
13633  o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
13634  }
13635 };
13636 
13637 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
13638 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> > {
13639  void operator()(
13643  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*27));
13644  o.via.array.size = 27;
13645 
13646  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13647  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13648  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13649  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13650  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13651  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13652  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13653  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13654  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13655  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13656  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13657  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13658  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13659  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13660  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13661  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13662  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13663  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13664  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13665  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13666  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13667  o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13668  o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13669  o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13670  o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
13671  o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
13672  o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
13673  }
13674 };
13675 
13676 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
13677 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> > {
13678  void operator()(
13682  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*28));
13683  o.via.array.size = 28;
13684 
13685  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13686  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13687  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13688  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13689  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13690  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13691  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13692  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13693  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13694  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13695  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13696  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13697  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13698  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13699  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13700  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13701  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13702  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13703  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13704  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13705  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13706  o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13707  o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13708  o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13709  o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
13710  o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
13711  o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
13712  o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone);
13713  }
13714 };
13715 
13716 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
13717 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> > {
13718  void operator()(
13722  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*29));
13723  o.via.array.size = 29;
13724 
13725  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13726  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13727  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13728  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13729  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13730  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13731  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13732  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13733  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13734  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13735  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13736  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13737  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13738  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13739  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13740  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13741  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13742  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13743  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13744  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13745  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13746  o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13747  o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13748  o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13749  o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
13750  o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
13751  o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
13752  o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone);
13753  o.via.array.ptr[28] = msgpack::object(v.template get<28>(), o.zone);
13754  }
13755 };
13756 
13757 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
13758 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> > {
13759  void operator()(
13763  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*30));
13764  o.via.array.size = 30;
13765 
13766  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13767  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13768  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13769  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13770  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13771  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13772  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13773  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13774  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13775  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13776  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13777  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13778  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13779  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13780  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13781  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13782  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13783  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13784  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13785  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13786  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13787  o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13788  o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13789  o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13790  o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
13791  o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
13792  o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
13793  o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone);
13794  o.via.array.ptr[28] = msgpack::object(v.template get<28>(), o.zone);
13795  o.via.array.ptr[29] = msgpack::object(v.template get<29>(), o.zone);
13796  }
13797 };
13798 
13799 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
13800 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> > {
13801  void operator()(
13805  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*31));
13806  o.via.array.size = 31;
13807 
13808  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13809  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13810  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13811  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13812  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13813  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13814  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13815  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13816  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13817  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13818  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13819  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13820  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13821  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13822  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13823  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13824  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13825  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13826  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13827  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13828  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13829  o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13830  o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13831  o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13832  o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
13833  o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
13834  o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
13835  o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone);
13836  o.via.array.ptr[28] = msgpack::object(v.template get<28>(), o.zone);
13837  o.via.array.ptr[29] = msgpack::object(v.template get<29>(), o.zone);
13838  o.via.array.ptr[30] = msgpack::object(v.template get<30>(), o.zone);
13839  }
13840 };
13841 
13842 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, 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>
13843 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> > {
13844  void operator()(
13848  o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*32));
13849  o.via.array.size = 32;
13850 
13851  o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13852  o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13853  o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13854  o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13855  o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13856  o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13857  o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13858  o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13859  o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13860  o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13861  o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13862  o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13863  o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13864  o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13865  o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13866  o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13867  o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13868  o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13869  o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13870  o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13871  o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13872  o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13873  o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13874  o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13875  o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
13876  o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
13877  o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
13878  o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone);
13879  o.via.array.ptr[28] = msgpack::object(v.template get<28>(), o.zone);
13880  o.via.array.ptr[29] = msgpack::object(v.template get<29>(), o.zone);
13881  o.via.array.ptr[30] = msgpack::object(v.template get<30>(), o.zone);
13882  o.via.array.ptr[31] = msgpack::object(v.template get<31>(), o.zone);
13883  }
13884 };
13885 
13887 
13888 } // namespace adaptor
13889 
13891 } // MSGPACK_API_VERSION_NAMESPACE(v1)
13893 
13894 } // namespace msgpack
13895 
13896 #endif // MSGPACK_V1_CPP03_MSGPACK_TUPLE_HPP
const T & const_reference
Definition: cpp03_msgpack_tuple.hpp:32
uint32_t size
Definition: object_fwd.hpp:23
void * allocate_align(size_t size, size_t align=MSGPACK_ZONE_ALIGN)
Definition: cpp03_zone.hpp:236
const T & const_reference
Definition: cpp03_msgpack_tuple.hpp:50
T & reference
Definition: cpp03_msgpack_tuple.hpp:40
Definition: cpp03_msgpack_tuple_decl.hpp:35
union_type via
Definition: object_fwd.hpp:92
T & transparent_reference
Definition: cpp03_msgpack_tuple.hpp:42
msgpack::zone & zone
Definition: object.hpp:36
msgpack::object * ptr
Definition: object_fwd.hpp:24
packer< Stream > & pack_array(uint32_t n)
Packing array header and size.
Definition: pack.hpp:1160
T & value_type
Definition: cpp03_msgpack_tuple.hpp:48
tuple(msgpack::object const &o)
Definition: cpp03_msgpack_tuple.hpp:9167
Definition: adaptor_base.hpp:15
tuple value_type
Definition: cpp03_msgpack_tuple.hpp:9168
T & reference
Definition: cpp03_msgpack_tuple.hpp:31
Definition: object.hpp:34
packer< Stream > & pack(const T &v)
Packing function template.
tuple()
Definition: cpp03_msgpack_tuple.hpp:9166
Definition: cpp03_msgpack_tuple.hpp:9165
T type
Definition: cpp03_msgpack_tuple.hpp:47
Definition: adaptor_base.hpp:43
tuple make_tuple()
Definition: cpp03_msgpack_tuple.hpp:10375
Definition: object_fwd.hpp:222
const T & transparent_reference
Definition: cpp03_msgpack_tuple.hpp:33
Definition: adaptor_base.hpp:32
T & value_type
Definition: cpp03_msgpack_tuple.hpp:39
void operator()(msgpack::object::with_zone &o, const type::tuple<> &) const
Definition: cpp03_msgpack_tuple.hpp:12963
msgpack::object_array array
Definition: object_fwd.hpp:84
T value_type
Definition: cpp03_msgpack_tuple.hpp:30
msgpack::packer< Stream > & operator()(msgpack::packer< Stream > &o, const type::tuple<> &) const
Definition: cpp03_msgpack_tuple.hpp:12037
Definition: cpp03_msgpack_tuple.hpp:28
T & convert(T &v) const
Convert the object.
Definition: object.hpp:529
Object class that corresponding to MessagePack format object.
Definition: object_fwd.hpp:75
T type
Definition: cpp03_msgpack_tuple.hpp:29
msgpack::type::object_type type
Definition: object_fwd.hpp:91
const T & transparent_reference
Definition: cpp03_msgpack_tuple.hpp:51
#define MSGPACK_API_VERSION_NAMESPACE(ns)
Definition: versioning.hpp:58
Definition: object_fwd_decl.hpp:39
T & reference
Definition: cpp03_msgpack_tuple.hpp:49
T type
Definition: cpp03_msgpack_tuple.hpp:38
msgpack::object const & operator()(msgpack::object const &o, type::tuple<> &) const
Definition: cpp03_msgpack_tuple.hpp:10582
Definition: cpp11_msgpack_tuple_decl.hpp:35
const T & const_reference
Definition: cpp03_msgpack_tuple.hpp:41
The class template that supports continuous packing.
Definition: adaptor_base_decl.hpp:23
Definition: adaptor_base.hpp:27
Definition: cpp03_msgpack_tuple_decl.hpp:38