Hideaki Tai / msgpack-embedded

Dependents:   hello_message_pack

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers cpp03_msgpack_tuple.hpp Source File

cpp03_msgpack_tuple.hpp

00001 //
00002 // MessagePack for C++ static resolution routine
00003 //
00004 // Copyright (C) 2008-2013 FURUHASHI Sadayuki and KONDO Takatoshi
00005 //
00006 //    Distributed under the Boost Software License, Version 1.0.
00007 //    (See accompanying file LICENSE_1_0.txt or copy at
00008 //    http://www.boost.org/LICENSE_1_0.txt)
00009 //
00010 #ifndef MSGPACK_CPP03_MSGPACK_TUPLE_HPP
00011 #define MSGPACK_CPP03_MSGPACK_TUPLE_HPP
00012 
00013 #include "msgpack/versioning.hpp"
00014 #include "msgpack/object.hpp"
00015 #include "msgpack/adaptor/adaptor_base.hpp"
00016 
00017 namespace msgpack {
00018 
00019 /// @cond
00020 MSGPACK_API_VERSION_NAMESPACE(v1) {
00021 /// @endcond
00022 
00023 namespace type {
00024 
00025 // FIXME operator==
00026 // FIXME operator!=
00027 
00028 
00029 /// @cond
00030 template <typename A0 = void, typename A1 = void, typename A2 = void, typename A3 = void, typename A4 = void, typename A5 = void, typename A6 = void, typename A7 = void, typename A8 = void, typename A9 = void, typename A10 = void, typename A11 = void, typename A12 = void, typename A13 = void, typename A14 = void, typename A15 = void, typename A16 = void, typename A17 = void, typename A18 = void, typename A19 = void, typename A20 = void, typename A21 = void, typename A22 = void, typename A23 = void, typename A24 = void, typename A25 = void, typename A26 = void, typename A27 = void, typename A28 = void, typename A29 = void, typename A30 = void, typename A31 = void, typename A32 = void>
00031 struct tuple;
00032 /// @endcond
00033 
00034 template <typename Tuple, int N>
00035 struct tuple_element;
00036 
00037 template <typename Tuple, int N>
00038 struct const_tuple_element;
00039 
00040 template <typename T>
00041 struct tuple_type {
00042     typedef T type;
00043     typedef T value_type;
00044     typedef T& reference;
00045     typedef const T& const_reference;
00046     typedef const T& transparent_reference;
00047 };
00048 
00049 template <typename T>
00050 struct tuple_type<T&> {
00051     typedef T type;
00052     typedef T& value_type;
00053     typedef T& reference;
00054     typedef const T& const_reference;
00055     typedef T& transparent_reference;
00056 };
00057 
00058 template <typename T>
00059 struct tuple_type<const T&> {
00060     typedef T type;
00061     typedef T& value_type;
00062     typedef T& reference;
00063     typedef const T& const_reference;
00064     typedef const T& transparent_reference;
00065 };
00066 
00067 /// @cond
00068 
00069 
00070 template <typename A0>
00071 struct tuple_element<tuple<A0>, 0> : tuple_type<A0> {
00072     tuple_element(tuple<A0>& x) : m_x(x.a0) {}
00073     typename tuple_type<A0>::reference get() { return m_x; }
00074     typename tuple_type<A0>::const_reference get() const { return m_x; }
00075 private:
00076     typename tuple_type<A0>::reference m_x;
00077 };
00078 
00079 
00080 
00081 template <typename A0, typename A1>
00082 struct tuple_element<tuple<A0, A1>, 0> : tuple_type<A0> {
00083     tuple_element(tuple<A0, A1 >& x) : m_x(x.a0) {}
00084     typename tuple_type<A0>::reference get() { return m_x; }
00085     typename tuple_type<A0>::const_reference get() const { return m_x; }
00086 private:
00087     typename tuple_type<A0>::reference m_x;
00088 };
00089 
00090 template <typename A0, typename A1>
00091 struct tuple_element<tuple<A0, A1>, 1> : tuple_type<A1> {
00092     tuple_element(tuple<A0, A1 >& x) : m_x(x.a1) {}
00093     typename tuple_type<A1>::reference get() { return m_x; }
00094     typename tuple_type<A1>::const_reference get() const { return m_x; }
00095 private:
00096     typename tuple_type<A1>::reference m_x;
00097 };
00098 
00099 
00100 
00101 template <typename A0, typename A1, typename A2>
00102 struct tuple_element<tuple<A0, A1, A2>, 0> : tuple_type<A0> {
00103     tuple_element(tuple<A0, A1 , A2 >& x) : m_x(x.a0) {}
00104     typename tuple_type<A0>::reference get() { return m_x; }
00105     typename tuple_type<A0>::const_reference get() const { return m_x; }
00106 private:
00107     typename tuple_type<A0>::reference m_x;
00108 };
00109 
00110 template <typename A0, typename A1, typename A2>
00111 struct tuple_element<tuple<A0, A1, A2>, 1> : tuple_type<A1> {
00112     tuple_element(tuple<A0, A1 , A2 >& x) : m_x(x.a1) {}
00113     typename tuple_type<A1>::reference get() { return m_x; }
00114     typename tuple_type<A1>::const_reference get() const { return m_x; }
00115 private:
00116     typename tuple_type<A1>::reference m_x;
00117 };
00118 
00119 template <typename A0, typename A1, typename A2>
00120 struct tuple_element<tuple<A0, A1, A2>, 2> : tuple_type<A2> {
00121     tuple_element(tuple<A0, A1 , A2 >& x) : m_x(x.a2) {}
00122     typename tuple_type<A2>::reference get() { return m_x; }
00123     typename tuple_type<A2>::const_reference get() const { return m_x; }
00124 private:
00125     typename tuple_type<A2>::reference m_x;
00126 };
00127 
00128 
00129 
00130 template <typename A0, typename A1, typename A2, typename A3>
00131 struct tuple_element<tuple<A0, A1, A2, A3>, 0> : tuple_type<A0> {
00132     tuple_element(tuple<A0, A1 , A2 , A3 >& x) : m_x(x.a0) {}
00133     typename tuple_type<A0>::reference get() { return m_x; }
00134     typename tuple_type<A0>::const_reference get() const { return m_x; }
00135 private:
00136     typename tuple_type<A0>::reference m_x;
00137 };
00138 
00139 template <typename A0, typename A1, typename A2, typename A3>
00140 struct tuple_element<tuple<A0, A1, A2, A3>, 1> : tuple_type<A1> {
00141     tuple_element(tuple<A0, A1 , A2 , A3 >& x) : m_x(x.a1) {}
00142     typename tuple_type<A1>::reference get() { return m_x; }
00143     typename tuple_type<A1>::const_reference get() const { return m_x; }
00144 private:
00145     typename tuple_type<A1>::reference m_x;
00146 };
00147 
00148 template <typename A0, typename A1, typename A2, typename A3>
00149 struct tuple_element<tuple<A0, A1, A2, A3>, 2> : tuple_type<A2> {
00150     tuple_element(tuple<A0, A1 , A2 , A3 >& x) : m_x(x.a2) {}
00151     typename tuple_type<A2>::reference get() { return m_x; }
00152     typename tuple_type<A2>::const_reference get() const { return m_x; }
00153 private:
00154     typename tuple_type<A2>::reference m_x;
00155 };
00156 
00157 template <typename A0, typename A1, typename A2, typename A3>
00158 struct tuple_element<tuple<A0, A1, A2, A3>, 3> : tuple_type<A3> {
00159     tuple_element(tuple<A0, A1 , A2 , A3 >& x) : m_x(x.a3) {}
00160     typename tuple_type<A3>::reference get() { return m_x; }
00161     typename tuple_type<A3>::const_reference get() const { return m_x; }
00162 private:
00163     typename tuple_type<A3>::reference m_x;
00164 };
00165 
00166 
00167 
00168 template <typename A0, typename A1, typename A2, typename A3, typename A4>
00169 struct tuple_element<tuple<A0, A1, A2, A3, A4>, 0> : tuple_type<A0> {
00170     tuple_element(tuple<A0, A1 , A2 , A3 , A4 >& x) : m_x(x.a0) {}
00171     typename tuple_type<A0>::reference get() { return m_x; }
00172     typename tuple_type<A0>::const_reference get() const { return m_x; }
00173 private:
00174     typename tuple_type<A0>::reference m_x;
00175 };
00176 
00177 template <typename A0, typename A1, typename A2, typename A3, typename A4>
00178 struct tuple_element<tuple<A0, A1, A2, A3, A4>, 1> : tuple_type<A1> {
00179     tuple_element(tuple<A0, A1 , A2 , A3 , A4 >& x) : m_x(x.a1) {}
00180     typename tuple_type<A1>::reference get() { return m_x; }
00181     typename tuple_type<A1>::const_reference get() const { return m_x; }
00182 private:
00183     typename tuple_type<A1>::reference m_x;
00184 };
00185 
00186 template <typename A0, typename A1, typename A2, typename A3, typename A4>
00187 struct tuple_element<tuple<A0, A1, A2, A3, A4>, 2> : tuple_type<A2> {
00188     tuple_element(tuple<A0, A1 , A2 , A3 , A4 >& x) : m_x(x.a2) {}
00189     typename tuple_type<A2>::reference get() { return m_x; }
00190     typename tuple_type<A2>::const_reference get() const { return m_x; }
00191 private:
00192     typename tuple_type<A2>::reference m_x;
00193 };
00194 
00195 template <typename A0, typename A1, typename A2, typename A3, typename A4>
00196 struct tuple_element<tuple<A0, A1, A2, A3, A4>, 3> : tuple_type<A3> {
00197     tuple_element(tuple<A0, A1 , A2 , A3 , A4 >& x) : m_x(x.a3) {}
00198     typename tuple_type<A3>::reference get() { return m_x; }
00199     typename tuple_type<A3>::const_reference get() const { return m_x; }
00200 private:
00201     typename tuple_type<A3>::reference m_x;
00202 };
00203 
00204 template <typename A0, typename A1, typename A2, typename A3, typename A4>
00205 struct tuple_element<tuple<A0, A1, A2, A3, A4>, 4> : tuple_type<A4> {
00206     tuple_element(tuple<A0, A1 , A2 , A3 , A4 >& x) : m_x(x.a4) {}
00207     typename tuple_type<A4>::reference get() { return m_x; }
00208     typename tuple_type<A4>::const_reference get() const { return m_x; }
00209 private:
00210     typename tuple_type<A4>::reference m_x;
00211 };
00212 
00213 
00214 
00215 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
00216 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 0> : tuple_type<A0> {
00217     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 >& x) : m_x(x.a0) {}
00218     typename tuple_type<A0>::reference get() { return m_x; }
00219     typename tuple_type<A0>::const_reference get() const { return m_x; }
00220 private:
00221     typename tuple_type<A0>::reference m_x;
00222 };
00223 
00224 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
00225 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 1> : tuple_type<A1> {
00226     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 >& x) : m_x(x.a1) {}
00227     typename tuple_type<A1>::reference get() { return m_x; }
00228     typename tuple_type<A1>::const_reference get() const { return m_x; }
00229 private:
00230     typename tuple_type<A1>::reference m_x;
00231 };
00232 
00233 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
00234 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 2> : tuple_type<A2> {
00235     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 >& x) : m_x(x.a2) {}
00236     typename tuple_type<A2>::reference get() { return m_x; }
00237     typename tuple_type<A2>::const_reference get() const { return m_x; }
00238 private:
00239     typename tuple_type<A2>::reference m_x;
00240 };
00241 
00242 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
00243 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 3> : tuple_type<A3> {
00244     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 >& x) : m_x(x.a3) {}
00245     typename tuple_type<A3>::reference get() { return m_x; }
00246     typename tuple_type<A3>::const_reference get() const { return m_x; }
00247 private:
00248     typename tuple_type<A3>::reference m_x;
00249 };
00250 
00251 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
00252 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 4> : tuple_type<A4> {
00253     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 >& x) : m_x(x.a4) {}
00254     typename tuple_type<A4>::reference get() { return m_x; }
00255     typename tuple_type<A4>::const_reference get() const { return m_x; }
00256 private:
00257     typename tuple_type<A4>::reference m_x;
00258 };
00259 
00260 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
00261 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 5> : tuple_type<A5> {
00262     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 >& x) : m_x(x.a5) {}
00263     typename tuple_type<A5>::reference get() { return m_x; }
00264     typename tuple_type<A5>::const_reference get() const { return m_x; }
00265 private:
00266     typename tuple_type<A5>::reference m_x;
00267 };
00268 
00269 
00270 
00271 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
00272 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 0> : tuple_type<A0> {
00273     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 >& x) : m_x(x.a0) {}
00274     typename tuple_type<A0>::reference get() { return m_x; }
00275     typename tuple_type<A0>::const_reference get() const { return m_x; }
00276 private:
00277     typename tuple_type<A0>::reference m_x;
00278 };
00279 
00280 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
00281 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 1> : tuple_type<A1> {
00282     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 >& x) : m_x(x.a1) {}
00283     typename tuple_type<A1>::reference get() { return m_x; }
00284     typename tuple_type<A1>::const_reference get() const { return m_x; }
00285 private:
00286     typename tuple_type<A1>::reference m_x;
00287 };
00288 
00289 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
00290 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 2> : tuple_type<A2> {
00291     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 >& x) : m_x(x.a2) {}
00292     typename tuple_type<A2>::reference get() { return m_x; }
00293     typename tuple_type<A2>::const_reference get() const { return m_x; }
00294 private:
00295     typename tuple_type<A2>::reference m_x;
00296 };
00297 
00298 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
00299 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 3> : tuple_type<A3> {
00300     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 >& x) : m_x(x.a3) {}
00301     typename tuple_type<A3>::reference get() { return m_x; }
00302     typename tuple_type<A3>::const_reference get() const { return m_x; }
00303 private:
00304     typename tuple_type<A3>::reference m_x;
00305 };
00306 
00307 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
00308 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 4> : tuple_type<A4> {
00309     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 >& x) : m_x(x.a4) {}
00310     typename tuple_type<A4>::reference get() { return m_x; }
00311     typename tuple_type<A4>::const_reference get() const { return m_x; }
00312 private:
00313     typename tuple_type<A4>::reference m_x;
00314 };
00315 
00316 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
00317 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 5> : tuple_type<A5> {
00318     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 >& x) : m_x(x.a5) {}
00319     typename tuple_type<A5>::reference get() { return m_x; }
00320     typename tuple_type<A5>::const_reference get() const { return m_x; }
00321 private:
00322     typename tuple_type<A5>::reference m_x;
00323 };
00324 
00325 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
00326 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 6> : tuple_type<A6> {
00327     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 >& x) : m_x(x.a6) {}
00328     typename tuple_type<A6>::reference get() { return m_x; }
00329     typename tuple_type<A6>::const_reference get() const { return m_x; }
00330 private:
00331     typename tuple_type<A6>::reference m_x;
00332 };
00333 
00334 
00335 
00336 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
00337 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 0> : tuple_type<A0> {
00338     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 >& x) : m_x(x.a0) {}
00339     typename tuple_type<A0>::reference get() { return m_x; }
00340     typename tuple_type<A0>::const_reference get() const { return m_x; }
00341 private:
00342     typename tuple_type<A0>::reference m_x;
00343 };
00344 
00345 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
00346 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 1> : tuple_type<A1> {
00347     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 >& x) : m_x(x.a1) {}
00348     typename tuple_type<A1>::reference get() { return m_x; }
00349     typename tuple_type<A1>::const_reference get() const { return m_x; }
00350 private:
00351     typename tuple_type<A1>::reference m_x;
00352 };
00353 
00354 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
00355 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 2> : tuple_type<A2> {
00356     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 >& x) : m_x(x.a2) {}
00357     typename tuple_type<A2>::reference get() { return m_x; }
00358     typename tuple_type<A2>::const_reference get() const { return m_x; }
00359 private:
00360     typename tuple_type<A2>::reference m_x;
00361 };
00362 
00363 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
00364 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 3> : tuple_type<A3> {
00365     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 >& x) : m_x(x.a3) {}
00366     typename tuple_type<A3>::reference get() { return m_x; }
00367     typename tuple_type<A3>::const_reference get() const { return m_x; }
00368 private:
00369     typename tuple_type<A3>::reference m_x;
00370 };
00371 
00372 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
00373 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 4> : tuple_type<A4> {
00374     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 >& x) : m_x(x.a4) {}
00375     typename tuple_type<A4>::reference get() { return m_x; }
00376     typename tuple_type<A4>::const_reference get() const { return m_x; }
00377 private:
00378     typename tuple_type<A4>::reference m_x;
00379 };
00380 
00381 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
00382 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 5> : tuple_type<A5> {
00383     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 >& x) : m_x(x.a5) {}
00384     typename tuple_type<A5>::reference get() { return m_x; }
00385     typename tuple_type<A5>::const_reference get() const { return m_x; }
00386 private:
00387     typename tuple_type<A5>::reference m_x;
00388 };
00389 
00390 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
00391 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 6> : tuple_type<A6> {
00392     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 >& x) : m_x(x.a6) {}
00393     typename tuple_type<A6>::reference get() { return m_x; }
00394     typename tuple_type<A6>::const_reference get() const { return m_x; }
00395 private:
00396     typename tuple_type<A6>::reference m_x;
00397 };
00398 
00399 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
00400 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 7> : tuple_type<A7> {
00401     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 >& x) : m_x(x.a7) {}
00402     typename tuple_type<A7>::reference get() { return m_x; }
00403     typename tuple_type<A7>::const_reference get() const { return m_x; }
00404 private:
00405     typename tuple_type<A7>::reference m_x;
00406 };
00407 
00408 
00409 
00410 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
00411 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 0> : tuple_type<A0> {
00412     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 >& x) : m_x(x.a0) {}
00413     typename tuple_type<A0>::reference get() { return m_x; }
00414     typename tuple_type<A0>::const_reference get() const { return m_x; }
00415 private:
00416     typename tuple_type<A0>::reference m_x;
00417 };
00418 
00419 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
00420 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 1> : tuple_type<A1> {
00421     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 >& x) : m_x(x.a1) {}
00422     typename tuple_type<A1>::reference get() { return m_x; }
00423     typename tuple_type<A1>::const_reference get() const { return m_x; }
00424 private:
00425     typename tuple_type<A1>::reference m_x;
00426 };
00427 
00428 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
00429 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 2> : tuple_type<A2> {
00430     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 >& x) : m_x(x.a2) {}
00431     typename tuple_type<A2>::reference get() { return m_x; }
00432     typename tuple_type<A2>::const_reference get() const { return m_x; }
00433 private:
00434     typename tuple_type<A2>::reference m_x;
00435 };
00436 
00437 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
00438 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 3> : tuple_type<A3> {
00439     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 >& x) : m_x(x.a3) {}
00440     typename tuple_type<A3>::reference get() { return m_x; }
00441     typename tuple_type<A3>::const_reference get() const { return m_x; }
00442 private:
00443     typename tuple_type<A3>::reference m_x;
00444 };
00445 
00446 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
00447 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 4> : tuple_type<A4> {
00448     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 >& x) : m_x(x.a4) {}
00449     typename tuple_type<A4>::reference get() { return m_x; }
00450     typename tuple_type<A4>::const_reference get() const { return m_x; }
00451 private:
00452     typename tuple_type<A4>::reference m_x;
00453 };
00454 
00455 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
00456 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 5> : tuple_type<A5> {
00457     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 >& x) : m_x(x.a5) {}
00458     typename tuple_type<A5>::reference get() { return m_x; }
00459     typename tuple_type<A5>::const_reference get() const { return m_x; }
00460 private:
00461     typename tuple_type<A5>::reference m_x;
00462 };
00463 
00464 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
00465 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 6> : tuple_type<A6> {
00466     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 >& x) : m_x(x.a6) {}
00467     typename tuple_type<A6>::reference get() { return m_x; }
00468     typename tuple_type<A6>::const_reference get() const { return m_x; }
00469 private:
00470     typename tuple_type<A6>::reference m_x;
00471 };
00472 
00473 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
00474 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 7> : tuple_type<A7> {
00475     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 >& x) : m_x(x.a7) {}
00476     typename tuple_type<A7>::reference get() { return m_x; }
00477     typename tuple_type<A7>::const_reference get() const { return m_x; }
00478 private:
00479     typename tuple_type<A7>::reference m_x;
00480 };
00481 
00482 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
00483 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 8> : tuple_type<A8> {
00484     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 >& x) : m_x(x.a8) {}
00485     typename tuple_type<A8>::reference get() { return m_x; }
00486     typename tuple_type<A8>::const_reference get() const { return m_x; }
00487 private:
00488     typename tuple_type<A8>::reference m_x;
00489 };
00490 
00491 
00492 
00493 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
00494 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 0> : tuple_type<A0> {
00495     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 >& x) : m_x(x.a0) {}
00496     typename tuple_type<A0>::reference get() { return m_x; }
00497     typename tuple_type<A0>::const_reference get() const { return m_x; }
00498 private:
00499     typename tuple_type<A0>::reference m_x;
00500 };
00501 
00502 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
00503 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 1> : tuple_type<A1> {
00504     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 >& x) : m_x(x.a1) {}
00505     typename tuple_type<A1>::reference get() { return m_x; }
00506     typename tuple_type<A1>::const_reference get() const { return m_x; }
00507 private:
00508     typename tuple_type<A1>::reference m_x;
00509 };
00510 
00511 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
00512 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 2> : tuple_type<A2> {
00513     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 >& x) : m_x(x.a2) {}
00514     typename tuple_type<A2>::reference get() { return m_x; }
00515     typename tuple_type<A2>::const_reference get() const { return m_x; }
00516 private:
00517     typename tuple_type<A2>::reference m_x;
00518 };
00519 
00520 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
00521 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 3> : tuple_type<A3> {
00522     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 >& x) : m_x(x.a3) {}
00523     typename tuple_type<A3>::reference get() { return m_x; }
00524     typename tuple_type<A3>::const_reference get() const { return m_x; }
00525 private:
00526     typename tuple_type<A3>::reference m_x;
00527 };
00528 
00529 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
00530 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 4> : tuple_type<A4> {
00531     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 >& x) : m_x(x.a4) {}
00532     typename tuple_type<A4>::reference get() { return m_x; }
00533     typename tuple_type<A4>::const_reference get() const { return m_x; }
00534 private:
00535     typename tuple_type<A4>::reference m_x;
00536 };
00537 
00538 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
00539 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 5> : tuple_type<A5> {
00540     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 >& x) : m_x(x.a5) {}
00541     typename tuple_type<A5>::reference get() { return m_x; }
00542     typename tuple_type<A5>::const_reference get() const { return m_x; }
00543 private:
00544     typename tuple_type<A5>::reference m_x;
00545 };
00546 
00547 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
00548 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 6> : tuple_type<A6> {
00549     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 >& x) : m_x(x.a6) {}
00550     typename tuple_type<A6>::reference get() { return m_x; }
00551     typename tuple_type<A6>::const_reference get() const { return m_x; }
00552 private:
00553     typename tuple_type<A6>::reference m_x;
00554 };
00555 
00556 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
00557 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 7> : tuple_type<A7> {
00558     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 >& x) : m_x(x.a7) {}
00559     typename tuple_type<A7>::reference get() { return m_x; }
00560     typename tuple_type<A7>::const_reference get() const { return m_x; }
00561 private:
00562     typename tuple_type<A7>::reference m_x;
00563 };
00564 
00565 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
00566 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 8> : tuple_type<A8> {
00567     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 >& x) : m_x(x.a8) {}
00568     typename tuple_type<A8>::reference get() { return m_x; }
00569     typename tuple_type<A8>::const_reference get() const { return m_x; }
00570 private:
00571     typename tuple_type<A8>::reference m_x;
00572 };
00573 
00574 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
00575 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 9> : tuple_type<A9> {
00576     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 >& x) : m_x(x.a9) {}
00577     typename tuple_type<A9>::reference get() { return m_x; }
00578     typename tuple_type<A9>::const_reference get() const { return m_x; }
00579 private:
00580     typename tuple_type<A9>::reference m_x;
00581 };
00582 
00583 
00584 
00585 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
00586 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 0> : tuple_type<A0> {
00587     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 >& x) : m_x(x.a0) {}
00588     typename tuple_type<A0>::reference get() { return m_x; }
00589     typename tuple_type<A0>::const_reference get() const { return m_x; }
00590 private:
00591     typename tuple_type<A0>::reference m_x;
00592 };
00593 
00594 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
00595 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 1> : tuple_type<A1> {
00596     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 >& x) : m_x(x.a1) {}
00597     typename tuple_type<A1>::reference get() { return m_x; }
00598     typename tuple_type<A1>::const_reference get() const { return m_x; }
00599 private:
00600     typename tuple_type<A1>::reference m_x;
00601 };
00602 
00603 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
00604 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 2> : tuple_type<A2> {
00605     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 >& x) : m_x(x.a2) {}
00606     typename tuple_type<A2>::reference get() { return m_x; }
00607     typename tuple_type<A2>::const_reference get() const { return m_x; }
00608 private:
00609     typename tuple_type<A2>::reference m_x;
00610 };
00611 
00612 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
00613 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 3> : tuple_type<A3> {
00614     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 >& x) : m_x(x.a3) {}
00615     typename tuple_type<A3>::reference get() { return m_x; }
00616     typename tuple_type<A3>::const_reference get() const { return m_x; }
00617 private:
00618     typename tuple_type<A3>::reference m_x;
00619 };
00620 
00621 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
00622 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 4> : tuple_type<A4> {
00623     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 >& x) : m_x(x.a4) {}
00624     typename tuple_type<A4>::reference get() { return m_x; }
00625     typename tuple_type<A4>::const_reference get() const { return m_x; }
00626 private:
00627     typename tuple_type<A4>::reference m_x;
00628 };
00629 
00630 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
00631 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 5> : tuple_type<A5> {
00632     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 >& x) : m_x(x.a5) {}
00633     typename tuple_type<A5>::reference get() { return m_x; }
00634     typename tuple_type<A5>::const_reference get() const { return m_x; }
00635 private:
00636     typename tuple_type<A5>::reference m_x;
00637 };
00638 
00639 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
00640 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 6> : tuple_type<A6> {
00641     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 >& x) : m_x(x.a6) {}
00642     typename tuple_type<A6>::reference get() { return m_x; }
00643     typename tuple_type<A6>::const_reference get() const { return m_x; }
00644 private:
00645     typename tuple_type<A6>::reference m_x;
00646 };
00647 
00648 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
00649 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 7> : tuple_type<A7> {
00650     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 >& x) : m_x(x.a7) {}
00651     typename tuple_type<A7>::reference get() { return m_x; }
00652     typename tuple_type<A7>::const_reference get() const { return m_x; }
00653 private:
00654     typename tuple_type<A7>::reference m_x;
00655 };
00656 
00657 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
00658 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 8> : tuple_type<A8> {
00659     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 >& x) : m_x(x.a8) {}
00660     typename tuple_type<A8>::reference get() { return m_x; }
00661     typename tuple_type<A8>::const_reference get() const { return m_x; }
00662 private:
00663     typename tuple_type<A8>::reference m_x;
00664 };
00665 
00666 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
00667 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 9> : tuple_type<A9> {
00668     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 >& x) : m_x(x.a9) {}
00669     typename tuple_type<A9>::reference get() { return m_x; }
00670     typename tuple_type<A9>::const_reference get() const { return m_x; }
00671 private:
00672     typename tuple_type<A9>::reference m_x;
00673 };
00674 
00675 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
00676 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 10> : tuple_type<A10> {
00677     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 >& x) : m_x(x.a10) {}
00678     typename tuple_type<A10>::reference get() { return m_x; }
00679     typename tuple_type<A10>::const_reference get() const { return m_x; }
00680 private:
00681     typename tuple_type<A10>::reference m_x;
00682 };
00683 
00684 
00685 
00686 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
00687 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 0> : tuple_type<A0> {
00688     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a0) {}
00689     typename tuple_type<A0>::reference get() { return m_x; }
00690     typename tuple_type<A0>::const_reference get() const { return m_x; }
00691 private:
00692     typename tuple_type<A0>::reference m_x;
00693 };
00694 
00695 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
00696 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 1> : tuple_type<A1> {
00697     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a1) {}
00698     typename tuple_type<A1>::reference get() { return m_x; }
00699     typename tuple_type<A1>::const_reference get() const { return m_x; }
00700 private:
00701     typename tuple_type<A1>::reference m_x;
00702 };
00703 
00704 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
00705 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 2> : tuple_type<A2> {
00706     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a2) {}
00707     typename tuple_type<A2>::reference get() { return m_x; }
00708     typename tuple_type<A2>::const_reference get() const { return m_x; }
00709 private:
00710     typename tuple_type<A2>::reference m_x;
00711 };
00712 
00713 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
00714 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 3> : tuple_type<A3> {
00715     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a3) {}
00716     typename tuple_type<A3>::reference get() { return m_x; }
00717     typename tuple_type<A3>::const_reference get() const { return m_x; }
00718 private:
00719     typename tuple_type<A3>::reference m_x;
00720 };
00721 
00722 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
00723 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 4> : tuple_type<A4> {
00724     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a4) {}
00725     typename tuple_type<A4>::reference get() { return m_x; }
00726     typename tuple_type<A4>::const_reference get() const { return m_x; }
00727 private:
00728     typename tuple_type<A4>::reference m_x;
00729 };
00730 
00731 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
00732 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 5> : tuple_type<A5> {
00733     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a5) {}
00734     typename tuple_type<A5>::reference get() { return m_x; }
00735     typename tuple_type<A5>::const_reference get() const { return m_x; }
00736 private:
00737     typename tuple_type<A5>::reference m_x;
00738 };
00739 
00740 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
00741 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 6> : tuple_type<A6> {
00742     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a6) {}
00743     typename tuple_type<A6>::reference get() { return m_x; }
00744     typename tuple_type<A6>::const_reference get() const { return m_x; }
00745 private:
00746     typename tuple_type<A6>::reference m_x;
00747 };
00748 
00749 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
00750 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 7> : tuple_type<A7> {
00751     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a7) {}
00752     typename tuple_type<A7>::reference get() { return m_x; }
00753     typename tuple_type<A7>::const_reference get() const { return m_x; }
00754 private:
00755     typename tuple_type<A7>::reference m_x;
00756 };
00757 
00758 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
00759 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 8> : tuple_type<A8> {
00760     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a8) {}
00761     typename tuple_type<A8>::reference get() { return m_x; }
00762     typename tuple_type<A8>::const_reference get() const { return m_x; }
00763 private:
00764     typename tuple_type<A8>::reference m_x;
00765 };
00766 
00767 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
00768 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 9> : tuple_type<A9> {
00769     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a9) {}
00770     typename tuple_type<A9>::reference get() { return m_x; }
00771     typename tuple_type<A9>::const_reference get() const { return m_x; }
00772 private:
00773     typename tuple_type<A9>::reference m_x;
00774 };
00775 
00776 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
00777 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 10> : tuple_type<A10> {
00778     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a10) {}
00779     typename tuple_type<A10>::reference get() { return m_x; }
00780     typename tuple_type<A10>::const_reference get() const { return m_x; }
00781 private:
00782     typename tuple_type<A10>::reference m_x;
00783 };
00784 
00785 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
00786 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 11> : tuple_type<A11> {
00787     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 >& x) : m_x(x.a11) {}
00788     typename tuple_type<A11>::reference get() { return m_x; }
00789     typename tuple_type<A11>::const_reference get() const { return m_x; }
00790 private:
00791     typename tuple_type<A11>::reference m_x;
00792 };
00793 
00794 
00795 
00796 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
00797 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 0> : tuple_type<A0> {
00798     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a0) {}
00799     typename tuple_type<A0>::reference get() { return m_x; }
00800     typename tuple_type<A0>::const_reference get() const { return m_x; }
00801 private:
00802     typename tuple_type<A0>::reference m_x;
00803 };
00804 
00805 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
00806 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 1> : tuple_type<A1> {
00807     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a1) {}
00808     typename tuple_type<A1>::reference get() { return m_x; }
00809     typename tuple_type<A1>::const_reference get() const { return m_x; }
00810 private:
00811     typename tuple_type<A1>::reference m_x;
00812 };
00813 
00814 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
00815 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 2> : tuple_type<A2> {
00816     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a2) {}
00817     typename tuple_type<A2>::reference get() { return m_x; }
00818     typename tuple_type<A2>::const_reference get() const { return m_x; }
00819 private:
00820     typename tuple_type<A2>::reference m_x;
00821 };
00822 
00823 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
00824 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 3> : tuple_type<A3> {
00825     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a3) {}
00826     typename tuple_type<A3>::reference get() { return m_x; }
00827     typename tuple_type<A3>::const_reference get() const { return m_x; }
00828 private:
00829     typename tuple_type<A3>::reference m_x;
00830 };
00831 
00832 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
00833 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 4> : tuple_type<A4> {
00834     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a4) {}
00835     typename tuple_type<A4>::reference get() { return m_x; }
00836     typename tuple_type<A4>::const_reference get() const { return m_x; }
00837 private:
00838     typename tuple_type<A4>::reference m_x;
00839 };
00840 
00841 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
00842 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 5> : tuple_type<A5> {
00843     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a5) {}
00844     typename tuple_type<A5>::reference get() { return m_x; }
00845     typename tuple_type<A5>::const_reference get() const { return m_x; }
00846 private:
00847     typename tuple_type<A5>::reference m_x;
00848 };
00849 
00850 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
00851 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 6> : tuple_type<A6> {
00852     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a6) {}
00853     typename tuple_type<A6>::reference get() { return m_x; }
00854     typename tuple_type<A6>::const_reference get() const { return m_x; }
00855 private:
00856     typename tuple_type<A6>::reference m_x;
00857 };
00858 
00859 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
00860 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 7> : tuple_type<A7> {
00861     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a7) {}
00862     typename tuple_type<A7>::reference get() { return m_x; }
00863     typename tuple_type<A7>::const_reference get() const { return m_x; }
00864 private:
00865     typename tuple_type<A7>::reference m_x;
00866 };
00867 
00868 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
00869 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 8> : tuple_type<A8> {
00870     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a8) {}
00871     typename tuple_type<A8>::reference get() { return m_x; }
00872     typename tuple_type<A8>::const_reference get() const { return m_x; }
00873 private:
00874     typename tuple_type<A8>::reference m_x;
00875 };
00876 
00877 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
00878 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 9> : tuple_type<A9> {
00879     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a9) {}
00880     typename tuple_type<A9>::reference get() { return m_x; }
00881     typename tuple_type<A9>::const_reference get() const { return m_x; }
00882 private:
00883     typename tuple_type<A9>::reference m_x;
00884 };
00885 
00886 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
00887 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 10> : tuple_type<A10> {
00888     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a10) {}
00889     typename tuple_type<A10>::reference get() { return m_x; }
00890     typename tuple_type<A10>::const_reference get() const { return m_x; }
00891 private:
00892     typename tuple_type<A10>::reference m_x;
00893 };
00894 
00895 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
00896 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 11> : tuple_type<A11> {
00897     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a11) {}
00898     typename tuple_type<A11>::reference get() { return m_x; }
00899     typename tuple_type<A11>::const_reference get() const { return m_x; }
00900 private:
00901     typename tuple_type<A11>::reference m_x;
00902 };
00903 
00904 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
00905 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 12> : tuple_type<A12> {
00906     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 >& x) : m_x(x.a12) {}
00907     typename tuple_type<A12>::reference get() { return m_x; }
00908     typename tuple_type<A12>::const_reference get() const { return m_x; }
00909 private:
00910     typename tuple_type<A12>::reference m_x;
00911 };
00912 
00913 
00914 
00915 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
00916 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 0> : tuple_type<A0> {
00917     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a0) {}
00918     typename tuple_type<A0>::reference get() { return m_x; }
00919     typename tuple_type<A0>::const_reference get() const { return m_x; }
00920 private:
00921     typename tuple_type<A0>::reference m_x;
00922 };
00923 
00924 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
00925 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 1> : tuple_type<A1> {
00926     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a1) {}
00927     typename tuple_type<A1>::reference get() { return m_x; }
00928     typename tuple_type<A1>::const_reference get() const { return m_x; }
00929 private:
00930     typename tuple_type<A1>::reference m_x;
00931 };
00932 
00933 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
00934 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 2> : tuple_type<A2> {
00935     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a2) {}
00936     typename tuple_type<A2>::reference get() { return m_x; }
00937     typename tuple_type<A2>::const_reference get() const { return m_x; }
00938 private:
00939     typename tuple_type<A2>::reference m_x;
00940 };
00941 
00942 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
00943 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 3> : tuple_type<A3> {
00944     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a3) {}
00945     typename tuple_type<A3>::reference get() { return m_x; }
00946     typename tuple_type<A3>::const_reference get() const { return m_x; }
00947 private:
00948     typename tuple_type<A3>::reference m_x;
00949 };
00950 
00951 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
00952 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 4> : tuple_type<A4> {
00953     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a4) {}
00954     typename tuple_type<A4>::reference get() { return m_x; }
00955     typename tuple_type<A4>::const_reference get() const { return m_x; }
00956 private:
00957     typename tuple_type<A4>::reference m_x;
00958 };
00959 
00960 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
00961 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 5> : tuple_type<A5> {
00962     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a5) {}
00963     typename tuple_type<A5>::reference get() { return m_x; }
00964     typename tuple_type<A5>::const_reference get() const { return m_x; }
00965 private:
00966     typename tuple_type<A5>::reference m_x;
00967 };
00968 
00969 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
00970 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 6> : tuple_type<A6> {
00971     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a6) {}
00972     typename tuple_type<A6>::reference get() { return m_x; }
00973     typename tuple_type<A6>::const_reference get() const { return m_x; }
00974 private:
00975     typename tuple_type<A6>::reference m_x;
00976 };
00977 
00978 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
00979 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 7> : tuple_type<A7> {
00980     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a7) {}
00981     typename tuple_type<A7>::reference get() { return m_x; }
00982     typename tuple_type<A7>::const_reference get() const { return m_x; }
00983 private:
00984     typename tuple_type<A7>::reference m_x;
00985 };
00986 
00987 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
00988 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 8> : tuple_type<A8> {
00989     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a8) {}
00990     typename tuple_type<A8>::reference get() { return m_x; }
00991     typename tuple_type<A8>::const_reference get() const { return m_x; }
00992 private:
00993     typename tuple_type<A8>::reference m_x;
00994 };
00995 
00996 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
00997 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 9> : tuple_type<A9> {
00998     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a9) {}
00999     typename tuple_type<A9>::reference get() { return m_x; }
01000     typename tuple_type<A9>::const_reference get() const { return m_x; }
01001 private:
01002     typename tuple_type<A9>::reference m_x;
01003 };
01004 
01005 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
01006 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 10> : tuple_type<A10> {
01007     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a10) {}
01008     typename tuple_type<A10>::reference get() { return m_x; }
01009     typename tuple_type<A10>::const_reference get() const { return m_x; }
01010 private:
01011     typename tuple_type<A10>::reference m_x;
01012 };
01013 
01014 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
01015 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 11> : tuple_type<A11> {
01016     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a11) {}
01017     typename tuple_type<A11>::reference get() { return m_x; }
01018     typename tuple_type<A11>::const_reference get() const { return m_x; }
01019 private:
01020     typename tuple_type<A11>::reference m_x;
01021 };
01022 
01023 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
01024 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 12> : tuple_type<A12> {
01025     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a12) {}
01026     typename tuple_type<A12>::reference get() { return m_x; }
01027     typename tuple_type<A12>::const_reference get() const { return m_x; }
01028 private:
01029     typename tuple_type<A12>::reference m_x;
01030 };
01031 
01032 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
01033 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 13> : tuple_type<A13> {
01034     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 >& x) : m_x(x.a13) {}
01035     typename tuple_type<A13>::reference get() { return m_x; }
01036     typename tuple_type<A13>::const_reference get() const { return m_x; }
01037 private:
01038     typename tuple_type<A13>::reference m_x;
01039 };
01040 
01041 
01042 
01043 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
01044 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 0> : tuple_type<A0> {
01045     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a0) {}
01046     typename tuple_type<A0>::reference get() { return m_x; }
01047     typename tuple_type<A0>::const_reference get() const { return m_x; }
01048 private:
01049     typename tuple_type<A0>::reference m_x;
01050 };
01051 
01052 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
01053 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 1> : tuple_type<A1> {
01054     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a1) {}
01055     typename tuple_type<A1>::reference get() { return m_x; }
01056     typename tuple_type<A1>::const_reference get() const { return m_x; }
01057 private:
01058     typename tuple_type<A1>::reference m_x;
01059 };
01060 
01061 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
01062 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 2> : tuple_type<A2> {
01063     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a2) {}
01064     typename tuple_type<A2>::reference get() { return m_x; }
01065     typename tuple_type<A2>::const_reference get() const { return m_x; }
01066 private:
01067     typename tuple_type<A2>::reference m_x;
01068 };
01069 
01070 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
01071 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 3> : tuple_type<A3> {
01072     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a3) {}
01073     typename tuple_type<A3>::reference get() { return m_x; }
01074     typename tuple_type<A3>::const_reference get() const { return m_x; }
01075 private:
01076     typename tuple_type<A3>::reference m_x;
01077 };
01078 
01079 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
01080 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 4> : tuple_type<A4> {
01081     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a4) {}
01082     typename tuple_type<A4>::reference get() { return m_x; }
01083     typename tuple_type<A4>::const_reference get() const { return m_x; }
01084 private:
01085     typename tuple_type<A4>::reference m_x;
01086 };
01087 
01088 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
01089 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 5> : tuple_type<A5> {
01090     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a5) {}
01091     typename tuple_type<A5>::reference get() { return m_x; }
01092     typename tuple_type<A5>::const_reference get() const { return m_x; }
01093 private:
01094     typename tuple_type<A5>::reference m_x;
01095 };
01096 
01097 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
01098 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 6> : tuple_type<A6> {
01099     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a6) {}
01100     typename tuple_type<A6>::reference get() { return m_x; }
01101     typename tuple_type<A6>::const_reference get() const { return m_x; }
01102 private:
01103     typename tuple_type<A6>::reference m_x;
01104 };
01105 
01106 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
01107 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 7> : tuple_type<A7> {
01108     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a7) {}
01109     typename tuple_type<A7>::reference get() { return m_x; }
01110     typename tuple_type<A7>::const_reference get() const { return m_x; }
01111 private:
01112     typename tuple_type<A7>::reference m_x;
01113 };
01114 
01115 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
01116 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 8> : tuple_type<A8> {
01117     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a8) {}
01118     typename tuple_type<A8>::reference get() { return m_x; }
01119     typename tuple_type<A8>::const_reference get() const { return m_x; }
01120 private:
01121     typename tuple_type<A8>::reference m_x;
01122 };
01123 
01124 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
01125 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 9> : tuple_type<A9> {
01126     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a9) {}
01127     typename tuple_type<A9>::reference get() { return m_x; }
01128     typename tuple_type<A9>::const_reference get() const { return m_x; }
01129 private:
01130     typename tuple_type<A9>::reference m_x;
01131 };
01132 
01133 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
01134 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 10> : tuple_type<A10> {
01135     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a10) {}
01136     typename tuple_type<A10>::reference get() { return m_x; }
01137     typename tuple_type<A10>::const_reference get() const { return m_x; }
01138 private:
01139     typename tuple_type<A10>::reference m_x;
01140 };
01141 
01142 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
01143 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 11> : tuple_type<A11> {
01144     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a11) {}
01145     typename tuple_type<A11>::reference get() { return m_x; }
01146     typename tuple_type<A11>::const_reference get() const { return m_x; }
01147 private:
01148     typename tuple_type<A11>::reference m_x;
01149 };
01150 
01151 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
01152 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 12> : tuple_type<A12> {
01153     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a12) {}
01154     typename tuple_type<A12>::reference get() { return m_x; }
01155     typename tuple_type<A12>::const_reference get() const { return m_x; }
01156 private:
01157     typename tuple_type<A12>::reference m_x;
01158 };
01159 
01160 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
01161 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 13> : tuple_type<A13> {
01162     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a13) {}
01163     typename tuple_type<A13>::reference get() { return m_x; }
01164     typename tuple_type<A13>::const_reference get() const { return m_x; }
01165 private:
01166     typename tuple_type<A13>::reference m_x;
01167 };
01168 
01169 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
01170 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 14> : tuple_type<A14> {
01171     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 >& x) : m_x(x.a14) {}
01172     typename tuple_type<A14>::reference get() { return m_x; }
01173     typename tuple_type<A14>::const_reference get() const { return m_x; }
01174 private:
01175     typename tuple_type<A14>::reference m_x;
01176 };
01177 
01178 
01179 
01180 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
01181 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 0> : tuple_type<A0> {
01182     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a0) {}
01183     typename tuple_type<A0>::reference get() { return m_x; }
01184     typename tuple_type<A0>::const_reference get() const { return m_x; }
01185 private:
01186     typename tuple_type<A0>::reference m_x;
01187 };
01188 
01189 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
01190 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 1> : tuple_type<A1> {
01191     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a1) {}
01192     typename tuple_type<A1>::reference get() { return m_x; }
01193     typename tuple_type<A1>::const_reference get() const { return m_x; }
01194 private:
01195     typename tuple_type<A1>::reference m_x;
01196 };
01197 
01198 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
01199 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 2> : tuple_type<A2> {
01200     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a2) {}
01201     typename tuple_type<A2>::reference get() { return m_x; }
01202     typename tuple_type<A2>::const_reference get() const { return m_x; }
01203 private:
01204     typename tuple_type<A2>::reference m_x;
01205 };
01206 
01207 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
01208 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 3> : tuple_type<A3> {
01209     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a3) {}
01210     typename tuple_type<A3>::reference get() { return m_x; }
01211     typename tuple_type<A3>::const_reference get() const { return m_x; }
01212 private:
01213     typename tuple_type<A3>::reference m_x;
01214 };
01215 
01216 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
01217 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 4> : tuple_type<A4> {
01218     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a4) {}
01219     typename tuple_type<A4>::reference get() { return m_x; }
01220     typename tuple_type<A4>::const_reference get() const { return m_x; }
01221 private:
01222     typename tuple_type<A4>::reference m_x;
01223 };
01224 
01225 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
01226 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 5> : tuple_type<A5> {
01227     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a5) {}
01228     typename tuple_type<A5>::reference get() { return m_x; }
01229     typename tuple_type<A5>::const_reference get() const { return m_x; }
01230 private:
01231     typename tuple_type<A5>::reference m_x;
01232 };
01233 
01234 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
01235 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 6> : tuple_type<A6> {
01236     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a6) {}
01237     typename tuple_type<A6>::reference get() { return m_x; }
01238     typename tuple_type<A6>::const_reference get() const { return m_x; }
01239 private:
01240     typename tuple_type<A6>::reference m_x;
01241 };
01242 
01243 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
01244 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 7> : tuple_type<A7> {
01245     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a7) {}
01246     typename tuple_type<A7>::reference get() { return m_x; }
01247     typename tuple_type<A7>::const_reference get() const { return m_x; }
01248 private:
01249     typename tuple_type<A7>::reference m_x;
01250 };
01251 
01252 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
01253 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 8> : tuple_type<A8> {
01254     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a8) {}
01255     typename tuple_type<A8>::reference get() { return m_x; }
01256     typename tuple_type<A8>::const_reference get() const { return m_x; }
01257 private:
01258     typename tuple_type<A8>::reference m_x;
01259 };
01260 
01261 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
01262 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 9> : tuple_type<A9> {
01263     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a9) {}
01264     typename tuple_type<A9>::reference get() { return m_x; }
01265     typename tuple_type<A9>::const_reference get() const { return m_x; }
01266 private:
01267     typename tuple_type<A9>::reference m_x;
01268 };
01269 
01270 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
01271 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 10> : tuple_type<A10> {
01272     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a10) {}
01273     typename tuple_type<A10>::reference get() { return m_x; }
01274     typename tuple_type<A10>::const_reference get() const { return m_x; }
01275 private:
01276     typename tuple_type<A10>::reference m_x;
01277 };
01278 
01279 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
01280 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 11> : tuple_type<A11> {
01281     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a11) {}
01282     typename tuple_type<A11>::reference get() { return m_x; }
01283     typename tuple_type<A11>::const_reference get() const { return m_x; }
01284 private:
01285     typename tuple_type<A11>::reference m_x;
01286 };
01287 
01288 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
01289 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 12> : tuple_type<A12> {
01290     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a12) {}
01291     typename tuple_type<A12>::reference get() { return m_x; }
01292     typename tuple_type<A12>::const_reference get() const { return m_x; }
01293 private:
01294     typename tuple_type<A12>::reference m_x;
01295 };
01296 
01297 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
01298 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 13> : tuple_type<A13> {
01299     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a13) {}
01300     typename tuple_type<A13>::reference get() { return m_x; }
01301     typename tuple_type<A13>::const_reference get() const { return m_x; }
01302 private:
01303     typename tuple_type<A13>::reference m_x;
01304 };
01305 
01306 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
01307 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 14> : tuple_type<A14> {
01308     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a14) {}
01309     typename tuple_type<A14>::reference get() { return m_x; }
01310     typename tuple_type<A14>::const_reference get() const { return m_x; }
01311 private:
01312     typename tuple_type<A14>::reference m_x;
01313 };
01314 
01315 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
01316 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, 15> : tuple_type<A15> {
01317     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 >& x) : m_x(x.a15) {}
01318     typename tuple_type<A15>::reference get() { return m_x; }
01319     typename tuple_type<A15>::const_reference get() const { return m_x; }
01320 private:
01321     typename tuple_type<A15>::reference m_x;
01322 };
01323 
01324 
01325 
01326 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
01327 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> {
01328     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a0) {}
01329     typename tuple_type<A0>::reference get() { return m_x; }
01330     typename tuple_type<A0>::const_reference get() const { return m_x; }
01331 private:
01332     typename tuple_type<A0>::reference m_x;
01333 };
01334 
01335 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
01336 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> {
01337     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a1) {}
01338     typename tuple_type<A1>::reference get() { return m_x; }
01339     typename tuple_type<A1>::const_reference get() const { return m_x; }
01340 private:
01341     typename tuple_type<A1>::reference m_x;
01342 };
01343 
01344 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
01345 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> {
01346     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a2) {}
01347     typename tuple_type<A2>::reference get() { return m_x; }
01348     typename tuple_type<A2>::const_reference get() const { return m_x; }
01349 private:
01350     typename tuple_type<A2>::reference m_x;
01351 };
01352 
01353 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
01354 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> {
01355     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a3) {}
01356     typename tuple_type<A3>::reference get() { return m_x; }
01357     typename tuple_type<A3>::const_reference get() const { return m_x; }
01358 private:
01359     typename tuple_type<A3>::reference m_x;
01360 };
01361 
01362 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
01363 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> {
01364     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a4) {}
01365     typename tuple_type<A4>::reference get() { return m_x; }
01366     typename tuple_type<A4>::const_reference get() const { return m_x; }
01367 private:
01368     typename tuple_type<A4>::reference m_x;
01369 };
01370 
01371 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
01372 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> {
01373     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a5) {}
01374     typename tuple_type<A5>::reference get() { return m_x; }
01375     typename tuple_type<A5>::const_reference get() const { return m_x; }
01376 private:
01377     typename tuple_type<A5>::reference m_x;
01378 };
01379 
01380 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
01381 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> {
01382     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a6) {}
01383     typename tuple_type<A6>::reference get() { return m_x; }
01384     typename tuple_type<A6>::const_reference get() const { return m_x; }
01385 private:
01386     typename tuple_type<A6>::reference m_x;
01387 };
01388 
01389 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
01390 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> {
01391     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a7) {}
01392     typename tuple_type<A7>::reference get() { return m_x; }
01393     typename tuple_type<A7>::const_reference get() const { return m_x; }
01394 private:
01395     typename tuple_type<A7>::reference m_x;
01396 };
01397 
01398 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
01399 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> {
01400     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a8) {}
01401     typename tuple_type<A8>::reference get() { return m_x; }
01402     typename tuple_type<A8>::const_reference get() const { return m_x; }
01403 private:
01404     typename tuple_type<A8>::reference m_x;
01405 };
01406 
01407 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
01408 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> {
01409     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a9) {}
01410     typename tuple_type<A9>::reference get() { return m_x; }
01411     typename tuple_type<A9>::const_reference get() const { return m_x; }
01412 private:
01413     typename tuple_type<A9>::reference m_x;
01414 };
01415 
01416 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
01417 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> {
01418     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a10) {}
01419     typename tuple_type<A10>::reference get() { return m_x; }
01420     typename tuple_type<A10>::const_reference get() const { return m_x; }
01421 private:
01422     typename tuple_type<A10>::reference m_x;
01423 };
01424 
01425 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
01426 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> {
01427     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a11) {}
01428     typename tuple_type<A11>::reference get() { return m_x; }
01429     typename tuple_type<A11>::const_reference get() const { return m_x; }
01430 private:
01431     typename tuple_type<A11>::reference m_x;
01432 };
01433 
01434 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
01435 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> {
01436     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a12) {}
01437     typename tuple_type<A12>::reference get() { return m_x; }
01438     typename tuple_type<A12>::const_reference get() const { return m_x; }
01439 private:
01440     typename tuple_type<A12>::reference m_x;
01441 };
01442 
01443 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
01444 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> {
01445     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a13) {}
01446     typename tuple_type<A13>::reference get() { return m_x; }
01447     typename tuple_type<A13>::const_reference get() const { return m_x; }
01448 private:
01449     typename tuple_type<A13>::reference m_x;
01450 };
01451 
01452 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
01453 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> {
01454     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a14) {}
01455     typename tuple_type<A14>::reference get() { return m_x; }
01456     typename tuple_type<A14>::const_reference get() const { return m_x; }
01457 private:
01458     typename tuple_type<A14>::reference m_x;
01459 };
01460 
01461 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
01462 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> {
01463     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a15) {}
01464     typename tuple_type<A15>::reference get() { return m_x; }
01465     typename tuple_type<A15>::const_reference get() const { return m_x; }
01466 private:
01467     typename tuple_type<A15>::reference m_x;
01468 };
01469 
01470 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
01471 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> {
01472     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 >& x) : m_x(x.a16) {}
01473     typename tuple_type<A16>::reference get() { return m_x; }
01474     typename tuple_type<A16>::const_reference get() const { return m_x; }
01475 private:
01476     typename tuple_type<A16>::reference m_x;
01477 };
01478 
01479 
01480 
01481 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
01482 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> {
01483     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a0) {}
01484     typename tuple_type<A0>::reference get() { return m_x; }
01485     typename tuple_type<A0>::const_reference get() const { return m_x; }
01486 private:
01487     typename tuple_type<A0>::reference m_x;
01488 };
01489 
01490 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
01491 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> {
01492     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a1) {}
01493     typename tuple_type<A1>::reference get() { return m_x; }
01494     typename tuple_type<A1>::const_reference get() const { return m_x; }
01495 private:
01496     typename tuple_type<A1>::reference m_x;
01497 };
01498 
01499 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
01500 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> {
01501     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a2) {}
01502     typename tuple_type<A2>::reference get() { return m_x; }
01503     typename tuple_type<A2>::const_reference get() const { return m_x; }
01504 private:
01505     typename tuple_type<A2>::reference m_x;
01506 };
01507 
01508 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
01509 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> {
01510     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a3) {}
01511     typename tuple_type<A3>::reference get() { return m_x; }
01512     typename tuple_type<A3>::const_reference get() const { return m_x; }
01513 private:
01514     typename tuple_type<A3>::reference m_x;
01515 };
01516 
01517 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
01518 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> {
01519     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a4) {}
01520     typename tuple_type<A4>::reference get() { return m_x; }
01521     typename tuple_type<A4>::const_reference get() const { return m_x; }
01522 private:
01523     typename tuple_type<A4>::reference m_x;
01524 };
01525 
01526 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
01527 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> {
01528     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a5) {}
01529     typename tuple_type<A5>::reference get() { return m_x; }
01530     typename tuple_type<A5>::const_reference get() const { return m_x; }
01531 private:
01532     typename tuple_type<A5>::reference m_x;
01533 };
01534 
01535 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
01536 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> {
01537     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a6) {}
01538     typename tuple_type<A6>::reference get() { return m_x; }
01539     typename tuple_type<A6>::const_reference get() const { return m_x; }
01540 private:
01541     typename tuple_type<A6>::reference m_x;
01542 };
01543 
01544 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
01545 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> {
01546     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a7) {}
01547     typename tuple_type<A7>::reference get() { return m_x; }
01548     typename tuple_type<A7>::const_reference get() const { return m_x; }
01549 private:
01550     typename tuple_type<A7>::reference m_x;
01551 };
01552 
01553 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
01554 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> {
01555     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a8) {}
01556     typename tuple_type<A8>::reference get() { return m_x; }
01557     typename tuple_type<A8>::const_reference get() const { return m_x; }
01558 private:
01559     typename tuple_type<A8>::reference m_x;
01560 };
01561 
01562 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
01563 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> {
01564     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a9) {}
01565     typename tuple_type<A9>::reference get() { return m_x; }
01566     typename tuple_type<A9>::const_reference get() const { return m_x; }
01567 private:
01568     typename tuple_type<A9>::reference m_x;
01569 };
01570 
01571 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
01572 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> {
01573     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a10) {}
01574     typename tuple_type<A10>::reference get() { return m_x; }
01575     typename tuple_type<A10>::const_reference get() const { return m_x; }
01576 private:
01577     typename tuple_type<A10>::reference m_x;
01578 };
01579 
01580 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
01581 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> {
01582     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a11) {}
01583     typename tuple_type<A11>::reference get() { return m_x; }
01584     typename tuple_type<A11>::const_reference get() const { return m_x; }
01585 private:
01586     typename tuple_type<A11>::reference m_x;
01587 };
01588 
01589 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
01590 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> {
01591     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a12) {}
01592     typename tuple_type<A12>::reference get() { return m_x; }
01593     typename tuple_type<A12>::const_reference get() const { return m_x; }
01594 private:
01595     typename tuple_type<A12>::reference m_x;
01596 };
01597 
01598 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
01599 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> {
01600     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a13) {}
01601     typename tuple_type<A13>::reference get() { return m_x; }
01602     typename tuple_type<A13>::const_reference get() const { return m_x; }
01603 private:
01604     typename tuple_type<A13>::reference m_x;
01605 };
01606 
01607 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
01608 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> {
01609     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a14) {}
01610     typename tuple_type<A14>::reference get() { return m_x; }
01611     typename tuple_type<A14>::const_reference get() const { return m_x; }
01612 private:
01613     typename tuple_type<A14>::reference m_x;
01614 };
01615 
01616 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
01617 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> {
01618     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a15) {}
01619     typename tuple_type<A15>::reference get() { return m_x; }
01620     typename tuple_type<A15>::const_reference get() const { return m_x; }
01621 private:
01622     typename tuple_type<A15>::reference m_x;
01623 };
01624 
01625 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
01626 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> {
01627     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a16) {}
01628     typename tuple_type<A16>::reference get() { return m_x; }
01629     typename tuple_type<A16>::const_reference get() const { return m_x; }
01630 private:
01631     typename tuple_type<A16>::reference m_x;
01632 };
01633 
01634 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
01635 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> {
01636     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 >& x) : m_x(x.a17) {}
01637     typename tuple_type<A17>::reference get() { return m_x; }
01638     typename tuple_type<A17>::const_reference get() const { return m_x; }
01639 private:
01640     typename tuple_type<A17>::reference m_x;
01641 };
01642 
01643 
01644 
01645 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
01646 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> {
01647     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a0) {}
01648     typename tuple_type<A0>::reference get() { return m_x; }
01649     typename tuple_type<A0>::const_reference get() const { return m_x; }
01650 private:
01651     typename tuple_type<A0>::reference m_x;
01652 };
01653 
01654 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
01655 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> {
01656     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a1) {}
01657     typename tuple_type<A1>::reference get() { return m_x; }
01658     typename tuple_type<A1>::const_reference get() const { return m_x; }
01659 private:
01660     typename tuple_type<A1>::reference m_x;
01661 };
01662 
01663 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
01664 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> {
01665     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a2) {}
01666     typename tuple_type<A2>::reference get() { return m_x; }
01667     typename tuple_type<A2>::const_reference get() const { return m_x; }
01668 private:
01669     typename tuple_type<A2>::reference m_x;
01670 };
01671 
01672 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
01673 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> {
01674     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a3) {}
01675     typename tuple_type<A3>::reference get() { return m_x; }
01676     typename tuple_type<A3>::const_reference get() const { return m_x; }
01677 private:
01678     typename tuple_type<A3>::reference m_x;
01679 };
01680 
01681 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
01682 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> {
01683     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a4) {}
01684     typename tuple_type<A4>::reference get() { return m_x; }
01685     typename tuple_type<A4>::const_reference get() const { return m_x; }
01686 private:
01687     typename tuple_type<A4>::reference m_x;
01688 };
01689 
01690 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
01691 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> {
01692     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a5) {}
01693     typename tuple_type<A5>::reference get() { return m_x; }
01694     typename tuple_type<A5>::const_reference get() const { return m_x; }
01695 private:
01696     typename tuple_type<A5>::reference m_x;
01697 };
01698 
01699 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
01700 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> {
01701     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a6) {}
01702     typename tuple_type<A6>::reference get() { return m_x; }
01703     typename tuple_type<A6>::const_reference get() const { return m_x; }
01704 private:
01705     typename tuple_type<A6>::reference m_x;
01706 };
01707 
01708 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
01709 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> {
01710     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a7) {}
01711     typename tuple_type<A7>::reference get() { return m_x; }
01712     typename tuple_type<A7>::const_reference get() const { return m_x; }
01713 private:
01714     typename tuple_type<A7>::reference m_x;
01715 };
01716 
01717 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
01718 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> {
01719     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a8) {}
01720     typename tuple_type<A8>::reference get() { return m_x; }
01721     typename tuple_type<A8>::const_reference get() const { return m_x; }
01722 private:
01723     typename tuple_type<A8>::reference m_x;
01724 };
01725 
01726 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
01727 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> {
01728     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a9) {}
01729     typename tuple_type<A9>::reference get() { return m_x; }
01730     typename tuple_type<A9>::const_reference get() const { return m_x; }
01731 private:
01732     typename tuple_type<A9>::reference m_x;
01733 };
01734 
01735 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
01736 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> {
01737     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a10) {}
01738     typename tuple_type<A10>::reference get() { return m_x; }
01739     typename tuple_type<A10>::const_reference get() const { return m_x; }
01740 private:
01741     typename tuple_type<A10>::reference m_x;
01742 };
01743 
01744 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
01745 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> {
01746     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a11) {}
01747     typename tuple_type<A11>::reference get() { return m_x; }
01748     typename tuple_type<A11>::const_reference get() const { return m_x; }
01749 private:
01750     typename tuple_type<A11>::reference m_x;
01751 };
01752 
01753 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
01754 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> {
01755     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a12) {}
01756     typename tuple_type<A12>::reference get() { return m_x; }
01757     typename tuple_type<A12>::const_reference get() const { return m_x; }
01758 private:
01759     typename tuple_type<A12>::reference m_x;
01760 };
01761 
01762 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
01763 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> {
01764     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a13) {}
01765     typename tuple_type<A13>::reference get() { return m_x; }
01766     typename tuple_type<A13>::const_reference get() const { return m_x; }
01767 private:
01768     typename tuple_type<A13>::reference m_x;
01769 };
01770 
01771 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
01772 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> {
01773     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a14) {}
01774     typename tuple_type<A14>::reference get() { return m_x; }
01775     typename tuple_type<A14>::const_reference get() const { return m_x; }
01776 private:
01777     typename tuple_type<A14>::reference m_x;
01778 };
01779 
01780 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
01781 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> {
01782     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a15) {}
01783     typename tuple_type<A15>::reference get() { return m_x; }
01784     typename tuple_type<A15>::const_reference get() const { return m_x; }
01785 private:
01786     typename tuple_type<A15>::reference m_x;
01787 };
01788 
01789 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
01790 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> {
01791     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a16) {}
01792     typename tuple_type<A16>::reference get() { return m_x; }
01793     typename tuple_type<A16>::const_reference get() const { return m_x; }
01794 private:
01795     typename tuple_type<A16>::reference m_x;
01796 };
01797 
01798 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
01799 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> {
01800     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a17) {}
01801     typename tuple_type<A17>::reference get() { return m_x; }
01802     typename tuple_type<A17>::const_reference get() const { return m_x; }
01803 private:
01804     typename tuple_type<A17>::reference m_x;
01805 };
01806 
01807 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
01808 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> {
01809     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 >& x) : m_x(x.a18) {}
01810     typename tuple_type<A18>::reference get() { return m_x; }
01811     typename tuple_type<A18>::const_reference get() const { return m_x; }
01812 private:
01813     typename tuple_type<A18>::reference m_x;
01814 };
01815 
01816 
01817 
01818 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
01819 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> {
01820     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a0) {}
01821     typename tuple_type<A0>::reference get() { return m_x; }
01822     typename tuple_type<A0>::const_reference get() const { return m_x; }
01823 private:
01824     typename tuple_type<A0>::reference m_x;
01825 };
01826 
01827 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
01828 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> {
01829     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a1) {}
01830     typename tuple_type<A1>::reference get() { return m_x; }
01831     typename tuple_type<A1>::const_reference get() const { return m_x; }
01832 private:
01833     typename tuple_type<A1>::reference m_x;
01834 };
01835 
01836 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
01837 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> {
01838     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a2) {}
01839     typename tuple_type<A2>::reference get() { return m_x; }
01840     typename tuple_type<A2>::const_reference get() const { return m_x; }
01841 private:
01842     typename tuple_type<A2>::reference m_x;
01843 };
01844 
01845 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
01846 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> {
01847     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a3) {}
01848     typename tuple_type<A3>::reference get() { return m_x; }
01849     typename tuple_type<A3>::const_reference get() const { return m_x; }
01850 private:
01851     typename tuple_type<A3>::reference m_x;
01852 };
01853 
01854 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
01855 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> {
01856     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a4) {}
01857     typename tuple_type<A4>::reference get() { return m_x; }
01858     typename tuple_type<A4>::const_reference get() const { return m_x; }
01859 private:
01860     typename tuple_type<A4>::reference m_x;
01861 };
01862 
01863 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
01864 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> {
01865     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a5) {}
01866     typename tuple_type<A5>::reference get() { return m_x; }
01867     typename tuple_type<A5>::const_reference get() const { return m_x; }
01868 private:
01869     typename tuple_type<A5>::reference m_x;
01870 };
01871 
01872 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
01873 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> {
01874     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a6) {}
01875     typename tuple_type<A6>::reference get() { return m_x; }
01876     typename tuple_type<A6>::const_reference get() const { return m_x; }
01877 private:
01878     typename tuple_type<A6>::reference m_x;
01879 };
01880 
01881 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
01882 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> {
01883     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a7) {}
01884     typename tuple_type<A7>::reference get() { return m_x; }
01885     typename tuple_type<A7>::const_reference get() const { return m_x; }
01886 private:
01887     typename tuple_type<A7>::reference m_x;
01888 };
01889 
01890 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
01891 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> {
01892     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a8) {}
01893     typename tuple_type<A8>::reference get() { return m_x; }
01894     typename tuple_type<A8>::const_reference get() const { return m_x; }
01895 private:
01896     typename tuple_type<A8>::reference m_x;
01897 };
01898 
01899 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
01900 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> {
01901     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a9) {}
01902     typename tuple_type<A9>::reference get() { return m_x; }
01903     typename tuple_type<A9>::const_reference get() const { return m_x; }
01904 private:
01905     typename tuple_type<A9>::reference m_x;
01906 };
01907 
01908 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
01909 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> {
01910     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a10) {}
01911     typename tuple_type<A10>::reference get() { return m_x; }
01912     typename tuple_type<A10>::const_reference get() const { return m_x; }
01913 private:
01914     typename tuple_type<A10>::reference m_x;
01915 };
01916 
01917 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
01918 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> {
01919     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a11) {}
01920     typename tuple_type<A11>::reference get() { return m_x; }
01921     typename tuple_type<A11>::const_reference get() const { return m_x; }
01922 private:
01923     typename tuple_type<A11>::reference m_x;
01924 };
01925 
01926 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
01927 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> {
01928     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a12) {}
01929     typename tuple_type<A12>::reference get() { return m_x; }
01930     typename tuple_type<A12>::const_reference get() const { return m_x; }
01931 private:
01932     typename tuple_type<A12>::reference m_x;
01933 };
01934 
01935 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
01936 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> {
01937     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a13) {}
01938     typename tuple_type<A13>::reference get() { return m_x; }
01939     typename tuple_type<A13>::const_reference get() const { return m_x; }
01940 private:
01941     typename tuple_type<A13>::reference m_x;
01942 };
01943 
01944 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
01945 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> {
01946     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a14) {}
01947     typename tuple_type<A14>::reference get() { return m_x; }
01948     typename tuple_type<A14>::const_reference get() const { return m_x; }
01949 private:
01950     typename tuple_type<A14>::reference m_x;
01951 };
01952 
01953 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
01954 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> {
01955     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a15) {}
01956     typename tuple_type<A15>::reference get() { return m_x; }
01957     typename tuple_type<A15>::const_reference get() const { return m_x; }
01958 private:
01959     typename tuple_type<A15>::reference m_x;
01960 };
01961 
01962 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
01963 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> {
01964     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a16) {}
01965     typename tuple_type<A16>::reference get() { return m_x; }
01966     typename tuple_type<A16>::const_reference get() const { return m_x; }
01967 private:
01968     typename tuple_type<A16>::reference m_x;
01969 };
01970 
01971 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
01972 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> {
01973     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a17) {}
01974     typename tuple_type<A17>::reference get() { return m_x; }
01975     typename tuple_type<A17>::const_reference get() const { return m_x; }
01976 private:
01977     typename tuple_type<A17>::reference m_x;
01978 };
01979 
01980 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
01981 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> {
01982     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a18) {}
01983     typename tuple_type<A18>::reference get() { return m_x; }
01984     typename tuple_type<A18>::const_reference get() const { return m_x; }
01985 private:
01986     typename tuple_type<A18>::reference m_x;
01987 };
01988 
01989 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
01990 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> {
01991     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 >& x) : m_x(x.a19) {}
01992     typename tuple_type<A19>::reference get() { return m_x; }
01993     typename tuple_type<A19>::const_reference get() const { return m_x; }
01994 private:
01995     typename tuple_type<A19>::reference m_x;
01996 };
01997 
01998 
01999 
02000 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
02001 struct 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> {
02002     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a0) {}
02003     typename tuple_type<A0>::reference get() { return m_x; }
02004     typename tuple_type<A0>::const_reference get() const { return m_x; }
02005 private:
02006     typename tuple_type<A0>::reference m_x;
02007 };
02008 
02009 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
02010 struct 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> {
02011     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a1) {}
02012     typename tuple_type<A1>::reference get() { return m_x; }
02013     typename tuple_type<A1>::const_reference get() const { return m_x; }
02014 private:
02015     typename tuple_type<A1>::reference m_x;
02016 };
02017 
02018 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
02019 struct 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> {
02020     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a2) {}
02021     typename tuple_type<A2>::reference get() { return m_x; }
02022     typename tuple_type<A2>::const_reference get() const { return m_x; }
02023 private:
02024     typename tuple_type<A2>::reference m_x;
02025 };
02026 
02027 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
02028 struct 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> {
02029     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a3) {}
02030     typename tuple_type<A3>::reference get() { return m_x; }
02031     typename tuple_type<A3>::const_reference get() const { return m_x; }
02032 private:
02033     typename tuple_type<A3>::reference m_x;
02034 };
02035 
02036 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
02037 struct 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> {
02038     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a4) {}
02039     typename tuple_type<A4>::reference get() { return m_x; }
02040     typename tuple_type<A4>::const_reference get() const { return m_x; }
02041 private:
02042     typename tuple_type<A4>::reference m_x;
02043 };
02044 
02045 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
02046 struct 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> {
02047     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a5) {}
02048     typename tuple_type<A5>::reference get() { return m_x; }
02049     typename tuple_type<A5>::const_reference get() const { return m_x; }
02050 private:
02051     typename tuple_type<A5>::reference m_x;
02052 };
02053 
02054 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
02055 struct 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> {
02056     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a6) {}
02057     typename tuple_type<A6>::reference get() { return m_x; }
02058     typename tuple_type<A6>::const_reference get() const { return m_x; }
02059 private:
02060     typename tuple_type<A6>::reference m_x;
02061 };
02062 
02063 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
02064 struct 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> {
02065     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a7) {}
02066     typename tuple_type<A7>::reference get() { return m_x; }
02067     typename tuple_type<A7>::const_reference get() const { return m_x; }
02068 private:
02069     typename tuple_type<A7>::reference m_x;
02070 };
02071 
02072 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
02073 struct 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> {
02074     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a8) {}
02075     typename tuple_type<A8>::reference get() { return m_x; }
02076     typename tuple_type<A8>::const_reference get() const { return m_x; }
02077 private:
02078     typename tuple_type<A8>::reference m_x;
02079 };
02080 
02081 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
02082 struct 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> {
02083     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a9) {}
02084     typename tuple_type<A9>::reference get() { return m_x; }
02085     typename tuple_type<A9>::const_reference get() const { return m_x; }
02086 private:
02087     typename tuple_type<A9>::reference m_x;
02088 };
02089 
02090 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
02091 struct 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> {
02092     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a10) {}
02093     typename tuple_type<A10>::reference get() { return m_x; }
02094     typename tuple_type<A10>::const_reference get() const { return m_x; }
02095 private:
02096     typename tuple_type<A10>::reference m_x;
02097 };
02098 
02099 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
02100 struct 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> {
02101     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a11) {}
02102     typename tuple_type<A11>::reference get() { return m_x; }
02103     typename tuple_type<A11>::const_reference get() const { return m_x; }
02104 private:
02105     typename tuple_type<A11>::reference m_x;
02106 };
02107 
02108 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
02109 struct 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> {
02110     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a12) {}
02111     typename tuple_type<A12>::reference get() { return m_x; }
02112     typename tuple_type<A12>::const_reference get() const { return m_x; }
02113 private:
02114     typename tuple_type<A12>::reference m_x;
02115 };
02116 
02117 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
02118 struct 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> {
02119     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a13) {}
02120     typename tuple_type<A13>::reference get() { return m_x; }
02121     typename tuple_type<A13>::const_reference get() const { return m_x; }
02122 private:
02123     typename tuple_type<A13>::reference m_x;
02124 };
02125 
02126 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
02127 struct 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> {
02128     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a14) {}
02129     typename tuple_type<A14>::reference get() { return m_x; }
02130     typename tuple_type<A14>::const_reference get() const { return m_x; }
02131 private:
02132     typename tuple_type<A14>::reference m_x;
02133 };
02134 
02135 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
02136 struct 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> {
02137     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a15) {}
02138     typename tuple_type<A15>::reference get() { return m_x; }
02139     typename tuple_type<A15>::const_reference get() const { return m_x; }
02140 private:
02141     typename tuple_type<A15>::reference m_x;
02142 };
02143 
02144 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
02145 struct 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> {
02146     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a16) {}
02147     typename tuple_type<A16>::reference get() { return m_x; }
02148     typename tuple_type<A16>::const_reference get() const { return m_x; }
02149 private:
02150     typename tuple_type<A16>::reference m_x;
02151 };
02152 
02153 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
02154 struct 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> {
02155     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a17) {}
02156     typename tuple_type<A17>::reference get() { return m_x; }
02157     typename tuple_type<A17>::const_reference get() const { return m_x; }
02158 private:
02159     typename tuple_type<A17>::reference m_x;
02160 };
02161 
02162 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
02163 struct 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> {
02164     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a18) {}
02165     typename tuple_type<A18>::reference get() { return m_x; }
02166     typename tuple_type<A18>::const_reference get() const { return m_x; }
02167 private:
02168     typename tuple_type<A18>::reference m_x;
02169 };
02170 
02171 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
02172 struct 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> {
02173     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a19) {}
02174     typename tuple_type<A19>::reference get() { return m_x; }
02175     typename tuple_type<A19>::const_reference get() const { return m_x; }
02176 private:
02177     typename tuple_type<A19>::reference m_x;
02178 };
02179 
02180 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
02181 struct 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> {
02182     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 >& x) : m_x(x.a20) {}
02183     typename tuple_type<A20>::reference get() { return m_x; }
02184     typename tuple_type<A20>::const_reference get() const { return m_x; }
02185 private:
02186     typename tuple_type<A20>::reference m_x;
02187 };
02188 
02189 
02190 
02191 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
02192 struct tuple_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> {
02193     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a0) {}
02194     typename tuple_type<A0>::reference get() { return m_x; }
02195     typename tuple_type<A0>::const_reference get() const { return m_x; }
02196 private:
02197     typename tuple_type<A0>::reference m_x;
02198 };
02199 
02200 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
02201 struct tuple_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> {
02202     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a1) {}
02203     typename tuple_type<A1>::reference get() { return m_x; }
02204     typename tuple_type<A1>::const_reference get() const { return m_x; }
02205 private:
02206     typename tuple_type<A1>::reference m_x;
02207 };
02208 
02209 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
02210 struct tuple_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> {
02211     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a2) {}
02212     typename tuple_type<A2>::reference get() { return m_x; }
02213     typename tuple_type<A2>::const_reference get() const { return m_x; }
02214 private:
02215     typename tuple_type<A2>::reference m_x;
02216 };
02217 
02218 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
02219 struct tuple_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> {
02220     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a3) {}
02221     typename tuple_type<A3>::reference get() { return m_x; }
02222     typename tuple_type<A3>::const_reference get() const { return m_x; }
02223 private:
02224     typename tuple_type<A3>::reference m_x;
02225 };
02226 
02227 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
02228 struct tuple_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> {
02229     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a4) {}
02230     typename tuple_type<A4>::reference get() { return m_x; }
02231     typename tuple_type<A4>::const_reference get() const { return m_x; }
02232 private:
02233     typename tuple_type<A4>::reference m_x;
02234 };
02235 
02236 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
02237 struct tuple_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> {
02238     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a5) {}
02239     typename tuple_type<A5>::reference get() { return m_x; }
02240     typename tuple_type<A5>::const_reference get() const { return m_x; }
02241 private:
02242     typename tuple_type<A5>::reference m_x;
02243 };
02244 
02245 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
02246 struct tuple_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> {
02247     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a6) {}
02248     typename tuple_type<A6>::reference get() { return m_x; }
02249     typename tuple_type<A6>::const_reference get() const { return m_x; }
02250 private:
02251     typename tuple_type<A6>::reference m_x;
02252 };
02253 
02254 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
02255 struct tuple_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> {
02256     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a7) {}
02257     typename tuple_type<A7>::reference get() { return m_x; }
02258     typename tuple_type<A7>::const_reference get() const { return m_x; }
02259 private:
02260     typename tuple_type<A7>::reference m_x;
02261 };
02262 
02263 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
02264 struct tuple_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> {
02265     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a8) {}
02266     typename tuple_type<A8>::reference get() { return m_x; }
02267     typename tuple_type<A8>::const_reference get() const { return m_x; }
02268 private:
02269     typename tuple_type<A8>::reference m_x;
02270 };
02271 
02272 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
02273 struct tuple_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> {
02274     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a9) {}
02275     typename tuple_type<A9>::reference get() { return m_x; }
02276     typename tuple_type<A9>::const_reference get() const { return m_x; }
02277 private:
02278     typename tuple_type<A9>::reference m_x;
02279 };
02280 
02281 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
02282 struct tuple_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> {
02283     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a10) {}
02284     typename tuple_type<A10>::reference get() { return m_x; }
02285     typename tuple_type<A10>::const_reference get() const { return m_x; }
02286 private:
02287     typename tuple_type<A10>::reference m_x;
02288 };
02289 
02290 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
02291 struct tuple_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> {
02292     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a11) {}
02293     typename tuple_type<A11>::reference get() { return m_x; }
02294     typename tuple_type<A11>::const_reference get() const { return m_x; }
02295 private:
02296     typename tuple_type<A11>::reference m_x;
02297 };
02298 
02299 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
02300 struct tuple_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> {
02301     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a12) {}
02302     typename tuple_type<A12>::reference get() { return m_x; }
02303     typename tuple_type<A12>::const_reference get() const { return m_x; }
02304 private:
02305     typename tuple_type<A12>::reference m_x;
02306 };
02307 
02308 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
02309 struct tuple_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> {
02310     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a13) {}
02311     typename tuple_type<A13>::reference get() { return m_x; }
02312     typename tuple_type<A13>::const_reference get() const { return m_x; }
02313 private:
02314     typename tuple_type<A13>::reference m_x;
02315 };
02316 
02317 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
02318 struct tuple_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> {
02319     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a14) {}
02320     typename tuple_type<A14>::reference get() { return m_x; }
02321     typename tuple_type<A14>::const_reference get() const { return m_x; }
02322 private:
02323     typename tuple_type<A14>::reference m_x;
02324 };
02325 
02326 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
02327 struct tuple_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> {
02328     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a15) {}
02329     typename tuple_type<A15>::reference get() { return m_x; }
02330     typename tuple_type<A15>::const_reference get() const { return m_x; }
02331 private:
02332     typename tuple_type<A15>::reference m_x;
02333 };
02334 
02335 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
02336 struct tuple_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> {
02337     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a16) {}
02338     typename tuple_type<A16>::reference get() { return m_x; }
02339     typename tuple_type<A16>::const_reference get() const { return m_x; }
02340 private:
02341     typename tuple_type<A16>::reference m_x;
02342 };
02343 
02344 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
02345 struct tuple_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> {
02346     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a17) {}
02347     typename tuple_type<A17>::reference get() { return m_x; }
02348     typename tuple_type<A17>::const_reference get() const { return m_x; }
02349 private:
02350     typename tuple_type<A17>::reference m_x;
02351 };
02352 
02353 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
02354 struct tuple_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> {
02355     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a18) {}
02356     typename tuple_type<A18>::reference get() { return m_x; }
02357     typename tuple_type<A18>::const_reference get() const { return m_x; }
02358 private:
02359     typename tuple_type<A18>::reference m_x;
02360 };
02361 
02362 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
02363 struct tuple_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> {
02364     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a19) {}
02365     typename tuple_type<A19>::reference get() { return m_x; }
02366     typename tuple_type<A19>::const_reference get() const { return m_x; }
02367 private:
02368     typename tuple_type<A19>::reference m_x;
02369 };
02370 
02371 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
02372 struct tuple_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> {
02373     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a20) {}
02374     typename tuple_type<A20>::reference get() { return m_x; }
02375     typename tuple_type<A20>::const_reference get() const { return m_x; }
02376 private:
02377     typename tuple_type<A20>::reference m_x;
02378 };
02379 
02380 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
02381 struct tuple_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> {
02382     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 >& x) : m_x(x.a21) {}
02383     typename tuple_type<A21>::reference get() { return m_x; }
02384     typename tuple_type<A21>::const_reference get() const { return m_x; }
02385 private:
02386     typename tuple_type<A21>::reference m_x;
02387 };
02388 
02389 
02390 
02391 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
02392 struct tuple_element<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> {
02393     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a0) {}
02394     typename tuple_type<A0>::reference get() { return m_x; }
02395     typename tuple_type<A0>::const_reference get() const { return m_x; }
02396 private:
02397     typename tuple_type<A0>::reference m_x;
02398 };
02399 
02400 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
02401 struct tuple_element<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> {
02402     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a1) {}
02403     typename tuple_type<A1>::reference get() { return m_x; }
02404     typename tuple_type<A1>::const_reference get() const { return m_x; }
02405 private:
02406     typename tuple_type<A1>::reference m_x;
02407 };
02408 
02409 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
02410 struct tuple_element<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> {
02411     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a2) {}
02412     typename tuple_type<A2>::reference get() { return m_x; }
02413     typename tuple_type<A2>::const_reference get() const { return m_x; }
02414 private:
02415     typename tuple_type<A2>::reference m_x;
02416 };
02417 
02418 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
02419 struct tuple_element<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> {
02420     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a3) {}
02421     typename tuple_type<A3>::reference get() { return m_x; }
02422     typename tuple_type<A3>::const_reference get() const { return m_x; }
02423 private:
02424     typename tuple_type<A3>::reference m_x;
02425 };
02426 
02427 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
02428 struct tuple_element<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> {
02429     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a4) {}
02430     typename tuple_type<A4>::reference get() { return m_x; }
02431     typename tuple_type<A4>::const_reference get() const { return m_x; }
02432 private:
02433     typename tuple_type<A4>::reference m_x;
02434 };
02435 
02436 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
02437 struct tuple_element<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> {
02438     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a5) {}
02439     typename tuple_type<A5>::reference get() { return m_x; }
02440     typename tuple_type<A5>::const_reference get() const { return m_x; }
02441 private:
02442     typename tuple_type<A5>::reference m_x;
02443 };
02444 
02445 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
02446 struct tuple_element<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> {
02447     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a6) {}
02448     typename tuple_type<A6>::reference get() { return m_x; }
02449     typename tuple_type<A6>::const_reference get() const { return m_x; }
02450 private:
02451     typename tuple_type<A6>::reference m_x;
02452 };
02453 
02454 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
02455 struct tuple_element<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> {
02456     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a7) {}
02457     typename tuple_type<A7>::reference get() { return m_x; }
02458     typename tuple_type<A7>::const_reference get() const { return m_x; }
02459 private:
02460     typename tuple_type<A7>::reference m_x;
02461 };
02462 
02463 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
02464 struct tuple_element<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> {
02465     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a8) {}
02466     typename tuple_type<A8>::reference get() { return m_x; }
02467     typename tuple_type<A8>::const_reference get() const { return m_x; }
02468 private:
02469     typename tuple_type<A8>::reference m_x;
02470 };
02471 
02472 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
02473 struct tuple_element<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> {
02474     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a9) {}
02475     typename tuple_type<A9>::reference get() { return m_x; }
02476     typename tuple_type<A9>::const_reference get() const { return m_x; }
02477 private:
02478     typename tuple_type<A9>::reference m_x;
02479 };
02480 
02481 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
02482 struct tuple_element<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> {
02483     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a10) {}
02484     typename tuple_type<A10>::reference get() { return m_x; }
02485     typename tuple_type<A10>::const_reference get() const { return m_x; }
02486 private:
02487     typename tuple_type<A10>::reference m_x;
02488 };
02489 
02490 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
02491 struct tuple_element<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> {
02492     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a11) {}
02493     typename tuple_type<A11>::reference get() { return m_x; }
02494     typename tuple_type<A11>::const_reference get() const { return m_x; }
02495 private:
02496     typename tuple_type<A11>::reference m_x;
02497 };
02498 
02499 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
02500 struct tuple_element<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> {
02501     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a12) {}
02502     typename tuple_type<A12>::reference get() { return m_x; }
02503     typename tuple_type<A12>::const_reference get() const { return m_x; }
02504 private:
02505     typename tuple_type<A12>::reference m_x;
02506 };
02507 
02508 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
02509 struct tuple_element<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> {
02510     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a13) {}
02511     typename tuple_type<A13>::reference get() { return m_x; }
02512     typename tuple_type<A13>::const_reference get() const { return m_x; }
02513 private:
02514     typename tuple_type<A13>::reference m_x;
02515 };
02516 
02517 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
02518 struct tuple_element<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> {
02519     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a14) {}
02520     typename tuple_type<A14>::reference get() { return m_x; }
02521     typename tuple_type<A14>::const_reference get() const { return m_x; }
02522 private:
02523     typename tuple_type<A14>::reference m_x;
02524 };
02525 
02526 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
02527 struct tuple_element<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> {
02528     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a15) {}
02529     typename tuple_type<A15>::reference get() { return m_x; }
02530     typename tuple_type<A15>::const_reference get() const { return m_x; }
02531 private:
02532     typename tuple_type<A15>::reference m_x;
02533 };
02534 
02535 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
02536 struct tuple_element<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> {
02537     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a16) {}
02538     typename tuple_type<A16>::reference get() { return m_x; }
02539     typename tuple_type<A16>::const_reference get() const { return m_x; }
02540 private:
02541     typename tuple_type<A16>::reference m_x;
02542 };
02543 
02544 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
02545 struct tuple_element<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> {
02546     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a17) {}
02547     typename tuple_type<A17>::reference get() { return m_x; }
02548     typename tuple_type<A17>::const_reference get() const { return m_x; }
02549 private:
02550     typename tuple_type<A17>::reference m_x;
02551 };
02552 
02553 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
02554 struct tuple_element<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> {
02555     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a18) {}
02556     typename tuple_type<A18>::reference get() { return m_x; }
02557     typename tuple_type<A18>::const_reference get() const { return m_x; }
02558 private:
02559     typename tuple_type<A18>::reference m_x;
02560 };
02561 
02562 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
02563 struct tuple_element<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> {
02564     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a19) {}
02565     typename tuple_type<A19>::reference get() { return m_x; }
02566     typename tuple_type<A19>::const_reference get() const { return m_x; }
02567 private:
02568     typename tuple_type<A19>::reference m_x;
02569 };
02570 
02571 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
02572 struct tuple_element<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> {
02573     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a20) {}
02574     typename tuple_type<A20>::reference get() { return m_x; }
02575     typename tuple_type<A20>::const_reference get() const { return m_x; }
02576 private:
02577     typename tuple_type<A20>::reference m_x;
02578 };
02579 
02580 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
02581 struct tuple_element<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> {
02582     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a21) {}
02583     typename tuple_type<A21>::reference get() { return m_x; }
02584     typename tuple_type<A21>::const_reference get() const { return m_x; }
02585 private:
02586     typename tuple_type<A21>::reference m_x;
02587 };
02588 
02589 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
02590 struct tuple_element<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> {
02591     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 >& x) : m_x(x.a22) {}
02592     typename tuple_type<A22>::reference get() { return m_x; }
02593     typename tuple_type<A22>::const_reference get() const { return m_x; }
02594 private:
02595     typename tuple_type<A22>::reference m_x;
02596 };
02597 
02598 
02599 
02600 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02601 struct tuple_element<tuple<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> {
02602     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a0) {}
02603     typename tuple_type<A0>::reference get() { return m_x; }
02604     typename tuple_type<A0>::const_reference get() const { return m_x; }
02605 private:
02606     typename tuple_type<A0>::reference m_x;
02607 };
02608 
02609 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02610 struct tuple_element<tuple<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> {
02611     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a1) {}
02612     typename tuple_type<A1>::reference get() { return m_x; }
02613     typename tuple_type<A1>::const_reference get() const { return m_x; }
02614 private:
02615     typename tuple_type<A1>::reference m_x;
02616 };
02617 
02618 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02619 struct tuple_element<tuple<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> {
02620     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a2) {}
02621     typename tuple_type<A2>::reference get() { return m_x; }
02622     typename tuple_type<A2>::const_reference get() const { return m_x; }
02623 private:
02624     typename tuple_type<A2>::reference m_x;
02625 };
02626 
02627 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02628 struct tuple_element<tuple<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> {
02629     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a3) {}
02630     typename tuple_type<A3>::reference get() { return m_x; }
02631     typename tuple_type<A3>::const_reference get() const { return m_x; }
02632 private:
02633     typename tuple_type<A3>::reference m_x;
02634 };
02635 
02636 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02637 struct tuple_element<tuple<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> {
02638     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a4) {}
02639     typename tuple_type<A4>::reference get() { return m_x; }
02640     typename tuple_type<A4>::const_reference get() const { return m_x; }
02641 private:
02642     typename tuple_type<A4>::reference m_x;
02643 };
02644 
02645 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02646 struct tuple_element<tuple<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> {
02647     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a5) {}
02648     typename tuple_type<A5>::reference get() { return m_x; }
02649     typename tuple_type<A5>::const_reference get() const { return m_x; }
02650 private:
02651     typename tuple_type<A5>::reference m_x;
02652 };
02653 
02654 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02655 struct tuple_element<tuple<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> {
02656     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a6) {}
02657     typename tuple_type<A6>::reference get() { return m_x; }
02658     typename tuple_type<A6>::const_reference get() const { return m_x; }
02659 private:
02660     typename tuple_type<A6>::reference m_x;
02661 };
02662 
02663 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02664 struct tuple_element<tuple<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> {
02665     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a7) {}
02666     typename tuple_type<A7>::reference get() { return m_x; }
02667     typename tuple_type<A7>::const_reference get() const { return m_x; }
02668 private:
02669     typename tuple_type<A7>::reference m_x;
02670 };
02671 
02672 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02673 struct tuple_element<tuple<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> {
02674     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a8) {}
02675     typename tuple_type<A8>::reference get() { return m_x; }
02676     typename tuple_type<A8>::const_reference get() const { return m_x; }
02677 private:
02678     typename tuple_type<A8>::reference m_x;
02679 };
02680 
02681 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02682 struct tuple_element<tuple<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> {
02683     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a9) {}
02684     typename tuple_type<A9>::reference get() { return m_x; }
02685     typename tuple_type<A9>::const_reference get() const { return m_x; }
02686 private:
02687     typename tuple_type<A9>::reference m_x;
02688 };
02689 
02690 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02691 struct tuple_element<tuple<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> {
02692     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a10) {}
02693     typename tuple_type<A10>::reference get() { return m_x; }
02694     typename tuple_type<A10>::const_reference get() const { return m_x; }
02695 private:
02696     typename tuple_type<A10>::reference m_x;
02697 };
02698 
02699 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02700 struct tuple_element<tuple<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> {
02701     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a11) {}
02702     typename tuple_type<A11>::reference get() { return m_x; }
02703     typename tuple_type<A11>::const_reference get() const { return m_x; }
02704 private:
02705     typename tuple_type<A11>::reference m_x;
02706 };
02707 
02708 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02709 struct tuple_element<tuple<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> {
02710     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a12) {}
02711     typename tuple_type<A12>::reference get() { return m_x; }
02712     typename tuple_type<A12>::const_reference get() const { return m_x; }
02713 private:
02714     typename tuple_type<A12>::reference m_x;
02715 };
02716 
02717 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02718 struct tuple_element<tuple<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> {
02719     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a13) {}
02720     typename tuple_type<A13>::reference get() { return m_x; }
02721     typename tuple_type<A13>::const_reference get() const { return m_x; }
02722 private:
02723     typename tuple_type<A13>::reference m_x;
02724 };
02725 
02726 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02727 struct tuple_element<tuple<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> {
02728     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a14) {}
02729     typename tuple_type<A14>::reference get() { return m_x; }
02730     typename tuple_type<A14>::const_reference get() const { return m_x; }
02731 private:
02732     typename tuple_type<A14>::reference m_x;
02733 };
02734 
02735 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02736 struct tuple_element<tuple<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> {
02737     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a15) {}
02738     typename tuple_type<A15>::reference get() { return m_x; }
02739     typename tuple_type<A15>::const_reference get() const { return m_x; }
02740 private:
02741     typename tuple_type<A15>::reference m_x;
02742 };
02743 
02744 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02745 struct tuple_element<tuple<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> {
02746     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a16) {}
02747     typename tuple_type<A16>::reference get() { return m_x; }
02748     typename tuple_type<A16>::const_reference get() const { return m_x; }
02749 private:
02750     typename tuple_type<A16>::reference m_x;
02751 };
02752 
02753 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02754 struct tuple_element<tuple<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> {
02755     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a17) {}
02756     typename tuple_type<A17>::reference get() { return m_x; }
02757     typename tuple_type<A17>::const_reference get() const { return m_x; }
02758 private:
02759     typename tuple_type<A17>::reference m_x;
02760 };
02761 
02762 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02763 struct tuple_element<tuple<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> {
02764     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a18) {}
02765     typename tuple_type<A18>::reference get() { return m_x; }
02766     typename tuple_type<A18>::const_reference get() const { return m_x; }
02767 private:
02768     typename tuple_type<A18>::reference m_x;
02769 };
02770 
02771 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02772 struct tuple_element<tuple<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> {
02773     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a19) {}
02774     typename tuple_type<A19>::reference get() { return m_x; }
02775     typename tuple_type<A19>::const_reference get() const { return m_x; }
02776 private:
02777     typename tuple_type<A19>::reference m_x;
02778 };
02779 
02780 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02781 struct tuple_element<tuple<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> {
02782     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a20) {}
02783     typename tuple_type<A20>::reference get() { return m_x; }
02784     typename tuple_type<A20>::const_reference get() const { return m_x; }
02785 private:
02786     typename tuple_type<A20>::reference m_x;
02787 };
02788 
02789 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02790 struct tuple_element<tuple<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> {
02791     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a21) {}
02792     typename tuple_type<A21>::reference get() { return m_x; }
02793     typename tuple_type<A21>::const_reference get() const { return m_x; }
02794 private:
02795     typename tuple_type<A21>::reference m_x;
02796 };
02797 
02798 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02799 struct tuple_element<tuple<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> {
02800     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a22) {}
02801     typename tuple_type<A22>::reference get() { return m_x; }
02802     typename tuple_type<A22>::const_reference get() const { return m_x; }
02803 private:
02804     typename tuple_type<A22>::reference m_x;
02805 };
02806 
02807 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
02808 struct tuple_element<tuple<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> {
02809     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 >& x) : m_x(x.a23) {}
02810     typename tuple_type<A23>::reference get() { return m_x; }
02811     typename tuple_type<A23>::const_reference get() const { return m_x; }
02812 private:
02813     typename tuple_type<A23>::reference m_x;
02814 };
02815 
02816 
02817 
02818 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
02819 struct tuple_element<tuple<A0, 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> {
02820     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a0) {}
02821     typename tuple_type<A0>::reference get() { return m_x; }
02822     typename tuple_type<A0>::const_reference get() const { return m_x; }
02823 private:
02824     typename tuple_type<A0>::reference m_x;
02825 };
02826 
02827 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
02828 struct tuple_element<tuple<A0, 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> {
02829     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a1) {}
02830     typename tuple_type<A1>::reference get() { return m_x; }
02831     typename tuple_type<A1>::const_reference get() const { return m_x; }
02832 private:
02833     typename tuple_type<A1>::reference m_x;
02834 };
02835 
02836 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
02837 struct tuple_element<tuple<A0, 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> {
02838     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a2) {}
02839     typename tuple_type<A2>::reference get() { return m_x; }
02840     typename tuple_type<A2>::const_reference get() const { return m_x; }
02841 private:
02842     typename tuple_type<A2>::reference m_x;
02843 };
02844 
02845 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
02846 struct tuple_element<tuple<A0, 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> {
02847     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a3) {}
02848     typename tuple_type<A3>::reference get() { return m_x; }
02849     typename tuple_type<A3>::const_reference get() const { return m_x; }
02850 private:
02851     typename tuple_type<A3>::reference m_x;
02852 };
02853 
02854 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
02855 struct tuple_element<tuple<A0, 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> {
02856     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a4) {}
02857     typename tuple_type<A4>::reference get() { return m_x; }
02858     typename tuple_type<A4>::const_reference get() const { return m_x; }
02859 private:
02860     typename tuple_type<A4>::reference m_x;
02861 };
02862 
02863 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
02864 struct tuple_element<tuple<A0, 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> {
02865     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a5) {}
02866     typename tuple_type<A5>::reference get() { return m_x; }
02867     typename tuple_type<A5>::const_reference get() const { return m_x; }
02868 private:
02869     typename tuple_type<A5>::reference m_x;
02870 };
02871 
02872 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
02873 struct tuple_element<tuple<A0, 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> {
02874     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a6) {}
02875     typename tuple_type<A6>::reference get() { return m_x; }
02876     typename tuple_type<A6>::const_reference get() const { return m_x; }
02877 private:
02878     typename tuple_type<A6>::reference m_x;
02879 };
02880 
02881 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
02882 struct tuple_element<tuple<A0, 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> {
02883     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a7) {}
02884     typename tuple_type<A7>::reference get() { return m_x; }
02885     typename tuple_type<A7>::const_reference get() const { return m_x; }
02886 private:
02887     typename tuple_type<A7>::reference m_x;
02888 };
02889 
02890 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
02891 struct tuple_element<tuple<A0, 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> {
02892     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a8) {}
02893     typename tuple_type<A8>::reference get() { return m_x; }
02894     typename tuple_type<A8>::const_reference get() const { return m_x; }
02895 private:
02896     typename tuple_type<A8>::reference m_x;
02897 };
02898 
02899 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
02900 struct tuple_element<tuple<A0, 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> {
02901     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a9) {}
02902     typename tuple_type<A9>::reference get() { return m_x; }
02903     typename tuple_type<A9>::const_reference get() const { return m_x; }
02904 private:
02905     typename tuple_type<A9>::reference m_x;
02906 };
02907 
02908 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
02909 struct tuple_element<tuple<A0, 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> {
02910     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a10) {}
02911     typename tuple_type<A10>::reference get() { return m_x; }
02912     typename tuple_type<A10>::const_reference get() const { return m_x; }
02913 private:
02914     typename tuple_type<A10>::reference m_x;
02915 };
02916 
02917 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
02918 struct tuple_element<tuple<A0, 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> {
02919     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a11) {}
02920     typename tuple_type<A11>::reference get() { return m_x; }
02921     typename tuple_type<A11>::const_reference get() const { return m_x; }
02922 private:
02923     typename tuple_type<A11>::reference m_x;
02924 };
02925 
02926 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
02927 struct tuple_element<tuple<A0, 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> {
02928     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a12) {}
02929     typename tuple_type<A12>::reference get() { return m_x; }
02930     typename tuple_type<A12>::const_reference get() const { return m_x; }
02931 private:
02932     typename tuple_type<A12>::reference m_x;
02933 };
02934 
02935 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
02936 struct tuple_element<tuple<A0, 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> {
02937     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a13) {}
02938     typename tuple_type<A13>::reference get() { return m_x; }
02939     typename tuple_type<A13>::const_reference get() const { return m_x; }
02940 private:
02941     typename tuple_type<A13>::reference m_x;
02942 };
02943 
02944 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
02945 struct tuple_element<tuple<A0, 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> {
02946     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a14) {}
02947     typename tuple_type<A14>::reference get() { return m_x; }
02948     typename tuple_type<A14>::const_reference get() const { return m_x; }
02949 private:
02950     typename tuple_type<A14>::reference m_x;
02951 };
02952 
02953 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
02954 struct tuple_element<tuple<A0, 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> {
02955     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a15) {}
02956     typename tuple_type<A15>::reference get() { return m_x; }
02957     typename tuple_type<A15>::const_reference get() const { return m_x; }
02958 private:
02959     typename tuple_type<A15>::reference m_x;
02960 };
02961 
02962 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
02963 struct tuple_element<tuple<A0, 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> {
02964     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a16) {}
02965     typename tuple_type<A16>::reference get() { return m_x; }
02966     typename tuple_type<A16>::const_reference get() const { return m_x; }
02967 private:
02968     typename tuple_type<A16>::reference m_x;
02969 };
02970 
02971 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
02972 struct tuple_element<tuple<A0, 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> {
02973     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a17) {}
02974     typename tuple_type<A17>::reference get() { return m_x; }
02975     typename tuple_type<A17>::const_reference get() const { return m_x; }
02976 private:
02977     typename tuple_type<A17>::reference m_x;
02978 };
02979 
02980 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
02981 struct tuple_element<tuple<A0, 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> {
02982     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a18) {}
02983     typename tuple_type<A18>::reference get() { return m_x; }
02984     typename tuple_type<A18>::const_reference get() const { return m_x; }
02985 private:
02986     typename tuple_type<A18>::reference m_x;
02987 };
02988 
02989 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
02990 struct tuple_element<tuple<A0, 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> {
02991     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a19) {}
02992     typename tuple_type<A19>::reference get() { return m_x; }
02993     typename tuple_type<A19>::const_reference get() const { return m_x; }
02994 private:
02995     typename tuple_type<A19>::reference m_x;
02996 };
02997 
02998 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
02999 struct tuple_element<tuple<A0, 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> {
03000     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a20) {}
03001     typename tuple_type<A20>::reference get() { return m_x; }
03002     typename tuple_type<A20>::const_reference get() const { return m_x; }
03003 private:
03004     typename tuple_type<A20>::reference m_x;
03005 };
03006 
03007 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
03008 struct tuple_element<tuple<A0, 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> {
03009     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a21) {}
03010     typename tuple_type<A21>::reference get() { return m_x; }
03011     typename tuple_type<A21>::const_reference get() const { return m_x; }
03012 private:
03013     typename tuple_type<A21>::reference m_x;
03014 };
03015 
03016 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
03017 struct tuple_element<tuple<A0, 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> {
03018     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a22) {}
03019     typename tuple_type<A22>::reference get() { return m_x; }
03020     typename tuple_type<A22>::const_reference get() const { return m_x; }
03021 private:
03022     typename tuple_type<A22>::reference m_x;
03023 };
03024 
03025 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
03026 struct tuple_element<tuple<A0, 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> {
03027     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a23) {}
03028     typename tuple_type<A23>::reference get() { return m_x; }
03029     typename tuple_type<A23>::const_reference get() const { return m_x; }
03030 private:
03031     typename tuple_type<A23>::reference m_x;
03032 };
03033 
03034 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
03035 struct tuple_element<tuple<A0, 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> {
03036     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 >& x) : m_x(x.a24) {}
03037     typename tuple_type<A24>::reference get() { return m_x; }
03038     typename tuple_type<A24>::const_reference get() const { return m_x; }
03039 private:
03040     typename tuple_type<A24>::reference m_x;
03041 };
03042 
03043 
03044 
03045 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03046 struct tuple_element<tuple<A0, A1, 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> {
03047     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a0) {}
03048     typename tuple_type<A0>::reference get() { return m_x; }
03049     typename tuple_type<A0>::const_reference get() const { return m_x; }
03050 private:
03051     typename tuple_type<A0>::reference m_x;
03052 };
03053 
03054 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03055 struct tuple_element<tuple<A0, A1, 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> {
03056     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a1) {}
03057     typename tuple_type<A1>::reference get() { return m_x; }
03058     typename tuple_type<A1>::const_reference get() const { return m_x; }
03059 private:
03060     typename tuple_type<A1>::reference m_x;
03061 };
03062 
03063 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03064 struct tuple_element<tuple<A0, A1, 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> {
03065     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a2) {}
03066     typename tuple_type<A2>::reference get() { return m_x; }
03067     typename tuple_type<A2>::const_reference get() const { return m_x; }
03068 private:
03069     typename tuple_type<A2>::reference m_x;
03070 };
03071 
03072 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03073 struct tuple_element<tuple<A0, A1, 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> {
03074     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a3) {}
03075     typename tuple_type<A3>::reference get() { return m_x; }
03076     typename tuple_type<A3>::const_reference get() const { return m_x; }
03077 private:
03078     typename tuple_type<A3>::reference m_x;
03079 };
03080 
03081 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03082 struct tuple_element<tuple<A0, A1, 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> {
03083     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a4) {}
03084     typename tuple_type<A4>::reference get() { return m_x; }
03085     typename tuple_type<A4>::const_reference get() const { return m_x; }
03086 private:
03087     typename tuple_type<A4>::reference m_x;
03088 };
03089 
03090 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03091 struct tuple_element<tuple<A0, A1, 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> {
03092     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a5) {}
03093     typename tuple_type<A5>::reference get() { return m_x; }
03094     typename tuple_type<A5>::const_reference get() const { return m_x; }
03095 private:
03096     typename tuple_type<A5>::reference m_x;
03097 };
03098 
03099 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03100 struct tuple_element<tuple<A0, A1, 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> {
03101     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a6) {}
03102     typename tuple_type<A6>::reference get() { return m_x; }
03103     typename tuple_type<A6>::const_reference get() const { return m_x; }
03104 private:
03105     typename tuple_type<A6>::reference m_x;
03106 };
03107 
03108 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03109 struct tuple_element<tuple<A0, A1, 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> {
03110     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a7) {}
03111     typename tuple_type<A7>::reference get() { return m_x; }
03112     typename tuple_type<A7>::const_reference get() const { return m_x; }
03113 private:
03114     typename tuple_type<A7>::reference m_x;
03115 };
03116 
03117 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03118 struct tuple_element<tuple<A0, A1, 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> {
03119     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a8) {}
03120     typename tuple_type<A8>::reference get() { return m_x; }
03121     typename tuple_type<A8>::const_reference get() const { return m_x; }
03122 private:
03123     typename tuple_type<A8>::reference m_x;
03124 };
03125 
03126 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03127 struct tuple_element<tuple<A0, A1, 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> {
03128     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a9) {}
03129     typename tuple_type<A9>::reference get() { return m_x; }
03130     typename tuple_type<A9>::const_reference get() const { return m_x; }
03131 private:
03132     typename tuple_type<A9>::reference m_x;
03133 };
03134 
03135 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03136 struct tuple_element<tuple<A0, A1, 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> {
03137     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a10) {}
03138     typename tuple_type<A10>::reference get() { return m_x; }
03139     typename tuple_type<A10>::const_reference get() const { return m_x; }
03140 private:
03141     typename tuple_type<A10>::reference m_x;
03142 };
03143 
03144 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03145 struct tuple_element<tuple<A0, A1, 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> {
03146     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a11) {}
03147     typename tuple_type<A11>::reference get() { return m_x; }
03148     typename tuple_type<A11>::const_reference get() const { return m_x; }
03149 private:
03150     typename tuple_type<A11>::reference m_x;
03151 };
03152 
03153 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03154 struct tuple_element<tuple<A0, A1, 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> {
03155     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a12) {}
03156     typename tuple_type<A12>::reference get() { return m_x; }
03157     typename tuple_type<A12>::const_reference get() const { return m_x; }
03158 private:
03159     typename tuple_type<A12>::reference m_x;
03160 };
03161 
03162 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03163 struct tuple_element<tuple<A0, A1, 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> {
03164     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a13) {}
03165     typename tuple_type<A13>::reference get() { return m_x; }
03166     typename tuple_type<A13>::const_reference get() const { return m_x; }
03167 private:
03168     typename tuple_type<A13>::reference m_x;
03169 };
03170 
03171 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03172 struct tuple_element<tuple<A0, A1, 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> {
03173     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a14) {}
03174     typename tuple_type<A14>::reference get() { return m_x; }
03175     typename tuple_type<A14>::const_reference get() const { return m_x; }
03176 private:
03177     typename tuple_type<A14>::reference m_x;
03178 };
03179 
03180 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03181 struct tuple_element<tuple<A0, A1, 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> {
03182     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a15) {}
03183     typename tuple_type<A15>::reference get() { return m_x; }
03184     typename tuple_type<A15>::const_reference get() const { return m_x; }
03185 private:
03186     typename tuple_type<A15>::reference m_x;
03187 };
03188 
03189 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03190 struct tuple_element<tuple<A0, A1, 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> {
03191     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a16) {}
03192     typename tuple_type<A16>::reference get() { return m_x; }
03193     typename tuple_type<A16>::const_reference get() const { return m_x; }
03194 private:
03195     typename tuple_type<A16>::reference m_x;
03196 };
03197 
03198 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03199 struct tuple_element<tuple<A0, A1, 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> {
03200     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a17) {}
03201     typename tuple_type<A17>::reference get() { return m_x; }
03202     typename tuple_type<A17>::const_reference get() const { return m_x; }
03203 private:
03204     typename tuple_type<A17>::reference m_x;
03205 };
03206 
03207 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03208 struct tuple_element<tuple<A0, A1, 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> {
03209     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a18) {}
03210     typename tuple_type<A18>::reference get() { return m_x; }
03211     typename tuple_type<A18>::const_reference get() const { return m_x; }
03212 private:
03213     typename tuple_type<A18>::reference m_x;
03214 };
03215 
03216 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03217 struct tuple_element<tuple<A0, A1, 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> {
03218     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a19) {}
03219     typename tuple_type<A19>::reference get() { return m_x; }
03220     typename tuple_type<A19>::const_reference get() const { return m_x; }
03221 private:
03222     typename tuple_type<A19>::reference m_x;
03223 };
03224 
03225 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03226 struct tuple_element<tuple<A0, A1, 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> {
03227     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a20) {}
03228     typename tuple_type<A20>::reference get() { return m_x; }
03229     typename tuple_type<A20>::const_reference get() const { return m_x; }
03230 private:
03231     typename tuple_type<A20>::reference m_x;
03232 };
03233 
03234 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03235 struct tuple_element<tuple<A0, A1, 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> {
03236     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a21) {}
03237     typename tuple_type<A21>::reference get() { return m_x; }
03238     typename tuple_type<A21>::const_reference get() const { return m_x; }
03239 private:
03240     typename tuple_type<A21>::reference m_x;
03241 };
03242 
03243 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03244 struct tuple_element<tuple<A0, A1, 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> {
03245     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a22) {}
03246     typename tuple_type<A22>::reference get() { return m_x; }
03247     typename tuple_type<A22>::const_reference get() const { return m_x; }
03248 private:
03249     typename tuple_type<A22>::reference m_x;
03250 };
03251 
03252 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03253 struct tuple_element<tuple<A0, A1, 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> {
03254     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a23) {}
03255     typename tuple_type<A23>::reference get() { return m_x; }
03256     typename tuple_type<A23>::const_reference get() const { return m_x; }
03257 private:
03258     typename tuple_type<A23>::reference m_x;
03259 };
03260 
03261 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03262 struct tuple_element<tuple<A0, A1, 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> {
03263     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a24) {}
03264     typename tuple_type<A24>::reference get() { return m_x; }
03265     typename tuple_type<A24>::const_reference get() const { return m_x; }
03266 private:
03267     typename tuple_type<A24>::reference m_x;
03268 };
03269 
03270 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
03271 struct tuple_element<tuple<A0, A1, 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> {
03272     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 >& x) : m_x(x.a25) {}
03273     typename tuple_type<A25>::reference get() { return m_x; }
03274     typename tuple_type<A25>::const_reference get() const { return m_x; }
03275 private:
03276     typename tuple_type<A25>::reference m_x;
03277 };
03278 
03279 
03280 
03281 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03282 struct tuple_element<tuple<A0, A1, A2, 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> {
03283     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a0) {}
03284     typename tuple_type<A0>::reference get() { return m_x; }
03285     typename tuple_type<A0>::const_reference get() const { return m_x; }
03286 private:
03287     typename tuple_type<A0>::reference m_x;
03288 };
03289 
03290 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03291 struct tuple_element<tuple<A0, A1, A2, 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> {
03292     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a1) {}
03293     typename tuple_type<A1>::reference get() { return m_x; }
03294     typename tuple_type<A1>::const_reference get() const { return m_x; }
03295 private:
03296     typename tuple_type<A1>::reference m_x;
03297 };
03298 
03299 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03300 struct tuple_element<tuple<A0, A1, A2, 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> {
03301     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a2) {}
03302     typename tuple_type<A2>::reference get() { return m_x; }
03303     typename tuple_type<A2>::const_reference get() const { return m_x; }
03304 private:
03305     typename tuple_type<A2>::reference m_x;
03306 };
03307 
03308 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03309 struct tuple_element<tuple<A0, A1, A2, 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> {
03310     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a3) {}
03311     typename tuple_type<A3>::reference get() { return m_x; }
03312     typename tuple_type<A3>::const_reference get() const { return m_x; }
03313 private:
03314     typename tuple_type<A3>::reference m_x;
03315 };
03316 
03317 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03318 struct tuple_element<tuple<A0, A1, A2, 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> {
03319     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a4) {}
03320     typename tuple_type<A4>::reference get() { return m_x; }
03321     typename tuple_type<A4>::const_reference get() const { return m_x; }
03322 private:
03323     typename tuple_type<A4>::reference m_x;
03324 };
03325 
03326 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03327 struct tuple_element<tuple<A0, A1, A2, 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> {
03328     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a5) {}
03329     typename tuple_type<A5>::reference get() { return m_x; }
03330     typename tuple_type<A5>::const_reference get() const { return m_x; }
03331 private:
03332     typename tuple_type<A5>::reference m_x;
03333 };
03334 
03335 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03336 struct tuple_element<tuple<A0, A1, A2, 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> {
03337     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a6) {}
03338     typename tuple_type<A6>::reference get() { return m_x; }
03339     typename tuple_type<A6>::const_reference get() const { return m_x; }
03340 private:
03341     typename tuple_type<A6>::reference m_x;
03342 };
03343 
03344 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03345 struct tuple_element<tuple<A0, A1, A2, 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> {
03346     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a7) {}
03347     typename tuple_type<A7>::reference get() { return m_x; }
03348     typename tuple_type<A7>::const_reference get() const { return m_x; }
03349 private:
03350     typename tuple_type<A7>::reference m_x;
03351 };
03352 
03353 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03354 struct tuple_element<tuple<A0, A1, A2, 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> {
03355     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a8) {}
03356     typename tuple_type<A8>::reference get() { return m_x; }
03357     typename tuple_type<A8>::const_reference get() const { return m_x; }
03358 private:
03359     typename tuple_type<A8>::reference m_x;
03360 };
03361 
03362 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03363 struct tuple_element<tuple<A0, A1, A2, 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> {
03364     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a9) {}
03365     typename tuple_type<A9>::reference get() { return m_x; }
03366     typename tuple_type<A9>::const_reference get() const { return m_x; }
03367 private:
03368     typename tuple_type<A9>::reference m_x;
03369 };
03370 
03371 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03372 struct tuple_element<tuple<A0, A1, A2, 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> {
03373     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a10) {}
03374     typename tuple_type<A10>::reference get() { return m_x; }
03375     typename tuple_type<A10>::const_reference get() const { return m_x; }
03376 private:
03377     typename tuple_type<A10>::reference m_x;
03378 };
03379 
03380 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03381 struct tuple_element<tuple<A0, A1, A2, 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> {
03382     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a11) {}
03383     typename tuple_type<A11>::reference get() { return m_x; }
03384     typename tuple_type<A11>::const_reference get() const { return m_x; }
03385 private:
03386     typename tuple_type<A11>::reference m_x;
03387 };
03388 
03389 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03390 struct tuple_element<tuple<A0, A1, A2, 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> {
03391     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a12) {}
03392     typename tuple_type<A12>::reference get() { return m_x; }
03393     typename tuple_type<A12>::const_reference get() const { return m_x; }
03394 private:
03395     typename tuple_type<A12>::reference m_x;
03396 };
03397 
03398 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03399 struct tuple_element<tuple<A0, A1, A2, 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> {
03400     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a13) {}
03401     typename tuple_type<A13>::reference get() { return m_x; }
03402     typename tuple_type<A13>::const_reference get() const { return m_x; }
03403 private:
03404     typename tuple_type<A13>::reference m_x;
03405 };
03406 
03407 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03408 struct tuple_element<tuple<A0, A1, A2, 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> {
03409     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a14) {}
03410     typename tuple_type<A14>::reference get() { return m_x; }
03411     typename tuple_type<A14>::const_reference get() const { return m_x; }
03412 private:
03413     typename tuple_type<A14>::reference m_x;
03414 };
03415 
03416 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03417 struct tuple_element<tuple<A0, A1, A2, 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> {
03418     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a15) {}
03419     typename tuple_type<A15>::reference get() { return m_x; }
03420     typename tuple_type<A15>::const_reference get() const { return m_x; }
03421 private:
03422     typename tuple_type<A15>::reference m_x;
03423 };
03424 
03425 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03426 struct tuple_element<tuple<A0, A1, A2, 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> {
03427     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a16) {}
03428     typename tuple_type<A16>::reference get() { return m_x; }
03429     typename tuple_type<A16>::const_reference get() const { return m_x; }
03430 private:
03431     typename tuple_type<A16>::reference m_x;
03432 };
03433 
03434 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03435 struct tuple_element<tuple<A0, A1, A2, 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> {
03436     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a17) {}
03437     typename tuple_type<A17>::reference get() { return m_x; }
03438     typename tuple_type<A17>::const_reference get() const { return m_x; }
03439 private:
03440     typename tuple_type<A17>::reference m_x;
03441 };
03442 
03443 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03444 struct tuple_element<tuple<A0, A1, A2, 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> {
03445     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a18) {}
03446     typename tuple_type<A18>::reference get() { return m_x; }
03447     typename tuple_type<A18>::const_reference get() const { return m_x; }
03448 private:
03449     typename tuple_type<A18>::reference m_x;
03450 };
03451 
03452 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03453 struct tuple_element<tuple<A0, A1, A2, 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> {
03454     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a19) {}
03455     typename tuple_type<A19>::reference get() { return m_x; }
03456     typename tuple_type<A19>::const_reference get() const { return m_x; }
03457 private:
03458     typename tuple_type<A19>::reference m_x;
03459 };
03460 
03461 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03462 struct tuple_element<tuple<A0, A1, A2, 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> {
03463     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a20) {}
03464     typename tuple_type<A20>::reference get() { return m_x; }
03465     typename tuple_type<A20>::const_reference get() const { return m_x; }
03466 private:
03467     typename tuple_type<A20>::reference m_x;
03468 };
03469 
03470 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03471 struct tuple_element<tuple<A0, A1, A2, 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> {
03472     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a21) {}
03473     typename tuple_type<A21>::reference get() { return m_x; }
03474     typename tuple_type<A21>::const_reference get() const { return m_x; }
03475 private:
03476     typename tuple_type<A21>::reference m_x;
03477 };
03478 
03479 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03480 struct tuple_element<tuple<A0, A1, A2, 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> {
03481     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a22) {}
03482     typename tuple_type<A22>::reference get() { return m_x; }
03483     typename tuple_type<A22>::const_reference get() const { return m_x; }
03484 private:
03485     typename tuple_type<A22>::reference m_x;
03486 };
03487 
03488 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03489 struct tuple_element<tuple<A0, A1, A2, 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> {
03490     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a23) {}
03491     typename tuple_type<A23>::reference get() { return m_x; }
03492     typename tuple_type<A23>::const_reference get() const { return m_x; }
03493 private:
03494     typename tuple_type<A23>::reference m_x;
03495 };
03496 
03497 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03498 struct tuple_element<tuple<A0, A1, A2, 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> {
03499     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a24) {}
03500     typename tuple_type<A24>::reference get() { return m_x; }
03501     typename tuple_type<A24>::const_reference get() const { return m_x; }
03502 private:
03503     typename tuple_type<A24>::reference m_x;
03504 };
03505 
03506 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03507 struct tuple_element<tuple<A0, A1, A2, 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> {
03508     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a25) {}
03509     typename tuple_type<A25>::reference get() { return m_x; }
03510     typename tuple_type<A25>::const_reference get() const { return m_x; }
03511 private:
03512     typename tuple_type<A25>::reference m_x;
03513 };
03514 
03515 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
03516 struct tuple_element<tuple<A0, A1, A2, 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> {
03517     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 >& x) : m_x(x.a26) {}
03518     typename tuple_type<A26>::reference get() { return m_x; }
03519     typename tuple_type<A26>::const_reference get() const { return m_x; }
03520 private:
03521     typename tuple_type<A26>::reference m_x;
03522 };
03523 
03524 
03525 
03526 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03527 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03528     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a0) {}
03529     typename tuple_type<A0>::reference get() { return m_x; }
03530     typename tuple_type<A0>::const_reference get() const { return m_x; }
03531 private:
03532     typename tuple_type<A0>::reference m_x;
03533 };
03534 
03535 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03536 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03537     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a1) {}
03538     typename tuple_type<A1>::reference get() { return m_x; }
03539     typename tuple_type<A1>::const_reference get() const { return m_x; }
03540 private:
03541     typename tuple_type<A1>::reference m_x;
03542 };
03543 
03544 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03545 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03546     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a2) {}
03547     typename tuple_type<A2>::reference get() { return m_x; }
03548     typename tuple_type<A2>::const_reference get() const { return m_x; }
03549 private:
03550     typename tuple_type<A2>::reference m_x;
03551 };
03552 
03553 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03554 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03555     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a3) {}
03556     typename tuple_type<A3>::reference get() { return m_x; }
03557     typename tuple_type<A3>::const_reference get() const { return m_x; }
03558 private:
03559     typename tuple_type<A3>::reference m_x;
03560 };
03561 
03562 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03563 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03564     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a4) {}
03565     typename tuple_type<A4>::reference get() { return m_x; }
03566     typename tuple_type<A4>::const_reference get() const { return m_x; }
03567 private:
03568     typename tuple_type<A4>::reference m_x;
03569 };
03570 
03571 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03572 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03573     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a5) {}
03574     typename tuple_type<A5>::reference get() { return m_x; }
03575     typename tuple_type<A5>::const_reference get() const { return m_x; }
03576 private:
03577     typename tuple_type<A5>::reference m_x;
03578 };
03579 
03580 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03581 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03582     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a6) {}
03583     typename tuple_type<A6>::reference get() { return m_x; }
03584     typename tuple_type<A6>::const_reference get() const { return m_x; }
03585 private:
03586     typename tuple_type<A6>::reference m_x;
03587 };
03588 
03589 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03590 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03591     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a7) {}
03592     typename tuple_type<A7>::reference get() { return m_x; }
03593     typename tuple_type<A7>::const_reference get() const { return m_x; }
03594 private:
03595     typename tuple_type<A7>::reference m_x;
03596 };
03597 
03598 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03599 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03600     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a8) {}
03601     typename tuple_type<A8>::reference get() { return m_x; }
03602     typename tuple_type<A8>::const_reference get() const { return m_x; }
03603 private:
03604     typename tuple_type<A8>::reference m_x;
03605 };
03606 
03607 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03608 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03609     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a9) {}
03610     typename tuple_type<A9>::reference get() { return m_x; }
03611     typename tuple_type<A9>::const_reference get() const { return m_x; }
03612 private:
03613     typename tuple_type<A9>::reference m_x;
03614 };
03615 
03616 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03617 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03618     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a10) {}
03619     typename tuple_type<A10>::reference get() { return m_x; }
03620     typename tuple_type<A10>::const_reference get() const { return m_x; }
03621 private:
03622     typename tuple_type<A10>::reference m_x;
03623 };
03624 
03625 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03626 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03627     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a11) {}
03628     typename tuple_type<A11>::reference get() { return m_x; }
03629     typename tuple_type<A11>::const_reference get() const { return m_x; }
03630 private:
03631     typename tuple_type<A11>::reference m_x;
03632 };
03633 
03634 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03635 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03636     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a12) {}
03637     typename tuple_type<A12>::reference get() { return m_x; }
03638     typename tuple_type<A12>::const_reference get() const { return m_x; }
03639 private:
03640     typename tuple_type<A12>::reference m_x;
03641 };
03642 
03643 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03644 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03645     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a13) {}
03646     typename tuple_type<A13>::reference get() { return m_x; }
03647     typename tuple_type<A13>::const_reference get() const { return m_x; }
03648 private:
03649     typename tuple_type<A13>::reference m_x;
03650 };
03651 
03652 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03653 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03654     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a14) {}
03655     typename tuple_type<A14>::reference get() { return m_x; }
03656     typename tuple_type<A14>::const_reference get() const { return m_x; }
03657 private:
03658     typename tuple_type<A14>::reference m_x;
03659 };
03660 
03661 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03662 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03663     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a15) {}
03664     typename tuple_type<A15>::reference get() { return m_x; }
03665     typename tuple_type<A15>::const_reference get() const { return m_x; }
03666 private:
03667     typename tuple_type<A15>::reference m_x;
03668 };
03669 
03670 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03671 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03672     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a16) {}
03673     typename tuple_type<A16>::reference get() { return m_x; }
03674     typename tuple_type<A16>::const_reference get() const { return m_x; }
03675 private:
03676     typename tuple_type<A16>::reference m_x;
03677 };
03678 
03679 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03680 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03681     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a17) {}
03682     typename tuple_type<A17>::reference get() { return m_x; }
03683     typename tuple_type<A17>::const_reference get() const { return m_x; }
03684 private:
03685     typename tuple_type<A17>::reference m_x;
03686 };
03687 
03688 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03689 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03690     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a18) {}
03691     typename tuple_type<A18>::reference get() { return m_x; }
03692     typename tuple_type<A18>::const_reference get() const { return m_x; }
03693 private:
03694     typename tuple_type<A18>::reference m_x;
03695 };
03696 
03697 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03698 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03699     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a19) {}
03700     typename tuple_type<A19>::reference get() { return m_x; }
03701     typename tuple_type<A19>::const_reference get() const { return m_x; }
03702 private:
03703     typename tuple_type<A19>::reference m_x;
03704 };
03705 
03706 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03707 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03708     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a20) {}
03709     typename tuple_type<A20>::reference get() { return m_x; }
03710     typename tuple_type<A20>::const_reference get() const { return m_x; }
03711 private:
03712     typename tuple_type<A20>::reference m_x;
03713 };
03714 
03715 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03716 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03717     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a21) {}
03718     typename tuple_type<A21>::reference get() { return m_x; }
03719     typename tuple_type<A21>::const_reference get() const { return m_x; }
03720 private:
03721     typename tuple_type<A21>::reference m_x;
03722 };
03723 
03724 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03725 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03726     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a22) {}
03727     typename tuple_type<A22>::reference get() { return m_x; }
03728     typename tuple_type<A22>::const_reference get() const { return m_x; }
03729 private:
03730     typename tuple_type<A22>::reference m_x;
03731 };
03732 
03733 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03734 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03735     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a23) {}
03736     typename tuple_type<A23>::reference get() { return m_x; }
03737     typename tuple_type<A23>::const_reference get() const { return m_x; }
03738 private:
03739     typename tuple_type<A23>::reference m_x;
03740 };
03741 
03742 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03743 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03744     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a24) {}
03745     typename tuple_type<A24>::reference get() { return m_x; }
03746     typename tuple_type<A24>::const_reference get() const { return m_x; }
03747 private:
03748     typename tuple_type<A24>::reference m_x;
03749 };
03750 
03751 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03752 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03753     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a25) {}
03754     typename tuple_type<A25>::reference get() { return m_x; }
03755     typename tuple_type<A25>::const_reference get() const { return m_x; }
03756 private:
03757     typename tuple_type<A25>::reference m_x;
03758 };
03759 
03760 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03761 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03762     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a26) {}
03763     typename tuple_type<A26>::reference get() { return m_x; }
03764     typename tuple_type<A26>::const_reference get() const { return m_x; }
03765 private:
03766     typename tuple_type<A26>::reference m_x;
03767 };
03768 
03769 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
03770 struct tuple_element<tuple<A0, A1, A2, A3, 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> {
03771     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 >& x) : m_x(x.a27) {}
03772     typename tuple_type<A27>::reference get() { return m_x; }
03773     typename tuple_type<A27>::const_reference get() const { return m_x; }
03774 private:
03775     typename tuple_type<A27>::reference m_x;
03776 };
03777 
03778 
03779 
03780 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03781 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03782     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a0) {}
03783     typename tuple_type<A0>::reference get() { return m_x; }
03784     typename tuple_type<A0>::const_reference get() const { return m_x; }
03785 private:
03786     typename tuple_type<A0>::reference m_x;
03787 };
03788 
03789 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03790 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03791     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a1) {}
03792     typename tuple_type<A1>::reference get() { return m_x; }
03793     typename tuple_type<A1>::const_reference get() const { return m_x; }
03794 private:
03795     typename tuple_type<A1>::reference m_x;
03796 };
03797 
03798 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03799 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03800     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a2) {}
03801     typename tuple_type<A2>::reference get() { return m_x; }
03802     typename tuple_type<A2>::const_reference get() const { return m_x; }
03803 private:
03804     typename tuple_type<A2>::reference m_x;
03805 };
03806 
03807 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03808 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03809     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a3) {}
03810     typename tuple_type<A3>::reference get() { return m_x; }
03811     typename tuple_type<A3>::const_reference get() const { return m_x; }
03812 private:
03813     typename tuple_type<A3>::reference m_x;
03814 };
03815 
03816 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03817 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03818     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a4) {}
03819     typename tuple_type<A4>::reference get() { return m_x; }
03820     typename tuple_type<A4>::const_reference get() const { return m_x; }
03821 private:
03822     typename tuple_type<A4>::reference m_x;
03823 };
03824 
03825 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03826 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03827     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a5) {}
03828     typename tuple_type<A5>::reference get() { return m_x; }
03829     typename tuple_type<A5>::const_reference get() const { return m_x; }
03830 private:
03831     typename tuple_type<A5>::reference m_x;
03832 };
03833 
03834 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03835 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03836     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a6) {}
03837     typename tuple_type<A6>::reference get() { return m_x; }
03838     typename tuple_type<A6>::const_reference get() const { return m_x; }
03839 private:
03840     typename tuple_type<A6>::reference m_x;
03841 };
03842 
03843 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03844 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03845     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a7) {}
03846     typename tuple_type<A7>::reference get() { return m_x; }
03847     typename tuple_type<A7>::const_reference get() const { return m_x; }
03848 private:
03849     typename tuple_type<A7>::reference m_x;
03850 };
03851 
03852 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03853 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03854     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a8) {}
03855     typename tuple_type<A8>::reference get() { return m_x; }
03856     typename tuple_type<A8>::const_reference get() const { return m_x; }
03857 private:
03858     typename tuple_type<A8>::reference m_x;
03859 };
03860 
03861 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03862 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03863     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a9) {}
03864     typename tuple_type<A9>::reference get() { return m_x; }
03865     typename tuple_type<A9>::const_reference get() const { return m_x; }
03866 private:
03867     typename tuple_type<A9>::reference m_x;
03868 };
03869 
03870 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03871 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03872     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a10) {}
03873     typename tuple_type<A10>::reference get() { return m_x; }
03874     typename tuple_type<A10>::const_reference get() const { return m_x; }
03875 private:
03876     typename tuple_type<A10>::reference m_x;
03877 };
03878 
03879 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03880 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03881     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a11) {}
03882     typename tuple_type<A11>::reference get() { return m_x; }
03883     typename tuple_type<A11>::const_reference get() const { return m_x; }
03884 private:
03885     typename tuple_type<A11>::reference m_x;
03886 };
03887 
03888 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03889 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03890     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a12) {}
03891     typename tuple_type<A12>::reference get() { return m_x; }
03892     typename tuple_type<A12>::const_reference get() const { return m_x; }
03893 private:
03894     typename tuple_type<A12>::reference m_x;
03895 };
03896 
03897 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03898 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03899     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a13) {}
03900     typename tuple_type<A13>::reference get() { return m_x; }
03901     typename tuple_type<A13>::const_reference get() const { return m_x; }
03902 private:
03903     typename tuple_type<A13>::reference m_x;
03904 };
03905 
03906 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03907 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03908     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a14) {}
03909     typename tuple_type<A14>::reference get() { return m_x; }
03910     typename tuple_type<A14>::const_reference get() const { return m_x; }
03911 private:
03912     typename tuple_type<A14>::reference m_x;
03913 };
03914 
03915 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03916 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03917     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a15) {}
03918     typename tuple_type<A15>::reference get() { return m_x; }
03919     typename tuple_type<A15>::const_reference get() const { return m_x; }
03920 private:
03921     typename tuple_type<A15>::reference m_x;
03922 };
03923 
03924 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03925 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03926     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a16) {}
03927     typename tuple_type<A16>::reference get() { return m_x; }
03928     typename tuple_type<A16>::const_reference get() const { return m_x; }
03929 private:
03930     typename tuple_type<A16>::reference m_x;
03931 };
03932 
03933 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03934 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03935     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a17) {}
03936     typename tuple_type<A17>::reference get() { return m_x; }
03937     typename tuple_type<A17>::const_reference get() const { return m_x; }
03938 private:
03939     typename tuple_type<A17>::reference m_x;
03940 };
03941 
03942 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03943 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03944     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a18) {}
03945     typename tuple_type<A18>::reference get() { return m_x; }
03946     typename tuple_type<A18>::const_reference get() const { return m_x; }
03947 private:
03948     typename tuple_type<A18>::reference m_x;
03949 };
03950 
03951 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03952 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03953     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a19) {}
03954     typename tuple_type<A19>::reference get() { return m_x; }
03955     typename tuple_type<A19>::const_reference get() const { return m_x; }
03956 private:
03957     typename tuple_type<A19>::reference m_x;
03958 };
03959 
03960 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03961 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03962     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a20) {}
03963     typename tuple_type<A20>::reference get() { return m_x; }
03964     typename tuple_type<A20>::const_reference get() const { return m_x; }
03965 private:
03966     typename tuple_type<A20>::reference m_x;
03967 };
03968 
03969 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03970 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03971     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a21) {}
03972     typename tuple_type<A21>::reference get() { return m_x; }
03973     typename tuple_type<A21>::const_reference get() const { return m_x; }
03974 private:
03975     typename tuple_type<A21>::reference m_x;
03976 };
03977 
03978 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03979 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03980     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a22) {}
03981     typename tuple_type<A22>::reference get() { return m_x; }
03982     typename tuple_type<A22>::const_reference get() const { return m_x; }
03983 private:
03984     typename tuple_type<A22>::reference m_x;
03985 };
03986 
03987 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03988 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03989     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a23) {}
03990     typename tuple_type<A23>::reference get() { return m_x; }
03991     typename tuple_type<A23>::const_reference get() const { return m_x; }
03992 private:
03993     typename tuple_type<A23>::reference m_x;
03994 };
03995 
03996 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
03997 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
03998     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a24) {}
03999     typename tuple_type<A24>::reference get() { return m_x; }
04000     typename tuple_type<A24>::const_reference get() const { return m_x; }
04001 private:
04002     typename tuple_type<A24>::reference m_x;
04003 };
04004 
04005 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
04006 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
04007     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a25) {}
04008     typename tuple_type<A25>::reference get() { return m_x; }
04009     typename tuple_type<A25>::const_reference get() const { return m_x; }
04010 private:
04011     typename tuple_type<A25>::reference m_x;
04012 };
04013 
04014 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
04015 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
04016     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a26) {}
04017     typename tuple_type<A26>::reference get() { return m_x; }
04018     typename tuple_type<A26>::const_reference get() const { return m_x; }
04019 private:
04020     typename tuple_type<A26>::reference m_x;
04021 };
04022 
04023 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
04024 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
04025     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a27) {}
04026     typename tuple_type<A27>::reference get() { return m_x; }
04027     typename tuple_type<A27>::const_reference get() const { return m_x; }
04028 private:
04029     typename tuple_type<A27>::reference m_x;
04030 };
04031 
04032 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
04033 struct tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
04034     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 >& x) : m_x(x.a28) {}
04035     typename tuple_type<A28>::reference get() { return m_x; }
04036     typename tuple_type<A28>::const_reference get() const { return m_x; }
04037 private:
04038     typename tuple_type<A28>::reference m_x;
04039 };
04040 
04041 
04042 
04043 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04044 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04045     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a0) {}
04046     typename tuple_type<A0>::reference get() { return m_x; }
04047     typename tuple_type<A0>::const_reference get() const { return m_x; }
04048 private:
04049     typename tuple_type<A0>::reference m_x;
04050 };
04051 
04052 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04053 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04054     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a1) {}
04055     typename tuple_type<A1>::reference get() { return m_x; }
04056     typename tuple_type<A1>::const_reference get() const { return m_x; }
04057 private:
04058     typename tuple_type<A1>::reference m_x;
04059 };
04060 
04061 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04062 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04063     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a2) {}
04064     typename tuple_type<A2>::reference get() { return m_x; }
04065     typename tuple_type<A2>::const_reference get() const { return m_x; }
04066 private:
04067     typename tuple_type<A2>::reference m_x;
04068 };
04069 
04070 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04071 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04072     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a3) {}
04073     typename tuple_type<A3>::reference get() { return m_x; }
04074     typename tuple_type<A3>::const_reference get() const { return m_x; }
04075 private:
04076     typename tuple_type<A3>::reference m_x;
04077 };
04078 
04079 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04080 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04081     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a4) {}
04082     typename tuple_type<A4>::reference get() { return m_x; }
04083     typename tuple_type<A4>::const_reference get() const { return m_x; }
04084 private:
04085     typename tuple_type<A4>::reference m_x;
04086 };
04087 
04088 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04089 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04090     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a5) {}
04091     typename tuple_type<A5>::reference get() { return m_x; }
04092     typename tuple_type<A5>::const_reference get() const { return m_x; }
04093 private:
04094     typename tuple_type<A5>::reference m_x;
04095 };
04096 
04097 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04098 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04099     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a6) {}
04100     typename tuple_type<A6>::reference get() { return m_x; }
04101     typename tuple_type<A6>::const_reference get() const { return m_x; }
04102 private:
04103     typename tuple_type<A6>::reference m_x;
04104 };
04105 
04106 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04107 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04108     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a7) {}
04109     typename tuple_type<A7>::reference get() { return m_x; }
04110     typename tuple_type<A7>::const_reference get() const { return m_x; }
04111 private:
04112     typename tuple_type<A7>::reference m_x;
04113 };
04114 
04115 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04116 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04117     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a8) {}
04118     typename tuple_type<A8>::reference get() { return m_x; }
04119     typename tuple_type<A8>::const_reference get() const { return m_x; }
04120 private:
04121     typename tuple_type<A8>::reference m_x;
04122 };
04123 
04124 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04125 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04126     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a9) {}
04127     typename tuple_type<A9>::reference get() { return m_x; }
04128     typename tuple_type<A9>::const_reference get() const { return m_x; }
04129 private:
04130     typename tuple_type<A9>::reference m_x;
04131 };
04132 
04133 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04134 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04135     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a10) {}
04136     typename tuple_type<A10>::reference get() { return m_x; }
04137     typename tuple_type<A10>::const_reference get() const { return m_x; }
04138 private:
04139     typename tuple_type<A10>::reference m_x;
04140 };
04141 
04142 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04143 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04144     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a11) {}
04145     typename tuple_type<A11>::reference get() { return m_x; }
04146     typename tuple_type<A11>::const_reference get() const { return m_x; }
04147 private:
04148     typename tuple_type<A11>::reference m_x;
04149 };
04150 
04151 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04152 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04153     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a12) {}
04154     typename tuple_type<A12>::reference get() { return m_x; }
04155     typename tuple_type<A12>::const_reference get() const { return m_x; }
04156 private:
04157     typename tuple_type<A12>::reference m_x;
04158 };
04159 
04160 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04161 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04162     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a13) {}
04163     typename tuple_type<A13>::reference get() { return m_x; }
04164     typename tuple_type<A13>::const_reference get() const { return m_x; }
04165 private:
04166     typename tuple_type<A13>::reference m_x;
04167 };
04168 
04169 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04170 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04171     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a14) {}
04172     typename tuple_type<A14>::reference get() { return m_x; }
04173     typename tuple_type<A14>::const_reference get() const { return m_x; }
04174 private:
04175     typename tuple_type<A14>::reference m_x;
04176 };
04177 
04178 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04179 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04180     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a15) {}
04181     typename tuple_type<A15>::reference get() { return m_x; }
04182     typename tuple_type<A15>::const_reference get() const { return m_x; }
04183 private:
04184     typename tuple_type<A15>::reference m_x;
04185 };
04186 
04187 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04188 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04189     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a16) {}
04190     typename tuple_type<A16>::reference get() { return m_x; }
04191     typename tuple_type<A16>::const_reference get() const { return m_x; }
04192 private:
04193     typename tuple_type<A16>::reference m_x;
04194 };
04195 
04196 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04197 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04198     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a17) {}
04199     typename tuple_type<A17>::reference get() { return m_x; }
04200     typename tuple_type<A17>::const_reference get() const { return m_x; }
04201 private:
04202     typename tuple_type<A17>::reference m_x;
04203 };
04204 
04205 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04206 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04207     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a18) {}
04208     typename tuple_type<A18>::reference get() { return m_x; }
04209     typename tuple_type<A18>::const_reference get() const { return m_x; }
04210 private:
04211     typename tuple_type<A18>::reference m_x;
04212 };
04213 
04214 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04215 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04216     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a19) {}
04217     typename tuple_type<A19>::reference get() { return m_x; }
04218     typename tuple_type<A19>::const_reference get() const { return m_x; }
04219 private:
04220     typename tuple_type<A19>::reference m_x;
04221 };
04222 
04223 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04224 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04225     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a20) {}
04226     typename tuple_type<A20>::reference get() { return m_x; }
04227     typename tuple_type<A20>::const_reference get() const { return m_x; }
04228 private:
04229     typename tuple_type<A20>::reference m_x;
04230 };
04231 
04232 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04233 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04234     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a21) {}
04235     typename tuple_type<A21>::reference get() { return m_x; }
04236     typename tuple_type<A21>::const_reference get() const { return m_x; }
04237 private:
04238     typename tuple_type<A21>::reference m_x;
04239 };
04240 
04241 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04242 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04243     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a22) {}
04244     typename tuple_type<A22>::reference get() { return m_x; }
04245     typename tuple_type<A22>::const_reference get() const { return m_x; }
04246 private:
04247     typename tuple_type<A22>::reference m_x;
04248 };
04249 
04250 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04251 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04252     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a23) {}
04253     typename tuple_type<A23>::reference get() { return m_x; }
04254     typename tuple_type<A23>::const_reference get() const { return m_x; }
04255 private:
04256     typename tuple_type<A23>::reference m_x;
04257 };
04258 
04259 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04260 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04261     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a24) {}
04262     typename tuple_type<A24>::reference get() { return m_x; }
04263     typename tuple_type<A24>::const_reference get() const { return m_x; }
04264 private:
04265     typename tuple_type<A24>::reference m_x;
04266 };
04267 
04268 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04269 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04270     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a25) {}
04271     typename tuple_type<A25>::reference get() { return m_x; }
04272     typename tuple_type<A25>::const_reference get() const { return m_x; }
04273 private:
04274     typename tuple_type<A25>::reference m_x;
04275 };
04276 
04277 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04278 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04279     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a26) {}
04280     typename tuple_type<A26>::reference get() { return m_x; }
04281     typename tuple_type<A26>::const_reference get() const { return m_x; }
04282 private:
04283     typename tuple_type<A26>::reference m_x;
04284 };
04285 
04286 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04287 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04288     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a27) {}
04289     typename tuple_type<A27>::reference get() { return m_x; }
04290     typename tuple_type<A27>::const_reference get() const { return m_x; }
04291 private:
04292     typename tuple_type<A27>::reference m_x;
04293 };
04294 
04295 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04296 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04297     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a28) {}
04298     typename tuple_type<A28>::reference get() { return m_x; }
04299     typename tuple_type<A28>::const_reference get() const { return m_x; }
04300 private:
04301     typename tuple_type<A28>::reference m_x;
04302 };
04303 
04304 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
04305 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
04306     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 >& x) : m_x(x.a29) {}
04307     typename tuple_type<A29>::reference get() { return m_x; }
04308     typename tuple_type<A29>::const_reference get() const { return m_x; }
04309 private:
04310     typename tuple_type<A29>::reference m_x;
04311 };
04312 
04313 
04314 
04315 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04316 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04317     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a0) {}
04318     typename tuple_type<A0>::reference get() { return m_x; }
04319     typename tuple_type<A0>::const_reference get() const { return m_x; }
04320 private:
04321     typename tuple_type<A0>::reference m_x;
04322 };
04323 
04324 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04325 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04326     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a1) {}
04327     typename tuple_type<A1>::reference get() { return m_x; }
04328     typename tuple_type<A1>::const_reference get() const { return m_x; }
04329 private:
04330     typename tuple_type<A1>::reference m_x;
04331 };
04332 
04333 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04334 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04335     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a2) {}
04336     typename tuple_type<A2>::reference get() { return m_x; }
04337     typename tuple_type<A2>::const_reference get() const { return m_x; }
04338 private:
04339     typename tuple_type<A2>::reference m_x;
04340 };
04341 
04342 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04343 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04344     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a3) {}
04345     typename tuple_type<A3>::reference get() { return m_x; }
04346     typename tuple_type<A3>::const_reference get() const { return m_x; }
04347 private:
04348     typename tuple_type<A3>::reference m_x;
04349 };
04350 
04351 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04352 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04353     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a4) {}
04354     typename tuple_type<A4>::reference get() { return m_x; }
04355     typename tuple_type<A4>::const_reference get() const { return m_x; }
04356 private:
04357     typename tuple_type<A4>::reference m_x;
04358 };
04359 
04360 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04361 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04362     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a5) {}
04363     typename tuple_type<A5>::reference get() { return m_x; }
04364     typename tuple_type<A5>::const_reference get() const { return m_x; }
04365 private:
04366     typename tuple_type<A5>::reference m_x;
04367 };
04368 
04369 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04370 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04371     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a6) {}
04372     typename tuple_type<A6>::reference get() { return m_x; }
04373     typename tuple_type<A6>::const_reference get() const { return m_x; }
04374 private:
04375     typename tuple_type<A6>::reference m_x;
04376 };
04377 
04378 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04379 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04380     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a7) {}
04381     typename tuple_type<A7>::reference get() { return m_x; }
04382     typename tuple_type<A7>::const_reference get() const { return m_x; }
04383 private:
04384     typename tuple_type<A7>::reference m_x;
04385 };
04386 
04387 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04388 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04389     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a8) {}
04390     typename tuple_type<A8>::reference get() { return m_x; }
04391     typename tuple_type<A8>::const_reference get() const { return m_x; }
04392 private:
04393     typename tuple_type<A8>::reference m_x;
04394 };
04395 
04396 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04397 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04398     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a9) {}
04399     typename tuple_type<A9>::reference get() { return m_x; }
04400     typename tuple_type<A9>::const_reference get() const { return m_x; }
04401 private:
04402     typename tuple_type<A9>::reference m_x;
04403 };
04404 
04405 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04406 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04407     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a10) {}
04408     typename tuple_type<A10>::reference get() { return m_x; }
04409     typename tuple_type<A10>::const_reference get() const { return m_x; }
04410 private:
04411     typename tuple_type<A10>::reference m_x;
04412 };
04413 
04414 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04415 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04416     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a11) {}
04417     typename tuple_type<A11>::reference get() { return m_x; }
04418     typename tuple_type<A11>::const_reference get() const { return m_x; }
04419 private:
04420     typename tuple_type<A11>::reference m_x;
04421 };
04422 
04423 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04424 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04425     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a12) {}
04426     typename tuple_type<A12>::reference get() { return m_x; }
04427     typename tuple_type<A12>::const_reference get() const { return m_x; }
04428 private:
04429     typename tuple_type<A12>::reference m_x;
04430 };
04431 
04432 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04433 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04434     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a13) {}
04435     typename tuple_type<A13>::reference get() { return m_x; }
04436     typename tuple_type<A13>::const_reference get() const { return m_x; }
04437 private:
04438     typename tuple_type<A13>::reference m_x;
04439 };
04440 
04441 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04442 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04443     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a14) {}
04444     typename tuple_type<A14>::reference get() { return m_x; }
04445     typename tuple_type<A14>::const_reference get() const { return m_x; }
04446 private:
04447     typename tuple_type<A14>::reference m_x;
04448 };
04449 
04450 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04451 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04452     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a15) {}
04453     typename tuple_type<A15>::reference get() { return m_x; }
04454     typename tuple_type<A15>::const_reference get() const { return m_x; }
04455 private:
04456     typename tuple_type<A15>::reference m_x;
04457 };
04458 
04459 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04460 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04461     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a16) {}
04462     typename tuple_type<A16>::reference get() { return m_x; }
04463     typename tuple_type<A16>::const_reference get() const { return m_x; }
04464 private:
04465     typename tuple_type<A16>::reference m_x;
04466 };
04467 
04468 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04469 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04470     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a17) {}
04471     typename tuple_type<A17>::reference get() { return m_x; }
04472     typename tuple_type<A17>::const_reference get() const { return m_x; }
04473 private:
04474     typename tuple_type<A17>::reference m_x;
04475 };
04476 
04477 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04478 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04479     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a18) {}
04480     typename tuple_type<A18>::reference get() { return m_x; }
04481     typename tuple_type<A18>::const_reference get() const { return m_x; }
04482 private:
04483     typename tuple_type<A18>::reference m_x;
04484 };
04485 
04486 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04487 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04488     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a19) {}
04489     typename tuple_type<A19>::reference get() { return m_x; }
04490     typename tuple_type<A19>::const_reference get() const { return m_x; }
04491 private:
04492     typename tuple_type<A19>::reference m_x;
04493 };
04494 
04495 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04496 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04497     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a20) {}
04498     typename tuple_type<A20>::reference get() { return m_x; }
04499     typename tuple_type<A20>::const_reference get() const { return m_x; }
04500 private:
04501     typename tuple_type<A20>::reference m_x;
04502 };
04503 
04504 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04505 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04506     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a21) {}
04507     typename tuple_type<A21>::reference get() { return m_x; }
04508     typename tuple_type<A21>::const_reference get() const { return m_x; }
04509 private:
04510     typename tuple_type<A21>::reference m_x;
04511 };
04512 
04513 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04514 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04515     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a22) {}
04516     typename tuple_type<A22>::reference get() { return m_x; }
04517     typename tuple_type<A22>::const_reference get() const { return m_x; }
04518 private:
04519     typename tuple_type<A22>::reference m_x;
04520 };
04521 
04522 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04523 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04524     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a23) {}
04525     typename tuple_type<A23>::reference get() { return m_x; }
04526     typename tuple_type<A23>::const_reference get() const { return m_x; }
04527 private:
04528     typename tuple_type<A23>::reference m_x;
04529 };
04530 
04531 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04532 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04533     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a24) {}
04534     typename tuple_type<A24>::reference get() { return m_x; }
04535     typename tuple_type<A24>::const_reference get() const { return m_x; }
04536 private:
04537     typename tuple_type<A24>::reference m_x;
04538 };
04539 
04540 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04541 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04542     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a25) {}
04543     typename tuple_type<A25>::reference get() { return m_x; }
04544     typename tuple_type<A25>::const_reference get() const { return m_x; }
04545 private:
04546     typename tuple_type<A25>::reference m_x;
04547 };
04548 
04549 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04550 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04551     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a26) {}
04552     typename tuple_type<A26>::reference get() { return m_x; }
04553     typename tuple_type<A26>::const_reference get() const { return m_x; }
04554 private:
04555     typename tuple_type<A26>::reference m_x;
04556 };
04557 
04558 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04559 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04560     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a27) {}
04561     typename tuple_type<A27>::reference get() { return m_x; }
04562     typename tuple_type<A27>::const_reference get() const { return m_x; }
04563 private:
04564     typename tuple_type<A27>::reference m_x;
04565 };
04566 
04567 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04568 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04569     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a28) {}
04570     typename tuple_type<A28>::reference get() { return m_x; }
04571     typename tuple_type<A28>::const_reference get() const { return m_x; }
04572 private:
04573     typename tuple_type<A28>::reference m_x;
04574 };
04575 
04576 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04577 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04578     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a29) {}
04579     typename tuple_type<A29>::reference get() { return m_x; }
04580     typename tuple_type<A29>::const_reference get() const { return m_x; }
04581 private:
04582     typename tuple_type<A29>::reference m_x;
04583 };
04584 
04585 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
04586 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04587     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 >& x) : m_x(x.a30) {}
04588     typename tuple_type<A30>::reference get() { return m_x; }
04589     typename tuple_type<A30>::const_reference get() const { return m_x; }
04590 private:
04591     typename tuple_type<A30>::reference m_x;
04592 };
04593 
04594 
04595 
04596 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04597 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04598     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a0) {}
04599     typename tuple_type<A0>::reference get() { return m_x; }
04600     typename tuple_type<A0>::const_reference get() const { return m_x; }
04601 private:
04602     typename tuple_type<A0>::reference m_x;
04603 };
04604 
04605 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04606 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04607     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a1) {}
04608     typename tuple_type<A1>::reference get() { return m_x; }
04609     typename tuple_type<A1>::const_reference get() const { return m_x; }
04610 private:
04611     typename tuple_type<A1>::reference m_x;
04612 };
04613 
04614 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04615 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04616     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a2) {}
04617     typename tuple_type<A2>::reference get() { return m_x; }
04618     typename tuple_type<A2>::const_reference get() const { return m_x; }
04619 private:
04620     typename tuple_type<A2>::reference m_x;
04621 };
04622 
04623 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04624 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04625     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a3) {}
04626     typename tuple_type<A3>::reference get() { return m_x; }
04627     typename tuple_type<A3>::const_reference get() const { return m_x; }
04628 private:
04629     typename tuple_type<A3>::reference m_x;
04630 };
04631 
04632 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04633 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04634     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a4) {}
04635     typename tuple_type<A4>::reference get() { return m_x; }
04636     typename tuple_type<A4>::const_reference get() const { return m_x; }
04637 private:
04638     typename tuple_type<A4>::reference m_x;
04639 };
04640 
04641 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04642 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04643     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a5) {}
04644     typename tuple_type<A5>::reference get() { return m_x; }
04645     typename tuple_type<A5>::const_reference get() const { return m_x; }
04646 private:
04647     typename tuple_type<A5>::reference m_x;
04648 };
04649 
04650 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04651 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04652     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a6) {}
04653     typename tuple_type<A6>::reference get() { return m_x; }
04654     typename tuple_type<A6>::const_reference get() const { return m_x; }
04655 private:
04656     typename tuple_type<A6>::reference m_x;
04657 };
04658 
04659 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04660 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04661     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a7) {}
04662     typename tuple_type<A7>::reference get() { return m_x; }
04663     typename tuple_type<A7>::const_reference get() const { return m_x; }
04664 private:
04665     typename tuple_type<A7>::reference m_x;
04666 };
04667 
04668 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04669 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04670     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a8) {}
04671     typename tuple_type<A8>::reference get() { return m_x; }
04672     typename tuple_type<A8>::const_reference get() const { return m_x; }
04673 private:
04674     typename tuple_type<A8>::reference m_x;
04675 };
04676 
04677 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04678 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04679     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a9) {}
04680     typename tuple_type<A9>::reference get() { return m_x; }
04681     typename tuple_type<A9>::const_reference get() const { return m_x; }
04682 private:
04683     typename tuple_type<A9>::reference m_x;
04684 };
04685 
04686 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04687 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04688     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a10) {}
04689     typename tuple_type<A10>::reference get() { return m_x; }
04690     typename tuple_type<A10>::const_reference get() const { return m_x; }
04691 private:
04692     typename tuple_type<A10>::reference m_x;
04693 };
04694 
04695 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04696 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04697     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a11) {}
04698     typename tuple_type<A11>::reference get() { return m_x; }
04699     typename tuple_type<A11>::const_reference get() const { return m_x; }
04700 private:
04701     typename tuple_type<A11>::reference m_x;
04702 };
04703 
04704 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04705 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04706     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a12) {}
04707     typename tuple_type<A12>::reference get() { return m_x; }
04708     typename tuple_type<A12>::const_reference get() const { return m_x; }
04709 private:
04710     typename tuple_type<A12>::reference m_x;
04711 };
04712 
04713 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04714 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04715     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a13) {}
04716     typename tuple_type<A13>::reference get() { return m_x; }
04717     typename tuple_type<A13>::const_reference get() const { return m_x; }
04718 private:
04719     typename tuple_type<A13>::reference m_x;
04720 };
04721 
04722 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04723 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04724     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a14) {}
04725     typename tuple_type<A14>::reference get() { return m_x; }
04726     typename tuple_type<A14>::const_reference get() const { return m_x; }
04727 private:
04728     typename tuple_type<A14>::reference m_x;
04729 };
04730 
04731 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04732 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04733     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a15) {}
04734     typename tuple_type<A15>::reference get() { return m_x; }
04735     typename tuple_type<A15>::const_reference get() const { return m_x; }
04736 private:
04737     typename tuple_type<A15>::reference m_x;
04738 };
04739 
04740 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04741 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04742     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a16) {}
04743     typename tuple_type<A16>::reference get() { return m_x; }
04744     typename tuple_type<A16>::const_reference get() const { return m_x; }
04745 private:
04746     typename tuple_type<A16>::reference m_x;
04747 };
04748 
04749 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04750 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04751     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a17) {}
04752     typename tuple_type<A17>::reference get() { return m_x; }
04753     typename tuple_type<A17>::const_reference get() const { return m_x; }
04754 private:
04755     typename tuple_type<A17>::reference m_x;
04756 };
04757 
04758 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04759 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04760     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a18) {}
04761     typename tuple_type<A18>::reference get() { return m_x; }
04762     typename tuple_type<A18>::const_reference get() const { return m_x; }
04763 private:
04764     typename tuple_type<A18>::reference m_x;
04765 };
04766 
04767 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04768 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04769     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a19) {}
04770     typename tuple_type<A19>::reference get() { return m_x; }
04771     typename tuple_type<A19>::const_reference get() const { return m_x; }
04772 private:
04773     typename tuple_type<A19>::reference m_x;
04774 };
04775 
04776 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04777 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04778     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a20) {}
04779     typename tuple_type<A20>::reference get() { return m_x; }
04780     typename tuple_type<A20>::const_reference get() const { return m_x; }
04781 private:
04782     typename tuple_type<A20>::reference m_x;
04783 };
04784 
04785 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04786 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04787     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a21) {}
04788     typename tuple_type<A21>::reference get() { return m_x; }
04789     typename tuple_type<A21>::const_reference get() const { return m_x; }
04790 private:
04791     typename tuple_type<A21>::reference m_x;
04792 };
04793 
04794 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04795 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04796     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a22) {}
04797     typename tuple_type<A22>::reference get() { return m_x; }
04798     typename tuple_type<A22>::const_reference get() const { return m_x; }
04799 private:
04800     typename tuple_type<A22>::reference m_x;
04801 };
04802 
04803 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04804 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04805     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a23) {}
04806     typename tuple_type<A23>::reference get() { return m_x; }
04807     typename tuple_type<A23>::const_reference get() const { return m_x; }
04808 private:
04809     typename tuple_type<A23>::reference m_x;
04810 };
04811 
04812 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04813 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04814     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a24) {}
04815     typename tuple_type<A24>::reference get() { return m_x; }
04816     typename tuple_type<A24>::const_reference get() const { return m_x; }
04817 private:
04818     typename tuple_type<A24>::reference m_x;
04819 };
04820 
04821 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04822 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04823     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a25) {}
04824     typename tuple_type<A25>::reference get() { return m_x; }
04825     typename tuple_type<A25>::const_reference get() const { return m_x; }
04826 private:
04827     typename tuple_type<A25>::reference m_x;
04828 };
04829 
04830 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04831 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04832     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a26) {}
04833     typename tuple_type<A26>::reference get() { return m_x; }
04834     typename tuple_type<A26>::const_reference get() const { return m_x; }
04835 private:
04836     typename tuple_type<A26>::reference m_x;
04837 };
04838 
04839 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04840 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04841     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a27) {}
04842     typename tuple_type<A27>::reference get() { return m_x; }
04843     typename tuple_type<A27>::const_reference get() const { return m_x; }
04844 private:
04845     typename tuple_type<A27>::reference m_x;
04846 };
04847 
04848 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04849 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04850     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a28) {}
04851     typename tuple_type<A28>::reference get() { return m_x; }
04852     typename tuple_type<A28>::const_reference get() const { return m_x; }
04853 private:
04854     typename tuple_type<A28>::reference m_x;
04855 };
04856 
04857 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04858 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04859     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a29) {}
04860     typename tuple_type<A29>::reference get() { return m_x; }
04861     typename tuple_type<A29>::const_reference get() const { return m_x; }
04862 private:
04863     typename tuple_type<A29>::reference m_x;
04864 };
04865 
04866 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04867 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04868     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a30) {}
04869     typename tuple_type<A30>::reference get() { return m_x; }
04870     typename tuple_type<A30>::const_reference get() const { return m_x; }
04871 private:
04872     typename tuple_type<A30>::reference m_x;
04873 };
04874 
04875 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
04876 struct tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
04877     tuple_element(tuple<A0, A1 , A2 , A3 , A4 , A5 , A6 , 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 >& x) : m_x(x.a31) {}
04878     typename tuple_type<A31>::reference get() { return m_x; }
04879     typename tuple_type<A31>::const_reference get() const { return m_x; }
04880 private:
04881     typename tuple_type<A31>::reference m_x;
04882 };
04883 
04884 
04885 
04886 
04887 
04888 template <typename A0>
04889 struct const_tuple_element<tuple<A0>, 0> : tuple_type<A0> {
04890     const_tuple_element(const tuple<A0>& x) : m_x(x.a0) {}
04891     typename tuple_type<A0>::const_reference get() const { return m_x; }
04892 private:
04893     typename tuple_type<A0>::const_reference m_x;
04894 };
04895 
04896 
04897 
04898 template <typename A0, typename A1>
04899 struct const_tuple_element<tuple<A0, A1>, 0> : tuple_type<A0> {
04900     const_tuple_element(const tuple<A0, A1>& x) : m_x(x.a0) {}
04901     typename tuple_type<A0>::const_reference get() const { return m_x; }
04902 private:
04903     typename tuple_type<A0>::const_reference m_x;
04904 };
04905 
04906 template <typename A0, typename A1>
04907 struct const_tuple_element<tuple<A0, A1>, 1> : tuple_type<A1> {
04908     const_tuple_element(const tuple<A0, A1>& x) : m_x(x.a1) {}
04909     typename tuple_type<A1>::const_reference get() const { return m_x; }
04910 private:
04911     typename tuple_type<A1>::const_reference m_x;
04912 };
04913 
04914 
04915 
04916 template <typename A0, typename A1, typename A2>
04917 struct const_tuple_element<tuple<A0, A1, A2>, 0> : tuple_type<A0> {
04918     const_tuple_element(const tuple<A0, A1, A2>& x) : m_x(x.a0) {}
04919     typename tuple_type<A0>::const_reference get() const { return m_x; }
04920 private:
04921     typename tuple_type<A0>::const_reference m_x;
04922 };
04923 
04924 template <typename A0, typename A1, typename A2>
04925 struct const_tuple_element<tuple<A0, A1, A2>, 1> : tuple_type<A1> {
04926     const_tuple_element(const tuple<A0, A1, A2>& x) : m_x(x.a1) {}
04927     typename tuple_type<A1>::const_reference get() const { return m_x; }
04928 private:
04929     typename tuple_type<A1>::const_reference m_x;
04930 };
04931 
04932 template <typename A0, typename A1, typename A2>
04933 struct const_tuple_element<tuple<A0, A1, A2>, 2> : tuple_type<A2> {
04934     const_tuple_element(const tuple<A0, A1, A2>& x) : m_x(x.a2) {}
04935     typename tuple_type<A2>::const_reference get() const { return m_x; }
04936 private:
04937     typename tuple_type<A2>::const_reference m_x;
04938 };
04939 
04940 
04941 
04942 template <typename A0, typename A1, typename A2, typename A3>
04943 struct const_tuple_element<tuple<A0, A1, A2, A3>, 0> : tuple_type<A0> {
04944     const_tuple_element(const tuple<A0, A1, A2, A3>& x) : m_x(x.a0) {}
04945     typename tuple_type<A0>::const_reference get() const { return m_x; }
04946 private:
04947     typename tuple_type<A0>::const_reference m_x;
04948 };
04949 
04950 template <typename A0, typename A1, typename A2, typename A3>
04951 struct const_tuple_element<tuple<A0, A1, A2, A3>, 1> : tuple_type<A1> {
04952     const_tuple_element(const tuple<A0, A1, A2, A3>& x) : m_x(x.a1) {}
04953     typename tuple_type<A1>::const_reference get() const { return m_x; }
04954 private:
04955     typename tuple_type<A1>::const_reference m_x;
04956 };
04957 
04958 template <typename A0, typename A1, typename A2, typename A3>
04959 struct const_tuple_element<tuple<A0, A1, A2, A3>, 2> : tuple_type<A2> {
04960     const_tuple_element(const tuple<A0, A1, A2, A3>& x) : m_x(x.a2) {}
04961     typename tuple_type<A2>::const_reference get() const { return m_x; }
04962 private:
04963     typename tuple_type<A2>::const_reference m_x;
04964 };
04965 
04966 template <typename A0, typename A1, typename A2, typename A3>
04967 struct const_tuple_element<tuple<A0, A1, A2, A3>, 3> : tuple_type<A3> {
04968     const_tuple_element(const tuple<A0, A1, A2, A3>& x) : m_x(x.a3) {}
04969     typename tuple_type<A3>::const_reference get() const { return m_x; }
04970 private:
04971     typename tuple_type<A3>::const_reference m_x;
04972 };
04973 
04974 
04975 
04976 template <typename A0, typename A1, typename A2, typename A3, typename A4>
04977 struct const_tuple_element<tuple<A0, A1, A2, A3, A4>, 0> : tuple_type<A0> {
04978     const_tuple_element(const tuple<A0, A1, A2, A3, A4>& x) : m_x(x.a0) {}
04979     typename tuple_type<A0>::const_reference get() const { return m_x; }
04980 private:
04981     typename tuple_type<A0>::const_reference m_x;
04982 };
04983 
04984 template <typename A0, typename A1, typename A2, typename A3, typename A4>
04985 struct const_tuple_element<tuple<A0, A1, A2, A3, A4>, 1> : tuple_type<A1> {
04986     const_tuple_element(const tuple<A0, A1, A2, A3, A4>& x) : m_x(x.a1) {}
04987     typename tuple_type<A1>::const_reference get() const { return m_x; }
04988 private:
04989     typename tuple_type<A1>::const_reference m_x;
04990 };
04991 
04992 template <typename A0, typename A1, typename A2, typename A3, typename A4>
04993 struct const_tuple_element<tuple<A0, A1, A2, A3, A4>, 2> : tuple_type<A2> {
04994     const_tuple_element(const tuple<A0, A1, A2, A3, A4>& x) : m_x(x.a2) {}
04995     typename tuple_type<A2>::const_reference get() const { return m_x; }
04996 private:
04997     typename tuple_type<A2>::const_reference m_x;
04998 };
04999 
05000 template <typename A0, typename A1, typename A2, typename A3, typename A4>
05001 struct const_tuple_element<tuple<A0, A1, A2, A3, A4>, 3> : tuple_type<A3> {
05002     const_tuple_element(const tuple<A0, A1, A2, A3, A4>& x) : m_x(x.a3) {}
05003     typename tuple_type<A3>::const_reference get() const { return m_x; }
05004 private:
05005     typename tuple_type<A3>::const_reference m_x;
05006 };
05007 
05008 template <typename A0, typename A1, typename A2, typename A3, typename A4>
05009 struct const_tuple_element<tuple<A0, A1, A2, A3, A4>, 4> : tuple_type<A4> {
05010     const_tuple_element(const tuple<A0, A1, A2, A3, A4>& x) : m_x(x.a4) {}
05011     typename tuple_type<A4>::const_reference get() const { return m_x; }
05012 private:
05013     typename tuple_type<A4>::const_reference m_x;
05014 };
05015 
05016 
05017 
05018 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
05019 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 0> : tuple_type<A0> {
05020     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a0) {}
05021     typename tuple_type<A0>::const_reference get() const { return m_x; }
05022 private:
05023     typename tuple_type<A0>::const_reference m_x;
05024 };
05025 
05026 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
05027 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 1> : tuple_type<A1> {
05028     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a1) {}
05029     typename tuple_type<A1>::const_reference get() const { return m_x; }
05030 private:
05031     typename tuple_type<A1>::const_reference m_x;
05032 };
05033 
05034 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
05035 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 2> : tuple_type<A2> {
05036     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a2) {}
05037     typename tuple_type<A2>::const_reference get() const { return m_x; }
05038 private:
05039     typename tuple_type<A2>::const_reference m_x;
05040 };
05041 
05042 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
05043 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 3> : tuple_type<A3> {
05044     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a3) {}
05045     typename tuple_type<A3>::const_reference get() const { return m_x; }
05046 private:
05047     typename tuple_type<A3>::const_reference m_x;
05048 };
05049 
05050 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
05051 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 4> : tuple_type<A4> {
05052     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a4) {}
05053     typename tuple_type<A4>::const_reference get() const { return m_x; }
05054 private:
05055     typename tuple_type<A4>::const_reference m_x;
05056 };
05057 
05058 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
05059 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5>, 5> : tuple_type<A5> {
05060     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5>& x) : m_x(x.a5) {}
05061     typename tuple_type<A5>::const_reference get() const { return m_x; }
05062 private:
05063     typename tuple_type<A5>::const_reference m_x;
05064 };
05065 
05066 
05067 
05068 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
05069 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 0> : tuple_type<A0> {
05070     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6>& x) : m_x(x.a0) {}
05071     typename tuple_type<A0>::const_reference get() const { return m_x; }
05072 private:
05073     typename tuple_type<A0>::const_reference m_x;
05074 };
05075 
05076 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
05077 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 1> : tuple_type<A1> {
05078     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6>& x) : m_x(x.a1) {}
05079     typename tuple_type<A1>::const_reference get() const { return m_x; }
05080 private:
05081     typename tuple_type<A1>::const_reference m_x;
05082 };
05083 
05084 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
05085 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 2> : tuple_type<A2> {
05086     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6>& x) : m_x(x.a2) {}
05087     typename tuple_type<A2>::const_reference get() const { return m_x; }
05088 private:
05089     typename tuple_type<A2>::const_reference m_x;
05090 };
05091 
05092 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
05093 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 3> : tuple_type<A3> {
05094     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6>& x) : m_x(x.a3) {}
05095     typename tuple_type<A3>::const_reference get() const { return m_x; }
05096 private:
05097     typename tuple_type<A3>::const_reference m_x;
05098 };
05099 
05100 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
05101 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 4> : tuple_type<A4> {
05102     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6>& x) : m_x(x.a4) {}
05103     typename tuple_type<A4>::const_reference get() const { return m_x; }
05104 private:
05105     typename tuple_type<A4>::const_reference m_x;
05106 };
05107 
05108 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
05109 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 5> : tuple_type<A5> {
05110     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6>& x) : m_x(x.a5) {}
05111     typename tuple_type<A5>::const_reference get() const { return m_x; }
05112 private:
05113     typename tuple_type<A5>::const_reference m_x;
05114 };
05115 
05116 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
05117 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6>, 6> : tuple_type<A6> {
05118     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6>& x) : m_x(x.a6) {}
05119     typename tuple_type<A6>::const_reference get() const { return m_x; }
05120 private:
05121     typename tuple_type<A6>::const_reference m_x;
05122 };
05123 
05124 
05125 
05126 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
05127 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 0> : tuple_type<A0> {
05128     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7>& x) : m_x(x.a0) {}
05129     typename tuple_type<A0>::const_reference get() const { return m_x; }
05130 private:
05131     typename tuple_type<A0>::const_reference m_x;
05132 };
05133 
05134 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
05135 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 1> : tuple_type<A1> {
05136     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7>& x) : m_x(x.a1) {}
05137     typename tuple_type<A1>::const_reference get() const { return m_x; }
05138 private:
05139     typename tuple_type<A1>::const_reference m_x;
05140 };
05141 
05142 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
05143 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 2> : tuple_type<A2> {
05144     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7>& x) : m_x(x.a2) {}
05145     typename tuple_type<A2>::const_reference get() const { return m_x; }
05146 private:
05147     typename tuple_type<A2>::const_reference m_x;
05148 };
05149 
05150 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
05151 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 3> : tuple_type<A3> {
05152     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7>& x) : m_x(x.a3) {}
05153     typename tuple_type<A3>::const_reference get() const { return m_x; }
05154 private:
05155     typename tuple_type<A3>::const_reference m_x;
05156 };
05157 
05158 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
05159 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 4> : tuple_type<A4> {
05160     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7>& x) : m_x(x.a4) {}
05161     typename tuple_type<A4>::const_reference get() const { return m_x; }
05162 private:
05163     typename tuple_type<A4>::const_reference m_x;
05164 };
05165 
05166 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
05167 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 5> : tuple_type<A5> {
05168     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7>& x) : m_x(x.a5) {}
05169     typename tuple_type<A5>::const_reference get() const { return m_x; }
05170 private:
05171     typename tuple_type<A5>::const_reference m_x;
05172 };
05173 
05174 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
05175 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 6> : tuple_type<A6> {
05176     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7>& x) : m_x(x.a6) {}
05177     typename tuple_type<A6>::const_reference get() const { return m_x; }
05178 private:
05179     typename tuple_type<A6>::const_reference m_x;
05180 };
05181 
05182 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
05183 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7>, 7> : tuple_type<A7> {
05184     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7>& x) : m_x(x.a7) {}
05185     typename tuple_type<A7>::const_reference get() const { return m_x; }
05186 private:
05187     typename tuple_type<A7>::const_reference m_x;
05188 };
05189 
05190 
05191 
05192 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
05193 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 0> : tuple_type<A0> {
05194     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& x) : m_x(x.a0) {}
05195     typename tuple_type<A0>::const_reference get() const { return m_x; }
05196 private:
05197     typename tuple_type<A0>::const_reference m_x;
05198 };
05199 
05200 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
05201 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 1> : tuple_type<A1> {
05202     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& x) : m_x(x.a1) {}
05203     typename tuple_type<A1>::const_reference get() const { return m_x; }
05204 private:
05205     typename tuple_type<A1>::const_reference m_x;
05206 };
05207 
05208 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
05209 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 2> : tuple_type<A2> {
05210     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& x) : m_x(x.a2) {}
05211     typename tuple_type<A2>::const_reference get() const { return m_x; }
05212 private:
05213     typename tuple_type<A2>::const_reference m_x;
05214 };
05215 
05216 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
05217 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 3> : tuple_type<A3> {
05218     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& x) : m_x(x.a3) {}
05219     typename tuple_type<A3>::const_reference get() const { return m_x; }
05220 private:
05221     typename tuple_type<A3>::const_reference m_x;
05222 };
05223 
05224 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
05225 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 4> : tuple_type<A4> {
05226     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& x) : m_x(x.a4) {}
05227     typename tuple_type<A4>::const_reference get() const { return m_x; }
05228 private:
05229     typename tuple_type<A4>::const_reference m_x;
05230 };
05231 
05232 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
05233 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 5> : tuple_type<A5> {
05234     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& x) : m_x(x.a5) {}
05235     typename tuple_type<A5>::const_reference get() const { return m_x; }
05236 private:
05237     typename tuple_type<A5>::const_reference m_x;
05238 };
05239 
05240 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
05241 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 6> : tuple_type<A6> {
05242     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& x) : m_x(x.a6) {}
05243     typename tuple_type<A6>::const_reference get() const { return m_x; }
05244 private:
05245     typename tuple_type<A6>::const_reference m_x;
05246 };
05247 
05248 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
05249 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 7> : tuple_type<A7> {
05250     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& x) : m_x(x.a7) {}
05251     typename tuple_type<A7>::const_reference get() const { return m_x; }
05252 private:
05253     typename tuple_type<A7>::const_reference m_x;
05254 };
05255 
05256 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
05257 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, 8> : tuple_type<A8> {
05258     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& x) : m_x(x.a8) {}
05259     typename tuple_type<A8>::const_reference get() const { return m_x; }
05260 private:
05261     typename tuple_type<A8>::const_reference m_x;
05262 };
05263 
05264 
05265 
05266 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
05267 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 0> : tuple_type<A0> {
05268     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& x) : m_x(x.a0) {}
05269     typename tuple_type<A0>::const_reference get() const { return m_x; }
05270 private:
05271     typename tuple_type<A0>::const_reference m_x;
05272 };
05273 
05274 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
05275 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 1> : tuple_type<A1> {
05276     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& x) : m_x(x.a1) {}
05277     typename tuple_type<A1>::const_reference get() const { return m_x; }
05278 private:
05279     typename tuple_type<A1>::const_reference m_x;
05280 };
05281 
05282 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
05283 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 2> : tuple_type<A2> {
05284     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& x) : m_x(x.a2) {}
05285     typename tuple_type<A2>::const_reference get() const { return m_x; }
05286 private:
05287     typename tuple_type<A2>::const_reference m_x;
05288 };
05289 
05290 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
05291 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 3> : tuple_type<A3> {
05292     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& x) : m_x(x.a3) {}
05293     typename tuple_type<A3>::const_reference get() const { return m_x; }
05294 private:
05295     typename tuple_type<A3>::const_reference m_x;
05296 };
05297 
05298 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
05299 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 4> : tuple_type<A4> {
05300     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& x) : m_x(x.a4) {}
05301     typename tuple_type<A4>::const_reference get() const { return m_x; }
05302 private:
05303     typename tuple_type<A4>::const_reference m_x;
05304 };
05305 
05306 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
05307 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 5> : tuple_type<A5> {
05308     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& x) : m_x(x.a5) {}
05309     typename tuple_type<A5>::const_reference get() const { return m_x; }
05310 private:
05311     typename tuple_type<A5>::const_reference m_x;
05312 };
05313 
05314 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
05315 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 6> : tuple_type<A6> {
05316     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& x) : m_x(x.a6) {}
05317     typename tuple_type<A6>::const_reference get() const { return m_x; }
05318 private:
05319     typename tuple_type<A6>::const_reference m_x;
05320 };
05321 
05322 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
05323 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 7> : tuple_type<A7> {
05324     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& x) : m_x(x.a7) {}
05325     typename tuple_type<A7>::const_reference get() const { return m_x; }
05326 private:
05327     typename tuple_type<A7>::const_reference m_x;
05328 };
05329 
05330 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
05331 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 8> : tuple_type<A8> {
05332     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& x) : m_x(x.a8) {}
05333     typename tuple_type<A8>::const_reference get() const { return m_x; }
05334 private:
05335     typename tuple_type<A8>::const_reference m_x;
05336 };
05337 
05338 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
05339 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, 9> : tuple_type<A9> {
05340     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& x) : m_x(x.a9) {}
05341     typename tuple_type<A9>::const_reference get() const { return m_x; }
05342 private:
05343     typename tuple_type<A9>::const_reference m_x;
05344 };
05345 
05346 
05347 
05348 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
05349 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 0> : tuple_type<A0> {
05350     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& x) : m_x(x.a0) {}
05351     typename tuple_type<A0>::const_reference get() const { return m_x; }
05352 private:
05353     typename tuple_type<A0>::const_reference m_x;
05354 };
05355 
05356 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
05357 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 1> : tuple_type<A1> {
05358     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& x) : m_x(x.a1) {}
05359     typename tuple_type<A1>::const_reference get() const { return m_x; }
05360 private:
05361     typename tuple_type<A1>::const_reference m_x;
05362 };
05363 
05364 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
05365 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 2> : tuple_type<A2> {
05366     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& x) : m_x(x.a2) {}
05367     typename tuple_type<A2>::const_reference get() const { return m_x; }
05368 private:
05369     typename tuple_type<A2>::const_reference m_x;
05370 };
05371 
05372 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
05373 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 3> : tuple_type<A3> {
05374     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& x) : m_x(x.a3) {}
05375     typename tuple_type<A3>::const_reference get() const { return m_x; }
05376 private:
05377     typename tuple_type<A3>::const_reference m_x;
05378 };
05379 
05380 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
05381 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 4> : tuple_type<A4> {
05382     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& x) : m_x(x.a4) {}
05383     typename tuple_type<A4>::const_reference get() const { return m_x; }
05384 private:
05385     typename tuple_type<A4>::const_reference m_x;
05386 };
05387 
05388 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
05389 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 5> : tuple_type<A5> {
05390     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& x) : m_x(x.a5) {}
05391     typename tuple_type<A5>::const_reference get() const { return m_x; }
05392 private:
05393     typename tuple_type<A5>::const_reference m_x;
05394 };
05395 
05396 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
05397 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 6> : tuple_type<A6> {
05398     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& x) : m_x(x.a6) {}
05399     typename tuple_type<A6>::const_reference get() const { return m_x; }
05400 private:
05401     typename tuple_type<A6>::const_reference m_x;
05402 };
05403 
05404 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
05405 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 7> : tuple_type<A7> {
05406     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& x) : m_x(x.a7) {}
05407     typename tuple_type<A7>::const_reference get() const { return m_x; }
05408 private:
05409     typename tuple_type<A7>::const_reference m_x;
05410 };
05411 
05412 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
05413 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 8> : tuple_type<A8> {
05414     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& x) : m_x(x.a8) {}
05415     typename tuple_type<A8>::const_reference get() const { return m_x; }
05416 private:
05417     typename tuple_type<A8>::const_reference m_x;
05418 };
05419 
05420 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
05421 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 9> : tuple_type<A9> {
05422     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& x) : m_x(x.a9) {}
05423     typename tuple_type<A9>::const_reference get() const { return m_x; }
05424 private:
05425     typename tuple_type<A9>::const_reference m_x;
05426 };
05427 
05428 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
05429 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, 10> : tuple_type<A10> {
05430     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& x) : m_x(x.a10) {}
05431     typename tuple_type<A10>::const_reference get() const { return m_x; }
05432 private:
05433     typename tuple_type<A10>::const_reference m_x;
05434 };
05435 
05436 
05437 
05438 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
05439 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 0> : tuple_type<A0> {
05440     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a0) {}
05441     typename tuple_type<A0>::const_reference get() const { return m_x; }
05442 private:
05443     typename tuple_type<A0>::const_reference m_x;
05444 };
05445 
05446 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
05447 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 1> : tuple_type<A1> {
05448     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a1) {}
05449     typename tuple_type<A1>::const_reference get() const { return m_x; }
05450 private:
05451     typename tuple_type<A1>::const_reference m_x;
05452 };
05453 
05454 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
05455 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 2> : tuple_type<A2> {
05456     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a2) {}
05457     typename tuple_type<A2>::const_reference get() const { return m_x; }
05458 private:
05459     typename tuple_type<A2>::const_reference m_x;
05460 };
05461 
05462 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
05463 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 3> : tuple_type<A3> {
05464     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a3) {}
05465     typename tuple_type<A3>::const_reference get() const { return m_x; }
05466 private:
05467     typename tuple_type<A3>::const_reference m_x;
05468 };
05469 
05470 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
05471 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 4> : tuple_type<A4> {
05472     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a4) {}
05473     typename tuple_type<A4>::const_reference get() const { return m_x; }
05474 private:
05475     typename tuple_type<A4>::const_reference m_x;
05476 };
05477 
05478 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
05479 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 5> : tuple_type<A5> {
05480     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a5) {}
05481     typename tuple_type<A5>::const_reference get() const { return m_x; }
05482 private:
05483     typename tuple_type<A5>::const_reference m_x;
05484 };
05485 
05486 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
05487 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 6> : tuple_type<A6> {
05488     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a6) {}
05489     typename tuple_type<A6>::const_reference get() const { return m_x; }
05490 private:
05491     typename tuple_type<A6>::const_reference m_x;
05492 };
05493 
05494 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
05495 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 7> : tuple_type<A7> {
05496     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a7) {}
05497     typename tuple_type<A7>::const_reference get() const { return m_x; }
05498 private:
05499     typename tuple_type<A7>::const_reference m_x;
05500 };
05501 
05502 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
05503 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 8> : tuple_type<A8> {
05504     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a8) {}
05505     typename tuple_type<A8>::const_reference get() const { return m_x; }
05506 private:
05507     typename tuple_type<A8>::const_reference m_x;
05508 };
05509 
05510 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
05511 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 9> : tuple_type<A9> {
05512     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a9) {}
05513     typename tuple_type<A9>::const_reference get() const { return m_x; }
05514 private:
05515     typename tuple_type<A9>::const_reference m_x;
05516 };
05517 
05518 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
05519 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 10> : tuple_type<A10> {
05520     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a10) {}
05521     typename tuple_type<A10>::const_reference get() const { return m_x; }
05522 private:
05523     typename tuple_type<A10>::const_reference m_x;
05524 };
05525 
05526 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
05527 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, 11> : tuple_type<A11> {
05528     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& x) : m_x(x.a11) {}
05529     typename tuple_type<A11>::const_reference get() const { return m_x; }
05530 private:
05531     typename tuple_type<A11>::const_reference m_x;
05532 };
05533 
05534 
05535 
05536 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
05537 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 0> : tuple_type<A0> {
05538     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a0) {}
05539     typename tuple_type<A0>::const_reference get() const { return m_x; }
05540 private:
05541     typename tuple_type<A0>::const_reference m_x;
05542 };
05543 
05544 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
05545 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 1> : tuple_type<A1> {
05546     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a1) {}
05547     typename tuple_type<A1>::const_reference get() const { return m_x; }
05548 private:
05549     typename tuple_type<A1>::const_reference m_x;
05550 };
05551 
05552 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
05553 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 2> : tuple_type<A2> {
05554     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a2) {}
05555     typename tuple_type<A2>::const_reference get() const { return m_x; }
05556 private:
05557     typename tuple_type<A2>::const_reference m_x;
05558 };
05559 
05560 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
05561 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 3> : tuple_type<A3> {
05562     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a3) {}
05563     typename tuple_type<A3>::const_reference get() const { return m_x; }
05564 private:
05565     typename tuple_type<A3>::const_reference m_x;
05566 };
05567 
05568 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
05569 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 4> : tuple_type<A4> {
05570     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a4) {}
05571     typename tuple_type<A4>::const_reference get() const { return m_x; }
05572 private:
05573     typename tuple_type<A4>::const_reference m_x;
05574 };
05575 
05576 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
05577 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 5> : tuple_type<A5> {
05578     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a5) {}
05579     typename tuple_type<A5>::const_reference get() const { return m_x; }
05580 private:
05581     typename tuple_type<A5>::const_reference m_x;
05582 };
05583 
05584 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
05585 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 6> : tuple_type<A6> {
05586     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a6) {}
05587     typename tuple_type<A6>::const_reference get() const { return m_x; }
05588 private:
05589     typename tuple_type<A6>::const_reference m_x;
05590 };
05591 
05592 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
05593 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 7> : tuple_type<A7> {
05594     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a7) {}
05595     typename tuple_type<A7>::const_reference get() const { return m_x; }
05596 private:
05597     typename tuple_type<A7>::const_reference m_x;
05598 };
05599 
05600 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
05601 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 8> : tuple_type<A8> {
05602     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a8) {}
05603     typename tuple_type<A8>::const_reference get() const { return m_x; }
05604 private:
05605     typename tuple_type<A8>::const_reference m_x;
05606 };
05607 
05608 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
05609 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 9> : tuple_type<A9> {
05610     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a9) {}
05611     typename tuple_type<A9>::const_reference get() const { return m_x; }
05612 private:
05613     typename tuple_type<A9>::const_reference m_x;
05614 };
05615 
05616 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
05617 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 10> : tuple_type<A10> {
05618     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a10) {}
05619     typename tuple_type<A10>::const_reference get() const { return m_x; }
05620 private:
05621     typename tuple_type<A10>::const_reference m_x;
05622 };
05623 
05624 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
05625 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 11> : tuple_type<A11> {
05626     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a11) {}
05627     typename tuple_type<A11>::const_reference get() const { return m_x; }
05628 private:
05629     typename tuple_type<A11>::const_reference m_x;
05630 };
05631 
05632 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
05633 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, 12> : tuple_type<A12> {
05634     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& x) : m_x(x.a12) {}
05635     typename tuple_type<A12>::const_reference get() const { return m_x; }
05636 private:
05637     typename tuple_type<A12>::const_reference m_x;
05638 };
05639 
05640 
05641 
05642 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
05643 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 0> : tuple_type<A0> {
05644     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a0) {}
05645     typename tuple_type<A0>::const_reference get() const { return m_x; }
05646 private:
05647     typename tuple_type<A0>::const_reference m_x;
05648 };
05649 
05650 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
05651 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 1> : tuple_type<A1> {
05652     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a1) {}
05653     typename tuple_type<A1>::const_reference get() const { return m_x; }
05654 private:
05655     typename tuple_type<A1>::const_reference m_x;
05656 };
05657 
05658 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
05659 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 2> : tuple_type<A2> {
05660     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a2) {}
05661     typename tuple_type<A2>::const_reference get() const { return m_x; }
05662 private:
05663     typename tuple_type<A2>::const_reference m_x;
05664 };
05665 
05666 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
05667 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 3> : tuple_type<A3> {
05668     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a3) {}
05669     typename tuple_type<A3>::const_reference get() const { return m_x; }
05670 private:
05671     typename tuple_type<A3>::const_reference m_x;
05672 };
05673 
05674 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
05675 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 4> : tuple_type<A4> {
05676     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a4) {}
05677     typename tuple_type<A4>::const_reference get() const { return m_x; }
05678 private:
05679     typename tuple_type<A4>::const_reference m_x;
05680 };
05681 
05682 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
05683 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 5> : tuple_type<A5> {
05684     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a5) {}
05685     typename tuple_type<A5>::const_reference get() const { return m_x; }
05686 private:
05687     typename tuple_type<A5>::const_reference m_x;
05688 };
05689 
05690 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
05691 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 6> : tuple_type<A6> {
05692     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a6) {}
05693     typename tuple_type<A6>::const_reference get() const { return m_x; }
05694 private:
05695     typename tuple_type<A6>::const_reference m_x;
05696 };
05697 
05698 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
05699 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 7> : tuple_type<A7> {
05700     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a7) {}
05701     typename tuple_type<A7>::const_reference get() const { return m_x; }
05702 private:
05703     typename tuple_type<A7>::const_reference m_x;
05704 };
05705 
05706 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
05707 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 8> : tuple_type<A8> {
05708     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a8) {}
05709     typename tuple_type<A8>::const_reference get() const { return m_x; }
05710 private:
05711     typename tuple_type<A8>::const_reference m_x;
05712 };
05713 
05714 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
05715 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 9> : tuple_type<A9> {
05716     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a9) {}
05717     typename tuple_type<A9>::const_reference get() const { return m_x; }
05718 private:
05719     typename tuple_type<A9>::const_reference m_x;
05720 };
05721 
05722 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
05723 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 10> : tuple_type<A10> {
05724     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a10) {}
05725     typename tuple_type<A10>::const_reference get() const { return m_x; }
05726 private:
05727     typename tuple_type<A10>::const_reference m_x;
05728 };
05729 
05730 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
05731 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 11> : tuple_type<A11> {
05732     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a11) {}
05733     typename tuple_type<A11>::const_reference get() const { return m_x; }
05734 private:
05735     typename tuple_type<A11>::const_reference m_x;
05736 };
05737 
05738 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
05739 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 12> : tuple_type<A12> {
05740     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a12) {}
05741     typename tuple_type<A12>::const_reference get() const { return m_x; }
05742 private:
05743     typename tuple_type<A12>::const_reference m_x;
05744 };
05745 
05746 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
05747 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, 13> : tuple_type<A13> {
05748     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& x) : m_x(x.a13) {}
05749     typename tuple_type<A13>::const_reference get() const { return m_x; }
05750 private:
05751     typename tuple_type<A13>::const_reference m_x;
05752 };
05753 
05754 
05755 
05756 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
05757 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 0> : tuple_type<A0> {
05758     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a0) {}
05759     typename tuple_type<A0>::const_reference get() const { return m_x; }
05760 private:
05761     typename tuple_type<A0>::const_reference m_x;
05762 };
05763 
05764 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
05765 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 1> : tuple_type<A1> {
05766     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a1) {}
05767     typename tuple_type<A1>::const_reference get() const { return m_x; }
05768 private:
05769     typename tuple_type<A1>::const_reference m_x;
05770 };
05771 
05772 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
05773 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 2> : tuple_type<A2> {
05774     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a2) {}
05775     typename tuple_type<A2>::const_reference get() const { return m_x; }
05776 private:
05777     typename tuple_type<A2>::const_reference m_x;
05778 };
05779 
05780 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
05781 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 3> : tuple_type<A3> {
05782     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a3) {}
05783     typename tuple_type<A3>::const_reference get() const { return m_x; }
05784 private:
05785     typename tuple_type<A3>::const_reference m_x;
05786 };
05787 
05788 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
05789 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 4> : tuple_type<A4> {
05790     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a4) {}
05791     typename tuple_type<A4>::const_reference get() const { return m_x; }
05792 private:
05793     typename tuple_type<A4>::const_reference m_x;
05794 };
05795 
05796 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
05797 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 5> : tuple_type<A5> {
05798     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a5) {}
05799     typename tuple_type<A5>::const_reference get() const { return m_x; }
05800 private:
05801     typename tuple_type<A5>::const_reference m_x;
05802 };
05803 
05804 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
05805 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 6> : tuple_type<A6> {
05806     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a6) {}
05807     typename tuple_type<A6>::const_reference get() const { return m_x; }
05808 private:
05809     typename tuple_type<A6>::const_reference m_x;
05810 };
05811 
05812 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
05813 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 7> : tuple_type<A7> {
05814     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a7) {}
05815     typename tuple_type<A7>::const_reference get() const { return m_x; }
05816 private:
05817     typename tuple_type<A7>::const_reference m_x;
05818 };
05819 
05820 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
05821 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 8> : tuple_type<A8> {
05822     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a8) {}
05823     typename tuple_type<A8>::const_reference get() const { return m_x; }
05824 private:
05825     typename tuple_type<A8>::const_reference m_x;
05826 };
05827 
05828 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
05829 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 9> : tuple_type<A9> {
05830     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a9) {}
05831     typename tuple_type<A9>::const_reference get() const { return m_x; }
05832 private:
05833     typename tuple_type<A9>::const_reference m_x;
05834 };
05835 
05836 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
05837 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 10> : tuple_type<A10> {
05838     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a10) {}
05839     typename tuple_type<A10>::const_reference get() const { return m_x; }
05840 private:
05841     typename tuple_type<A10>::const_reference m_x;
05842 };
05843 
05844 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
05845 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 11> : tuple_type<A11> {
05846     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a11) {}
05847     typename tuple_type<A11>::const_reference get() const { return m_x; }
05848 private:
05849     typename tuple_type<A11>::const_reference m_x;
05850 };
05851 
05852 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
05853 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 12> : tuple_type<A12> {
05854     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a12) {}
05855     typename tuple_type<A12>::const_reference get() const { return m_x; }
05856 private:
05857     typename tuple_type<A12>::const_reference m_x;
05858 };
05859 
05860 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
05861 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 13> : tuple_type<A13> {
05862     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a13) {}
05863     typename tuple_type<A13>::const_reference get() const { return m_x; }
05864 private:
05865     typename tuple_type<A13>::const_reference m_x;
05866 };
05867 
05868 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
05869 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, 14> : tuple_type<A14> {
05870     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& x) : m_x(x.a14) {}
05871     typename tuple_type<A14>::const_reference get() const { return m_x; }
05872 private:
05873     typename tuple_type<A14>::const_reference m_x;
05874 };
05875 
05876 
05877 
05878 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
05879 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> {
05880     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a0) {}
05881     typename tuple_type<A0>::const_reference get() const { return m_x; }
05882 private:
05883     typename tuple_type<A0>::const_reference m_x;
05884 };
05885 
05886 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
05887 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> {
05888     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a1) {}
05889     typename tuple_type<A1>::const_reference get() const { return m_x; }
05890 private:
05891     typename tuple_type<A1>::const_reference m_x;
05892 };
05893 
05894 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
05895 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> {
05896     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a2) {}
05897     typename tuple_type<A2>::const_reference get() const { return m_x; }
05898 private:
05899     typename tuple_type<A2>::const_reference m_x;
05900 };
05901 
05902 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
05903 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> {
05904     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a3) {}
05905     typename tuple_type<A3>::const_reference get() const { return m_x; }
05906 private:
05907     typename tuple_type<A3>::const_reference m_x;
05908 };
05909 
05910 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
05911 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> {
05912     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a4) {}
05913     typename tuple_type<A4>::const_reference get() const { return m_x; }
05914 private:
05915     typename tuple_type<A4>::const_reference m_x;
05916 };
05917 
05918 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
05919 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> {
05920     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a5) {}
05921     typename tuple_type<A5>::const_reference get() const { return m_x; }
05922 private:
05923     typename tuple_type<A5>::const_reference m_x;
05924 };
05925 
05926 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
05927 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> {
05928     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a6) {}
05929     typename tuple_type<A6>::const_reference get() const { return m_x; }
05930 private:
05931     typename tuple_type<A6>::const_reference m_x;
05932 };
05933 
05934 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
05935 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> {
05936     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a7) {}
05937     typename tuple_type<A7>::const_reference get() const { return m_x; }
05938 private:
05939     typename tuple_type<A7>::const_reference m_x;
05940 };
05941 
05942 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
05943 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> {
05944     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a8) {}
05945     typename tuple_type<A8>::const_reference get() const { return m_x; }
05946 private:
05947     typename tuple_type<A8>::const_reference m_x;
05948 };
05949 
05950 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
05951 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> {
05952     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a9) {}
05953     typename tuple_type<A9>::const_reference get() const { return m_x; }
05954 private:
05955     typename tuple_type<A9>::const_reference m_x;
05956 };
05957 
05958 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
05959 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> {
05960     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a10) {}
05961     typename tuple_type<A10>::const_reference get() const { return m_x; }
05962 private:
05963     typename tuple_type<A10>::const_reference m_x;
05964 };
05965 
05966 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
05967 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> {
05968     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a11) {}
05969     typename tuple_type<A11>::const_reference get() const { return m_x; }
05970 private:
05971     typename tuple_type<A11>::const_reference m_x;
05972 };
05973 
05974 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
05975 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> {
05976     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a12) {}
05977     typename tuple_type<A12>::const_reference get() const { return m_x; }
05978 private:
05979     typename tuple_type<A12>::const_reference m_x;
05980 };
05981 
05982 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
05983 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> {
05984     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a13) {}
05985     typename tuple_type<A13>::const_reference get() const { return m_x; }
05986 private:
05987     typename tuple_type<A13>::const_reference m_x;
05988 };
05989 
05990 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
05991 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> {
05992     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a14) {}
05993     typename tuple_type<A14>::const_reference get() const { return m_x; }
05994 private:
05995     typename tuple_type<A14>::const_reference m_x;
05996 };
05997 
05998 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
05999 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> {
06000     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& x) : m_x(x.a15) {}
06001     typename tuple_type<A15>::const_reference get() const { return m_x; }
06002 private:
06003     typename tuple_type<A15>::const_reference m_x;
06004 };
06005 
06006 
06007 
06008 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
06009 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> {
06010     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a0) {}
06011     typename tuple_type<A0>::const_reference get() const { return m_x; }
06012 private:
06013     typename tuple_type<A0>::const_reference m_x;
06014 };
06015 
06016 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
06017 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> {
06018     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a1) {}
06019     typename tuple_type<A1>::const_reference get() const { return m_x; }
06020 private:
06021     typename tuple_type<A1>::const_reference m_x;
06022 };
06023 
06024 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
06025 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> {
06026     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a2) {}
06027     typename tuple_type<A2>::const_reference get() const { return m_x; }
06028 private:
06029     typename tuple_type<A2>::const_reference m_x;
06030 };
06031 
06032 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
06033 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> {
06034     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a3) {}
06035     typename tuple_type<A3>::const_reference get() const { return m_x; }
06036 private:
06037     typename tuple_type<A3>::const_reference m_x;
06038 };
06039 
06040 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
06041 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> {
06042     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a4) {}
06043     typename tuple_type<A4>::const_reference get() const { return m_x; }
06044 private:
06045     typename tuple_type<A4>::const_reference m_x;
06046 };
06047 
06048 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
06049 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> {
06050     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a5) {}
06051     typename tuple_type<A5>::const_reference get() const { return m_x; }
06052 private:
06053     typename tuple_type<A5>::const_reference m_x;
06054 };
06055 
06056 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
06057 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> {
06058     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a6) {}
06059     typename tuple_type<A6>::const_reference get() const { return m_x; }
06060 private:
06061     typename tuple_type<A6>::const_reference m_x;
06062 };
06063 
06064 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
06065 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> {
06066     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a7) {}
06067     typename tuple_type<A7>::const_reference get() const { return m_x; }
06068 private:
06069     typename tuple_type<A7>::const_reference m_x;
06070 };
06071 
06072 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
06073 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> {
06074     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a8) {}
06075     typename tuple_type<A8>::const_reference get() const { return m_x; }
06076 private:
06077     typename tuple_type<A8>::const_reference m_x;
06078 };
06079 
06080 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
06081 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> {
06082     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a9) {}
06083     typename tuple_type<A9>::const_reference get() const { return m_x; }
06084 private:
06085     typename tuple_type<A9>::const_reference m_x;
06086 };
06087 
06088 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
06089 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> {
06090     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a10) {}
06091     typename tuple_type<A10>::const_reference get() const { return m_x; }
06092 private:
06093     typename tuple_type<A10>::const_reference m_x;
06094 };
06095 
06096 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
06097 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> {
06098     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a11) {}
06099     typename tuple_type<A11>::const_reference get() const { return m_x; }
06100 private:
06101     typename tuple_type<A11>::const_reference m_x;
06102 };
06103 
06104 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
06105 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> {
06106     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a12) {}
06107     typename tuple_type<A12>::const_reference get() const { return m_x; }
06108 private:
06109     typename tuple_type<A12>::const_reference m_x;
06110 };
06111 
06112 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
06113 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> {
06114     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a13) {}
06115     typename tuple_type<A13>::const_reference get() const { return m_x; }
06116 private:
06117     typename tuple_type<A13>::const_reference m_x;
06118 };
06119 
06120 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
06121 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> {
06122     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a14) {}
06123     typename tuple_type<A14>::const_reference get() const { return m_x; }
06124 private:
06125     typename tuple_type<A14>::const_reference m_x;
06126 };
06127 
06128 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
06129 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> {
06130     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a15) {}
06131     typename tuple_type<A15>::const_reference get() const { return m_x; }
06132 private:
06133     typename tuple_type<A15>::const_reference m_x;
06134 };
06135 
06136 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
06137 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> {
06138     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& x) : m_x(x.a16) {}
06139     typename tuple_type<A16>::const_reference get() const { return m_x; }
06140 private:
06141     typename tuple_type<A16>::const_reference m_x;
06142 };
06143 
06144 
06145 
06146 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
06147 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> {
06148     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a0) {}
06149     typename tuple_type<A0>::const_reference get() const { return m_x; }
06150 private:
06151     typename tuple_type<A0>::const_reference m_x;
06152 };
06153 
06154 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
06155 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> {
06156     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a1) {}
06157     typename tuple_type<A1>::const_reference get() const { return m_x; }
06158 private:
06159     typename tuple_type<A1>::const_reference m_x;
06160 };
06161 
06162 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
06163 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> {
06164     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a2) {}
06165     typename tuple_type<A2>::const_reference get() const { return m_x; }
06166 private:
06167     typename tuple_type<A2>::const_reference m_x;
06168 };
06169 
06170 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
06171 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> {
06172     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a3) {}
06173     typename tuple_type<A3>::const_reference get() const { return m_x; }
06174 private:
06175     typename tuple_type<A3>::const_reference m_x;
06176 };
06177 
06178 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
06179 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> {
06180     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a4) {}
06181     typename tuple_type<A4>::const_reference get() const { return m_x; }
06182 private:
06183     typename tuple_type<A4>::const_reference m_x;
06184 };
06185 
06186 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
06187 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> {
06188     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a5) {}
06189     typename tuple_type<A5>::const_reference get() const { return m_x; }
06190 private:
06191     typename tuple_type<A5>::const_reference m_x;
06192 };
06193 
06194 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
06195 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> {
06196     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a6) {}
06197     typename tuple_type<A6>::const_reference get() const { return m_x; }
06198 private:
06199     typename tuple_type<A6>::const_reference m_x;
06200 };
06201 
06202 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
06203 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> {
06204     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a7) {}
06205     typename tuple_type<A7>::const_reference get() const { return m_x; }
06206 private:
06207     typename tuple_type<A7>::const_reference m_x;
06208 };
06209 
06210 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
06211 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> {
06212     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a8) {}
06213     typename tuple_type<A8>::const_reference get() const { return m_x; }
06214 private:
06215     typename tuple_type<A8>::const_reference m_x;
06216 };
06217 
06218 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
06219 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> {
06220     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a9) {}
06221     typename tuple_type<A9>::const_reference get() const { return m_x; }
06222 private:
06223     typename tuple_type<A9>::const_reference m_x;
06224 };
06225 
06226 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
06227 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> {
06228     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a10) {}
06229     typename tuple_type<A10>::const_reference get() const { return m_x; }
06230 private:
06231     typename tuple_type<A10>::const_reference m_x;
06232 };
06233 
06234 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
06235 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> {
06236     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a11) {}
06237     typename tuple_type<A11>::const_reference get() const { return m_x; }
06238 private:
06239     typename tuple_type<A11>::const_reference m_x;
06240 };
06241 
06242 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
06243 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> {
06244     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a12) {}
06245     typename tuple_type<A12>::const_reference get() const { return m_x; }
06246 private:
06247     typename tuple_type<A12>::const_reference m_x;
06248 };
06249 
06250 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
06251 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> {
06252     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a13) {}
06253     typename tuple_type<A13>::const_reference get() const { return m_x; }
06254 private:
06255     typename tuple_type<A13>::const_reference m_x;
06256 };
06257 
06258 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
06259 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> {
06260     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a14) {}
06261     typename tuple_type<A14>::const_reference get() const { return m_x; }
06262 private:
06263     typename tuple_type<A14>::const_reference m_x;
06264 };
06265 
06266 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
06267 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> {
06268     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a15) {}
06269     typename tuple_type<A15>::const_reference get() const { return m_x; }
06270 private:
06271     typename tuple_type<A15>::const_reference m_x;
06272 };
06273 
06274 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
06275 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> {
06276     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a16) {}
06277     typename tuple_type<A16>::const_reference get() const { return m_x; }
06278 private:
06279     typename tuple_type<A16>::const_reference m_x;
06280 };
06281 
06282 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
06283 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> {
06284     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& x) : m_x(x.a17) {}
06285     typename tuple_type<A17>::const_reference get() const { return m_x; }
06286 private:
06287     typename tuple_type<A17>::const_reference m_x;
06288 };
06289 
06290 
06291 
06292 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
06293 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> {
06294     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a0) {}
06295     typename tuple_type<A0>::const_reference get() const { return m_x; }
06296 private:
06297     typename tuple_type<A0>::const_reference m_x;
06298 };
06299 
06300 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
06301 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> {
06302     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a1) {}
06303     typename tuple_type<A1>::const_reference get() const { return m_x; }
06304 private:
06305     typename tuple_type<A1>::const_reference m_x;
06306 };
06307 
06308 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
06309 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> {
06310     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a2) {}
06311     typename tuple_type<A2>::const_reference get() const { return m_x; }
06312 private:
06313     typename tuple_type<A2>::const_reference m_x;
06314 };
06315 
06316 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
06317 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> {
06318     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a3) {}
06319     typename tuple_type<A3>::const_reference get() const { return m_x; }
06320 private:
06321     typename tuple_type<A3>::const_reference m_x;
06322 };
06323 
06324 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
06325 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> {
06326     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a4) {}
06327     typename tuple_type<A4>::const_reference get() const { return m_x; }
06328 private:
06329     typename tuple_type<A4>::const_reference m_x;
06330 };
06331 
06332 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
06333 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> {
06334     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a5) {}
06335     typename tuple_type<A5>::const_reference get() const { return m_x; }
06336 private:
06337     typename tuple_type<A5>::const_reference m_x;
06338 };
06339 
06340 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
06341 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> {
06342     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a6) {}
06343     typename tuple_type<A6>::const_reference get() const { return m_x; }
06344 private:
06345     typename tuple_type<A6>::const_reference m_x;
06346 };
06347 
06348 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
06349 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> {
06350     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a7) {}
06351     typename tuple_type<A7>::const_reference get() const { return m_x; }
06352 private:
06353     typename tuple_type<A7>::const_reference m_x;
06354 };
06355 
06356 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
06357 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> {
06358     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a8) {}
06359     typename tuple_type<A8>::const_reference get() const { return m_x; }
06360 private:
06361     typename tuple_type<A8>::const_reference m_x;
06362 };
06363 
06364 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
06365 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> {
06366     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a9) {}
06367     typename tuple_type<A9>::const_reference get() const { return m_x; }
06368 private:
06369     typename tuple_type<A9>::const_reference m_x;
06370 };
06371 
06372 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
06373 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> {
06374     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a10) {}
06375     typename tuple_type<A10>::const_reference get() const { return m_x; }
06376 private:
06377     typename tuple_type<A10>::const_reference m_x;
06378 };
06379 
06380 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
06381 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> {
06382     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a11) {}
06383     typename tuple_type<A11>::const_reference get() const { return m_x; }
06384 private:
06385     typename tuple_type<A11>::const_reference m_x;
06386 };
06387 
06388 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
06389 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> {
06390     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a12) {}
06391     typename tuple_type<A12>::const_reference get() const { return m_x; }
06392 private:
06393     typename tuple_type<A12>::const_reference m_x;
06394 };
06395 
06396 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
06397 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> {
06398     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a13) {}
06399     typename tuple_type<A13>::const_reference get() const { return m_x; }
06400 private:
06401     typename tuple_type<A13>::const_reference m_x;
06402 };
06403 
06404 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
06405 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> {
06406     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a14) {}
06407     typename tuple_type<A14>::const_reference get() const { return m_x; }
06408 private:
06409     typename tuple_type<A14>::const_reference m_x;
06410 };
06411 
06412 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
06413 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> {
06414     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a15) {}
06415     typename tuple_type<A15>::const_reference get() const { return m_x; }
06416 private:
06417     typename tuple_type<A15>::const_reference m_x;
06418 };
06419 
06420 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
06421 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> {
06422     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a16) {}
06423     typename tuple_type<A16>::const_reference get() const { return m_x; }
06424 private:
06425     typename tuple_type<A16>::const_reference m_x;
06426 };
06427 
06428 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
06429 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> {
06430     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a17) {}
06431     typename tuple_type<A17>::const_reference get() const { return m_x; }
06432 private:
06433     typename tuple_type<A17>::const_reference m_x;
06434 };
06435 
06436 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
06437 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> {
06438     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& x) : m_x(x.a18) {}
06439     typename tuple_type<A18>::const_reference get() const { return m_x; }
06440 private:
06441     typename tuple_type<A18>::const_reference m_x;
06442 };
06443 
06444 
06445 
06446 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
06447 struct 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> {
06448     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a0) {}
06449     typename tuple_type<A0>::const_reference get() const { return m_x; }
06450 private:
06451     typename tuple_type<A0>::const_reference m_x;
06452 };
06453 
06454 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
06455 struct 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> {
06456     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a1) {}
06457     typename tuple_type<A1>::const_reference get() const { return m_x; }
06458 private:
06459     typename tuple_type<A1>::const_reference m_x;
06460 };
06461 
06462 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
06463 struct 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> {
06464     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a2) {}
06465     typename tuple_type<A2>::const_reference get() const { return m_x; }
06466 private:
06467     typename tuple_type<A2>::const_reference m_x;
06468 };
06469 
06470 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
06471 struct 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> {
06472     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a3) {}
06473     typename tuple_type<A3>::const_reference get() const { return m_x; }
06474 private:
06475     typename tuple_type<A3>::const_reference m_x;
06476 };
06477 
06478 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
06479 struct 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> {
06480     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a4) {}
06481     typename tuple_type<A4>::const_reference get() const { return m_x; }
06482 private:
06483     typename tuple_type<A4>::const_reference m_x;
06484 };
06485 
06486 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
06487 struct 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> {
06488     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a5) {}
06489     typename tuple_type<A5>::const_reference get() const { return m_x; }
06490 private:
06491     typename tuple_type<A5>::const_reference m_x;
06492 };
06493 
06494 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
06495 struct 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> {
06496     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a6) {}
06497     typename tuple_type<A6>::const_reference get() const { return m_x; }
06498 private:
06499     typename tuple_type<A6>::const_reference m_x;
06500 };
06501 
06502 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
06503 struct 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> {
06504     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a7) {}
06505     typename tuple_type<A7>::const_reference get() const { return m_x; }
06506 private:
06507     typename tuple_type<A7>::const_reference m_x;
06508 };
06509 
06510 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
06511 struct 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> {
06512     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a8) {}
06513     typename tuple_type<A8>::const_reference get() const { return m_x; }
06514 private:
06515     typename tuple_type<A8>::const_reference m_x;
06516 };
06517 
06518 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
06519 struct 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> {
06520     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a9) {}
06521     typename tuple_type<A9>::const_reference get() const { return m_x; }
06522 private:
06523     typename tuple_type<A9>::const_reference m_x;
06524 };
06525 
06526 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
06527 struct 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> {
06528     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a10) {}
06529     typename tuple_type<A10>::const_reference get() const { return m_x; }
06530 private:
06531     typename tuple_type<A10>::const_reference m_x;
06532 };
06533 
06534 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
06535 struct 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> {
06536     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a11) {}
06537     typename tuple_type<A11>::const_reference get() const { return m_x; }
06538 private:
06539     typename tuple_type<A11>::const_reference m_x;
06540 };
06541 
06542 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
06543 struct 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> {
06544     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a12) {}
06545     typename tuple_type<A12>::const_reference get() const { return m_x; }
06546 private:
06547     typename tuple_type<A12>::const_reference m_x;
06548 };
06549 
06550 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
06551 struct 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> {
06552     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a13) {}
06553     typename tuple_type<A13>::const_reference get() const { return m_x; }
06554 private:
06555     typename tuple_type<A13>::const_reference m_x;
06556 };
06557 
06558 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
06559 struct 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> {
06560     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a14) {}
06561     typename tuple_type<A14>::const_reference get() const { return m_x; }
06562 private:
06563     typename tuple_type<A14>::const_reference m_x;
06564 };
06565 
06566 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
06567 struct 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> {
06568     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a15) {}
06569     typename tuple_type<A15>::const_reference get() const { return m_x; }
06570 private:
06571     typename tuple_type<A15>::const_reference m_x;
06572 };
06573 
06574 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
06575 struct 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> {
06576     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a16) {}
06577     typename tuple_type<A16>::const_reference get() const { return m_x; }
06578 private:
06579     typename tuple_type<A16>::const_reference m_x;
06580 };
06581 
06582 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
06583 struct 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> {
06584     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a17) {}
06585     typename tuple_type<A17>::const_reference get() const { return m_x; }
06586 private:
06587     typename tuple_type<A17>::const_reference m_x;
06588 };
06589 
06590 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
06591 struct 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> {
06592     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a18) {}
06593     typename tuple_type<A18>::const_reference get() const { return m_x; }
06594 private:
06595     typename tuple_type<A18>::const_reference m_x;
06596 };
06597 
06598 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
06599 struct 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> {
06600     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& x) : m_x(x.a19) {}
06601     typename tuple_type<A19>::const_reference get() const { return m_x; }
06602 private:
06603     typename tuple_type<A19>::const_reference m_x;
06604 };
06605 
06606 
06607 
06608 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
06609 struct const_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> {
06610     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a0) {}
06611     typename tuple_type<A0>::const_reference get() const { return m_x; }
06612 private:
06613     typename tuple_type<A0>::const_reference m_x;
06614 };
06615 
06616 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
06617 struct const_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> {
06618     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a1) {}
06619     typename tuple_type<A1>::const_reference get() const { return m_x; }
06620 private:
06621     typename tuple_type<A1>::const_reference m_x;
06622 };
06623 
06624 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
06625 struct const_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> {
06626     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a2) {}
06627     typename tuple_type<A2>::const_reference get() const { return m_x; }
06628 private:
06629     typename tuple_type<A2>::const_reference m_x;
06630 };
06631 
06632 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
06633 struct const_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> {
06634     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a3) {}
06635     typename tuple_type<A3>::const_reference get() const { return m_x; }
06636 private:
06637     typename tuple_type<A3>::const_reference m_x;
06638 };
06639 
06640 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
06641 struct const_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> {
06642     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a4) {}
06643     typename tuple_type<A4>::const_reference get() const { return m_x; }
06644 private:
06645     typename tuple_type<A4>::const_reference m_x;
06646 };
06647 
06648 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
06649 struct const_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> {
06650     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a5) {}
06651     typename tuple_type<A5>::const_reference get() const { return m_x; }
06652 private:
06653     typename tuple_type<A5>::const_reference m_x;
06654 };
06655 
06656 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
06657 struct const_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> {
06658     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a6) {}
06659     typename tuple_type<A6>::const_reference get() const { return m_x; }
06660 private:
06661     typename tuple_type<A6>::const_reference m_x;
06662 };
06663 
06664 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
06665 struct const_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> {
06666     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a7) {}
06667     typename tuple_type<A7>::const_reference get() const { return m_x; }
06668 private:
06669     typename tuple_type<A7>::const_reference m_x;
06670 };
06671 
06672 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
06673 struct const_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> {
06674     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a8) {}
06675     typename tuple_type<A8>::const_reference get() const { return m_x; }
06676 private:
06677     typename tuple_type<A8>::const_reference m_x;
06678 };
06679 
06680 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
06681 struct const_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> {
06682     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a9) {}
06683     typename tuple_type<A9>::const_reference get() const { return m_x; }
06684 private:
06685     typename tuple_type<A9>::const_reference m_x;
06686 };
06687 
06688 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
06689 struct const_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> {
06690     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a10) {}
06691     typename tuple_type<A10>::const_reference get() const { return m_x; }
06692 private:
06693     typename tuple_type<A10>::const_reference m_x;
06694 };
06695 
06696 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
06697 struct const_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> {
06698     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a11) {}
06699     typename tuple_type<A11>::const_reference get() const { return m_x; }
06700 private:
06701     typename tuple_type<A11>::const_reference m_x;
06702 };
06703 
06704 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
06705 struct const_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> {
06706     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a12) {}
06707     typename tuple_type<A12>::const_reference get() const { return m_x; }
06708 private:
06709     typename tuple_type<A12>::const_reference m_x;
06710 };
06711 
06712 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
06713 struct const_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> {
06714     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a13) {}
06715     typename tuple_type<A13>::const_reference get() const { return m_x; }
06716 private:
06717     typename tuple_type<A13>::const_reference m_x;
06718 };
06719 
06720 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
06721 struct const_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> {
06722     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a14) {}
06723     typename tuple_type<A14>::const_reference get() const { return m_x; }
06724 private:
06725     typename tuple_type<A14>::const_reference m_x;
06726 };
06727 
06728 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
06729 struct const_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> {
06730     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a15) {}
06731     typename tuple_type<A15>::const_reference get() const { return m_x; }
06732 private:
06733     typename tuple_type<A15>::const_reference m_x;
06734 };
06735 
06736 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
06737 struct const_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> {
06738     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a16) {}
06739     typename tuple_type<A16>::const_reference get() const { return m_x; }
06740 private:
06741     typename tuple_type<A16>::const_reference m_x;
06742 };
06743 
06744 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
06745 struct const_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> {
06746     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a17) {}
06747     typename tuple_type<A17>::const_reference get() const { return m_x; }
06748 private:
06749     typename tuple_type<A17>::const_reference m_x;
06750 };
06751 
06752 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
06753 struct const_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> {
06754     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a18) {}
06755     typename tuple_type<A18>::const_reference get() const { return m_x; }
06756 private:
06757     typename tuple_type<A18>::const_reference m_x;
06758 };
06759 
06760 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
06761 struct const_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> {
06762     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a19) {}
06763     typename tuple_type<A19>::const_reference get() const { return m_x; }
06764 private:
06765     typename tuple_type<A19>::const_reference m_x;
06766 };
06767 
06768 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
06769 struct const_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> {
06770     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& x) : m_x(x.a20) {}
06771     typename tuple_type<A20>::const_reference get() const { return m_x; }
06772 private:
06773     typename tuple_type<A20>::const_reference m_x;
06774 };
06775 
06776 
06777 
06778 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
06779 struct const_tuple_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> {
06780     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a0) {}
06781     typename tuple_type<A0>::const_reference get() const { return m_x; }
06782 private:
06783     typename tuple_type<A0>::const_reference m_x;
06784 };
06785 
06786 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
06787 struct const_tuple_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> {
06788     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a1) {}
06789     typename tuple_type<A1>::const_reference get() const { return m_x; }
06790 private:
06791     typename tuple_type<A1>::const_reference m_x;
06792 };
06793 
06794 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
06795 struct const_tuple_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> {
06796     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a2) {}
06797     typename tuple_type<A2>::const_reference get() const { return m_x; }
06798 private:
06799     typename tuple_type<A2>::const_reference m_x;
06800 };
06801 
06802 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
06803 struct const_tuple_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> {
06804     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a3) {}
06805     typename tuple_type<A3>::const_reference get() const { return m_x; }
06806 private:
06807     typename tuple_type<A3>::const_reference m_x;
06808 };
06809 
06810 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
06811 struct const_tuple_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> {
06812     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a4) {}
06813     typename tuple_type<A4>::const_reference get() const { return m_x; }
06814 private:
06815     typename tuple_type<A4>::const_reference m_x;
06816 };
06817 
06818 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
06819 struct const_tuple_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> {
06820     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a5) {}
06821     typename tuple_type<A5>::const_reference get() const { return m_x; }
06822 private:
06823     typename tuple_type<A5>::const_reference m_x;
06824 };
06825 
06826 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
06827 struct const_tuple_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> {
06828     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a6) {}
06829     typename tuple_type<A6>::const_reference get() const { return m_x; }
06830 private:
06831     typename tuple_type<A6>::const_reference m_x;
06832 };
06833 
06834 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
06835 struct const_tuple_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> {
06836     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a7) {}
06837     typename tuple_type<A7>::const_reference get() const { return m_x; }
06838 private:
06839     typename tuple_type<A7>::const_reference m_x;
06840 };
06841 
06842 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
06843 struct const_tuple_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> {
06844     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a8) {}
06845     typename tuple_type<A8>::const_reference get() const { return m_x; }
06846 private:
06847     typename tuple_type<A8>::const_reference m_x;
06848 };
06849 
06850 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
06851 struct const_tuple_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> {
06852     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a9) {}
06853     typename tuple_type<A9>::const_reference get() const { return m_x; }
06854 private:
06855     typename tuple_type<A9>::const_reference m_x;
06856 };
06857 
06858 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
06859 struct const_tuple_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> {
06860     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a10) {}
06861     typename tuple_type<A10>::const_reference get() const { return m_x; }
06862 private:
06863     typename tuple_type<A10>::const_reference m_x;
06864 };
06865 
06866 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
06867 struct const_tuple_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> {
06868     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a11) {}
06869     typename tuple_type<A11>::const_reference get() const { return m_x; }
06870 private:
06871     typename tuple_type<A11>::const_reference m_x;
06872 };
06873 
06874 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
06875 struct const_tuple_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> {
06876     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a12) {}
06877     typename tuple_type<A12>::const_reference get() const { return m_x; }
06878 private:
06879     typename tuple_type<A12>::const_reference m_x;
06880 };
06881 
06882 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
06883 struct const_tuple_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> {
06884     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a13) {}
06885     typename tuple_type<A13>::const_reference get() const { return m_x; }
06886 private:
06887     typename tuple_type<A13>::const_reference m_x;
06888 };
06889 
06890 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
06891 struct const_tuple_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> {
06892     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a14) {}
06893     typename tuple_type<A14>::const_reference get() const { return m_x; }
06894 private:
06895     typename tuple_type<A14>::const_reference m_x;
06896 };
06897 
06898 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
06899 struct const_tuple_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> {
06900     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a15) {}
06901     typename tuple_type<A15>::const_reference get() const { return m_x; }
06902 private:
06903     typename tuple_type<A15>::const_reference m_x;
06904 };
06905 
06906 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
06907 struct const_tuple_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> {
06908     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a16) {}
06909     typename tuple_type<A16>::const_reference get() const { return m_x; }
06910 private:
06911     typename tuple_type<A16>::const_reference m_x;
06912 };
06913 
06914 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
06915 struct const_tuple_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> {
06916     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a17) {}
06917     typename tuple_type<A17>::const_reference get() const { return m_x; }
06918 private:
06919     typename tuple_type<A17>::const_reference m_x;
06920 };
06921 
06922 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
06923 struct const_tuple_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> {
06924     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a18) {}
06925     typename tuple_type<A18>::const_reference get() const { return m_x; }
06926 private:
06927     typename tuple_type<A18>::const_reference m_x;
06928 };
06929 
06930 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
06931 struct const_tuple_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> {
06932     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a19) {}
06933     typename tuple_type<A19>::const_reference get() const { return m_x; }
06934 private:
06935     typename tuple_type<A19>::const_reference m_x;
06936 };
06937 
06938 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
06939 struct const_tuple_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> {
06940     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a20) {}
06941     typename tuple_type<A20>::const_reference get() const { return m_x; }
06942 private:
06943     typename tuple_type<A20>::const_reference m_x;
06944 };
06945 
06946 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
06947 struct const_tuple_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> {
06948     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& x) : m_x(x.a21) {}
06949     typename tuple_type<A21>::const_reference get() const { return m_x; }
06950 private:
06951     typename tuple_type<A21>::const_reference m_x;
06952 };
06953 
06954 
06955 
06956 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
06957 struct const_tuple_element<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> {
06958     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a0) {}
06959     typename tuple_type<A0>::const_reference get() const { return m_x; }
06960 private:
06961     typename tuple_type<A0>::const_reference m_x;
06962 };
06963 
06964 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
06965 struct const_tuple_element<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> {
06966     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a1) {}
06967     typename tuple_type<A1>::const_reference get() const { return m_x; }
06968 private:
06969     typename tuple_type<A1>::const_reference m_x;
06970 };
06971 
06972 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
06973 struct const_tuple_element<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> {
06974     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a2) {}
06975     typename tuple_type<A2>::const_reference get() const { return m_x; }
06976 private:
06977     typename tuple_type<A2>::const_reference m_x;
06978 };
06979 
06980 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
06981 struct const_tuple_element<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> {
06982     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a3) {}
06983     typename tuple_type<A3>::const_reference get() const { return m_x; }
06984 private:
06985     typename tuple_type<A3>::const_reference m_x;
06986 };
06987 
06988 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
06989 struct const_tuple_element<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> {
06990     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a4) {}
06991     typename tuple_type<A4>::const_reference get() const { return m_x; }
06992 private:
06993     typename tuple_type<A4>::const_reference m_x;
06994 };
06995 
06996 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
06997 struct const_tuple_element<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> {
06998     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a5) {}
06999     typename tuple_type<A5>::const_reference get() const { return m_x; }
07000 private:
07001     typename tuple_type<A5>::const_reference m_x;
07002 };
07003 
07004 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
07005 struct const_tuple_element<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> {
07006     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a6) {}
07007     typename tuple_type<A6>::const_reference get() const { return m_x; }
07008 private:
07009     typename tuple_type<A6>::const_reference m_x;
07010 };
07011 
07012 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
07013 struct const_tuple_element<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> {
07014     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a7) {}
07015     typename tuple_type<A7>::const_reference get() const { return m_x; }
07016 private:
07017     typename tuple_type<A7>::const_reference m_x;
07018 };
07019 
07020 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
07021 struct const_tuple_element<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> {
07022     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a8) {}
07023     typename tuple_type<A8>::const_reference get() const { return m_x; }
07024 private:
07025     typename tuple_type<A8>::const_reference m_x;
07026 };
07027 
07028 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
07029 struct const_tuple_element<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> {
07030     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a9) {}
07031     typename tuple_type<A9>::const_reference get() const { return m_x; }
07032 private:
07033     typename tuple_type<A9>::const_reference m_x;
07034 };
07035 
07036 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
07037 struct const_tuple_element<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> {
07038     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a10) {}
07039     typename tuple_type<A10>::const_reference get() const { return m_x; }
07040 private:
07041     typename tuple_type<A10>::const_reference m_x;
07042 };
07043 
07044 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
07045 struct const_tuple_element<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> {
07046     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a11) {}
07047     typename tuple_type<A11>::const_reference get() const { return m_x; }
07048 private:
07049     typename tuple_type<A11>::const_reference m_x;
07050 };
07051 
07052 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
07053 struct const_tuple_element<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> {
07054     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a12) {}
07055     typename tuple_type<A12>::const_reference get() const { return m_x; }
07056 private:
07057     typename tuple_type<A12>::const_reference m_x;
07058 };
07059 
07060 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
07061 struct const_tuple_element<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> {
07062     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a13) {}
07063     typename tuple_type<A13>::const_reference get() const { return m_x; }
07064 private:
07065     typename tuple_type<A13>::const_reference m_x;
07066 };
07067 
07068 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
07069 struct const_tuple_element<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> {
07070     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a14) {}
07071     typename tuple_type<A14>::const_reference get() const { return m_x; }
07072 private:
07073     typename tuple_type<A14>::const_reference m_x;
07074 };
07075 
07076 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
07077 struct const_tuple_element<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> {
07078     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a15) {}
07079     typename tuple_type<A15>::const_reference get() const { return m_x; }
07080 private:
07081     typename tuple_type<A15>::const_reference m_x;
07082 };
07083 
07084 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
07085 struct const_tuple_element<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> {
07086     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a16) {}
07087     typename tuple_type<A16>::const_reference get() const { return m_x; }
07088 private:
07089     typename tuple_type<A16>::const_reference m_x;
07090 };
07091 
07092 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
07093 struct const_tuple_element<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> {
07094     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a17) {}
07095     typename tuple_type<A17>::const_reference get() const { return m_x; }
07096 private:
07097     typename tuple_type<A17>::const_reference m_x;
07098 };
07099 
07100 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
07101 struct const_tuple_element<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> {
07102     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a18) {}
07103     typename tuple_type<A18>::const_reference get() const { return m_x; }
07104 private:
07105     typename tuple_type<A18>::const_reference m_x;
07106 };
07107 
07108 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
07109 struct const_tuple_element<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> {
07110     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a19) {}
07111     typename tuple_type<A19>::const_reference get() const { return m_x; }
07112 private:
07113     typename tuple_type<A19>::const_reference m_x;
07114 };
07115 
07116 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
07117 struct const_tuple_element<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> {
07118     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a20) {}
07119     typename tuple_type<A20>::const_reference get() const { return m_x; }
07120 private:
07121     typename tuple_type<A20>::const_reference m_x;
07122 };
07123 
07124 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
07125 struct const_tuple_element<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> {
07126     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a21) {}
07127     typename tuple_type<A21>::const_reference get() const { return m_x; }
07128 private:
07129     typename tuple_type<A21>::const_reference m_x;
07130 };
07131 
07132 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
07133 struct const_tuple_element<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> {
07134     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>& x) : m_x(x.a22) {}
07135     typename tuple_type<A22>::const_reference get() const { return m_x; }
07136 private:
07137     typename tuple_type<A22>::const_reference m_x;
07138 };
07139 
07140 
07141 
07142 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07143 struct const_tuple_element<tuple<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> {
07144     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a0) {}
07145     typename tuple_type<A0>::const_reference get() const { return m_x; }
07146 private:
07147     typename tuple_type<A0>::const_reference m_x;
07148 };
07149 
07150 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07151 struct const_tuple_element<tuple<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> {
07152     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a1) {}
07153     typename tuple_type<A1>::const_reference get() const { return m_x; }
07154 private:
07155     typename tuple_type<A1>::const_reference m_x;
07156 };
07157 
07158 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07159 struct const_tuple_element<tuple<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> {
07160     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a2) {}
07161     typename tuple_type<A2>::const_reference get() const { return m_x; }
07162 private:
07163     typename tuple_type<A2>::const_reference m_x;
07164 };
07165 
07166 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07167 struct const_tuple_element<tuple<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> {
07168     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a3) {}
07169     typename tuple_type<A3>::const_reference get() const { return m_x; }
07170 private:
07171     typename tuple_type<A3>::const_reference m_x;
07172 };
07173 
07174 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07175 struct const_tuple_element<tuple<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> {
07176     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a4) {}
07177     typename tuple_type<A4>::const_reference get() const { return m_x; }
07178 private:
07179     typename tuple_type<A4>::const_reference m_x;
07180 };
07181 
07182 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07183 struct const_tuple_element<tuple<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> {
07184     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a5) {}
07185     typename tuple_type<A5>::const_reference get() const { return m_x; }
07186 private:
07187     typename tuple_type<A5>::const_reference m_x;
07188 };
07189 
07190 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07191 struct const_tuple_element<tuple<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> {
07192     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a6) {}
07193     typename tuple_type<A6>::const_reference get() const { return m_x; }
07194 private:
07195     typename tuple_type<A6>::const_reference m_x;
07196 };
07197 
07198 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07199 struct const_tuple_element<tuple<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> {
07200     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a7) {}
07201     typename tuple_type<A7>::const_reference get() const { return m_x; }
07202 private:
07203     typename tuple_type<A7>::const_reference m_x;
07204 };
07205 
07206 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07207 struct const_tuple_element<tuple<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> {
07208     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a8) {}
07209     typename tuple_type<A8>::const_reference get() const { return m_x; }
07210 private:
07211     typename tuple_type<A8>::const_reference m_x;
07212 };
07213 
07214 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07215 struct const_tuple_element<tuple<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> {
07216     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a9) {}
07217     typename tuple_type<A9>::const_reference get() const { return m_x; }
07218 private:
07219     typename tuple_type<A9>::const_reference m_x;
07220 };
07221 
07222 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07223 struct const_tuple_element<tuple<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> {
07224     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a10) {}
07225     typename tuple_type<A10>::const_reference get() const { return m_x; }
07226 private:
07227     typename tuple_type<A10>::const_reference m_x;
07228 };
07229 
07230 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07231 struct const_tuple_element<tuple<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> {
07232     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a11) {}
07233     typename tuple_type<A11>::const_reference get() const { return m_x; }
07234 private:
07235     typename tuple_type<A11>::const_reference m_x;
07236 };
07237 
07238 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07239 struct const_tuple_element<tuple<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> {
07240     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a12) {}
07241     typename tuple_type<A12>::const_reference get() const { return m_x; }
07242 private:
07243     typename tuple_type<A12>::const_reference m_x;
07244 };
07245 
07246 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07247 struct const_tuple_element<tuple<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> {
07248     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a13) {}
07249     typename tuple_type<A13>::const_reference get() const { return m_x; }
07250 private:
07251     typename tuple_type<A13>::const_reference m_x;
07252 };
07253 
07254 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07255 struct const_tuple_element<tuple<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> {
07256     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a14) {}
07257     typename tuple_type<A14>::const_reference get() const { return m_x; }
07258 private:
07259     typename tuple_type<A14>::const_reference m_x;
07260 };
07261 
07262 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07263 struct const_tuple_element<tuple<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> {
07264     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a15) {}
07265     typename tuple_type<A15>::const_reference get() const { return m_x; }
07266 private:
07267     typename tuple_type<A15>::const_reference m_x;
07268 };
07269 
07270 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07271 struct const_tuple_element<tuple<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> {
07272     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a16) {}
07273     typename tuple_type<A16>::const_reference get() const { return m_x; }
07274 private:
07275     typename tuple_type<A16>::const_reference m_x;
07276 };
07277 
07278 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07279 struct const_tuple_element<tuple<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> {
07280     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a17) {}
07281     typename tuple_type<A17>::const_reference get() const { return m_x; }
07282 private:
07283     typename tuple_type<A17>::const_reference m_x;
07284 };
07285 
07286 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07287 struct const_tuple_element<tuple<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> {
07288     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a18) {}
07289     typename tuple_type<A18>::const_reference get() const { return m_x; }
07290 private:
07291     typename tuple_type<A18>::const_reference m_x;
07292 };
07293 
07294 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07295 struct const_tuple_element<tuple<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> {
07296     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a19) {}
07297     typename tuple_type<A19>::const_reference get() const { return m_x; }
07298 private:
07299     typename tuple_type<A19>::const_reference m_x;
07300 };
07301 
07302 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07303 struct const_tuple_element<tuple<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> {
07304     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a20) {}
07305     typename tuple_type<A20>::const_reference get() const { return m_x; }
07306 private:
07307     typename tuple_type<A20>::const_reference m_x;
07308 };
07309 
07310 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07311 struct const_tuple_element<tuple<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> {
07312     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a21) {}
07313     typename tuple_type<A21>::const_reference get() const { return m_x; }
07314 private:
07315     typename tuple_type<A21>::const_reference m_x;
07316 };
07317 
07318 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07319 struct const_tuple_element<tuple<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> {
07320     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a22) {}
07321     typename tuple_type<A22>::const_reference get() const { return m_x; }
07322 private:
07323     typename tuple_type<A22>::const_reference m_x;
07324 };
07325 
07326 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
07327 struct const_tuple_element<tuple<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> {
07328     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>& x) : m_x(x.a23) {}
07329     typename tuple_type<A23>::const_reference get() const { return m_x; }
07330 private:
07331     typename tuple_type<A23>::const_reference m_x;
07332 };
07333 
07334 
07335 
07336 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07337 struct const_tuple_element<tuple<A0, 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> {
07338     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a0) {}
07339     typename tuple_type<A0>::const_reference get() const { return m_x; }
07340 private:
07341     typename tuple_type<A0>::const_reference m_x;
07342 };
07343 
07344 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07345 struct const_tuple_element<tuple<A0, 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> {
07346     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a1) {}
07347     typename tuple_type<A1>::const_reference get() const { return m_x; }
07348 private:
07349     typename tuple_type<A1>::const_reference m_x;
07350 };
07351 
07352 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07353 struct const_tuple_element<tuple<A0, 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> {
07354     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a2) {}
07355     typename tuple_type<A2>::const_reference get() const { return m_x; }
07356 private:
07357     typename tuple_type<A2>::const_reference m_x;
07358 };
07359 
07360 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07361 struct const_tuple_element<tuple<A0, 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> {
07362     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a3) {}
07363     typename tuple_type<A3>::const_reference get() const { return m_x; }
07364 private:
07365     typename tuple_type<A3>::const_reference m_x;
07366 };
07367 
07368 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07369 struct const_tuple_element<tuple<A0, 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> {
07370     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a4) {}
07371     typename tuple_type<A4>::const_reference get() const { return m_x; }
07372 private:
07373     typename tuple_type<A4>::const_reference m_x;
07374 };
07375 
07376 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07377 struct const_tuple_element<tuple<A0, 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> {
07378     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a5) {}
07379     typename tuple_type<A5>::const_reference get() const { return m_x; }
07380 private:
07381     typename tuple_type<A5>::const_reference m_x;
07382 };
07383 
07384 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07385 struct const_tuple_element<tuple<A0, 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> {
07386     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a6) {}
07387     typename tuple_type<A6>::const_reference get() const { return m_x; }
07388 private:
07389     typename tuple_type<A6>::const_reference m_x;
07390 };
07391 
07392 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07393 struct const_tuple_element<tuple<A0, 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> {
07394     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a7) {}
07395     typename tuple_type<A7>::const_reference get() const { return m_x; }
07396 private:
07397     typename tuple_type<A7>::const_reference m_x;
07398 };
07399 
07400 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07401 struct const_tuple_element<tuple<A0, 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> {
07402     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a8) {}
07403     typename tuple_type<A8>::const_reference get() const { return m_x; }
07404 private:
07405     typename tuple_type<A8>::const_reference m_x;
07406 };
07407 
07408 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07409 struct const_tuple_element<tuple<A0, 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> {
07410     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a9) {}
07411     typename tuple_type<A9>::const_reference get() const { return m_x; }
07412 private:
07413     typename tuple_type<A9>::const_reference m_x;
07414 };
07415 
07416 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07417 struct const_tuple_element<tuple<A0, 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> {
07418     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a10) {}
07419     typename tuple_type<A10>::const_reference get() const { return m_x; }
07420 private:
07421     typename tuple_type<A10>::const_reference m_x;
07422 };
07423 
07424 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07425 struct const_tuple_element<tuple<A0, 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> {
07426     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a11) {}
07427     typename tuple_type<A11>::const_reference get() const { return m_x; }
07428 private:
07429     typename tuple_type<A11>::const_reference m_x;
07430 };
07431 
07432 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07433 struct const_tuple_element<tuple<A0, 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> {
07434     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a12) {}
07435     typename tuple_type<A12>::const_reference get() const { return m_x; }
07436 private:
07437     typename tuple_type<A12>::const_reference m_x;
07438 };
07439 
07440 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07441 struct const_tuple_element<tuple<A0, 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> {
07442     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a13) {}
07443     typename tuple_type<A13>::const_reference get() const { return m_x; }
07444 private:
07445     typename tuple_type<A13>::const_reference m_x;
07446 };
07447 
07448 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07449 struct const_tuple_element<tuple<A0, 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> {
07450     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a14) {}
07451     typename tuple_type<A14>::const_reference get() const { return m_x; }
07452 private:
07453     typename tuple_type<A14>::const_reference m_x;
07454 };
07455 
07456 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07457 struct const_tuple_element<tuple<A0, 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> {
07458     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a15) {}
07459     typename tuple_type<A15>::const_reference get() const { return m_x; }
07460 private:
07461     typename tuple_type<A15>::const_reference m_x;
07462 };
07463 
07464 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07465 struct const_tuple_element<tuple<A0, 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> {
07466     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a16) {}
07467     typename tuple_type<A16>::const_reference get() const { return m_x; }
07468 private:
07469     typename tuple_type<A16>::const_reference m_x;
07470 };
07471 
07472 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07473 struct const_tuple_element<tuple<A0, 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> {
07474     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a17) {}
07475     typename tuple_type<A17>::const_reference get() const { return m_x; }
07476 private:
07477     typename tuple_type<A17>::const_reference m_x;
07478 };
07479 
07480 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07481 struct const_tuple_element<tuple<A0, 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> {
07482     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a18) {}
07483     typename tuple_type<A18>::const_reference get() const { return m_x; }
07484 private:
07485     typename tuple_type<A18>::const_reference m_x;
07486 };
07487 
07488 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07489 struct const_tuple_element<tuple<A0, 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> {
07490     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a19) {}
07491     typename tuple_type<A19>::const_reference get() const { return m_x; }
07492 private:
07493     typename tuple_type<A19>::const_reference m_x;
07494 };
07495 
07496 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07497 struct const_tuple_element<tuple<A0, 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> {
07498     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a20) {}
07499     typename tuple_type<A20>::const_reference get() const { return m_x; }
07500 private:
07501     typename tuple_type<A20>::const_reference m_x;
07502 };
07503 
07504 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07505 struct const_tuple_element<tuple<A0, 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> {
07506     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a21) {}
07507     typename tuple_type<A21>::const_reference get() const { return m_x; }
07508 private:
07509     typename tuple_type<A21>::const_reference m_x;
07510 };
07511 
07512 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07513 struct const_tuple_element<tuple<A0, 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> {
07514     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a22) {}
07515     typename tuple_type<A22>::const_reference get() const { return m_x; }
07516 private:
07517     typename tuple_type<A22>::const_reference m_x;
07518 };
07519 
07520 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07521 struct const_tuple_element<tuple<A0, 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> {
07522     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a23) {}
07523     typename tuple_type<A23>::const_reference get() const { return m_x; }
07524 private:
07525     typename tuple_type<A23>::const_reference m_x;
07526 };
07527 
07528 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
07529 struct const_tuple_element<tuple<A0, 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> {
07530     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>& x) : m_x(x.a24) {}
07531     typename tuple_type<A24>::const_reference get() const { return m_x; }
07532 private:
07533     typename tuple_type<A24>::const_reference m_x;
07534 };
07535 
07536 
07537 
07538 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07539 struct const_tuple_element<tuple<A0, A1, 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> {
07540     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a0) {}
07541     typename tuple_type<A0>::const_reference get() const { return m_x; }
07542 private:
07543     typename tuple_type<A0>::const_reference m_x;
07544 };
07545 
07546 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07547 struct const_tuple_element<tuple<A0, A1, 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> {
07548     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a1) {}
07549     typename tuple_type<A1>::const_reference get() const { return m_x; }
07550 private:
07551     typename tuple_type<A1>::const_reference m_x;
07552 };
07553 
07554 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07555 struct const_tuple_element<tuple<A0, A1, 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> {
07556     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a2) {}
07557     typename tuple_type<A2>::const_reference get() const { return m_x; }
07558 private:
07559     typename tuple_type<A2>::const_reference m_x;
07560 };
07561 
07562 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07563 struct const_tuple_element<tuple<A0, A1, 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> {
07564     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a3) {}
07565     typename tuple_type<A3>::const_reference get() const { return m_x; }
07566 private:
07567     typename tuple_type<A3>::const_reference m_x;
07568 };
07569 
07570 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07571 struct const_tuple_element<tuple<A0, A1, 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> {
07572     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a4) {}
07573     typename tuple_type<A4>::const_reference get() const { return m_x; }
07574 private:
07575     typename tuple_type<A4>::const_reference m_x;
07576 };
07577 
07578 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07579 struct const_tuple_element<tuple<A0, A1, 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> {
07580     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a5) {}
07581     typename tuple_type<A5>::const_reference get() const { return m_x; }
07582 private:
07583     typename tuple_type<A5>::const_reference m_x;
07584 };
07585 
07586 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07587 struct const_tuple_element<tuple<A0, A1, 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> {
07588     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a6) {}
07589     typename tuple_type<A6>::const_reference get() const { return m_x; }
07590 private:
07591     typename tuple_type<A6>::const_reference m_x;
07592 };
07593 
07594 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07595 struct const_tuple_element<tuple<A0, A1, 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> {
07596     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a7) {}
07597     typename tuple_type<A7>::const_reference get() const { return m_x; }
07598 private:
07599     typename tuple_type<A7>::const_reference m_x;
07600 };
07601 
07602 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07603 struct const_tuple_element<tuple<A0, A1, 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> {
07604     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a8) {}
07605     typename tuple_type<A8>::const_reference get() const { return m_x; }
07606 private:
07607     typename tuple_type<A8>::const_reference m_x;
07608 };
07609 
07610 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07611 struct const_tuple_element<tuple<A0, A1, 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> {
07612     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a9) {}
07613     typename tuple_type<A9>::const_reference get() const { return m_x; }
07614 private:
07615     typename tuple_type<A9>::const_reference m_x;
07616 };
07617 
07618 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07619 struct const_tuple_element<tuple<A0, A1, 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> {
07620     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a10) {}
07621     typename tuple_type<A10>::const_reference get() const { return m_x; }
07622 private:
07623     typename tuple_type<A10>::const_reference m_x;
07624 };
07625 
07626 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07627 struct const_tuple_element<tuple<A0, A1, 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> {
07628     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a11) {}
07629     typename tuple_type<A11>::const_reference get() const { return m_x; }
07630 private:
07631     typename tuple_type<A11>::const_reference m_x;
07632 };
07633 
07634 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07635 struct const_tuple_element<tuple<A0, A1, 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> {
07636     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a12) {}
07637     typename tuple_type<A12>::const_reference get() const { return m_x; }
07638 private:
07639     typename tuple_type<A12>::const_reference m_x;
07640 };
07641 
07642 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07643 struct const_tuple_element<tuple<A0, A1, 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> {
07644     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a13) {}
07645     typename tuple_type<A13>::const_reference get() const { return m_x; }
07646 private:
07647     typename tuple_type<A13>::const_reference m_x;
07648 };
07649 
07650 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07651 struct const_tuple_element<tuple<A0, A1, 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> {
07652     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a14) {}
07653     typename tuple_type<A14>::const_reference get() const { return m_x; }
07654 private:
07655     typename tuple_type<A14>::const_reference m_x;
07656 };
07657 
07658 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07659 struct const_tuple_element<tuple<A0, A1, 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> {
07660     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a15) {}
07661     typename tuple_type<A15>::const_reference get() const { return m_x; }
07662 private:
07663     typename tuple_type<A15>::const_reference m_x;
07664 };
07665 
07666 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07667 struct const_tuple_element<tuple<A0, A1, 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> {
07668     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a16) {}
07669     typename tuple_type<A16>::const_reference get() const { return m_x; }
07670 private:
07671     typename tuple_type<A16>::const_reference m_x;
07672 };
07673 
07674 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07675 struct const_tuple_element<tuple<A0, A1, 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> {
07676     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a17) {}
07677     typename tuple_type<A17>::const_reference get() const { return m_x; }
07678 private:
07679     typename tuple_type<A17>::const_reference m_x;
07680 };
07681 
07682 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07683 struct const_tuple_element<tuple<A0, A1, 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> {
07684     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a18) {}
07685     typename tuple_type<A18>::const_reference get() const { return m_x; }
07686 private:
07687     typename tuple_type<A18>::const_reference m_x;
07688 };
07689 
07690 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07691 struct const_tuple_element<tuple<A0, A1, 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> {
07692     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a19) {}
07693     typename tuple_type<A19>::const_reference get() const { return m_x; }
07694 private:
07695     typename tuple_type<A19>::const_reference m_x;
07696 };
07697 
07698 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07699 struct const_tuple_element<tuple<A0, A1, 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> {
07700     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a20) {}
07701     typename tuple_type<A20>::const_reference get() const { return m_x; }
07702 private:
07703     typename tuple_type<A20>::const_reference m_x;
07704 };
07705 
07706 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07707 struct const_tuple_element<tuple<A0, A1, 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> {
07708     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a21) {}
07709     typename tuple_type<A21>::const_reference get() const { return m_x; }
07710 private:
07711     typename tuple_type<A21>::const_reference m_x;
07712 };
07713 
07714 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07715 struct const_tuple_element<tuple<A0, A1, 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> {
07716     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a22) {}
07717     typename tuple_type<A22>::const_reference get() const { return m_x; }
07718 private:
07719     typename tuple_type<A22>::const_reference m_x;
07720 };
07721 
07722 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07723 struct const_tuple_element<tuple<A0, A1, 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> {
07724     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a23) {}
07725     typename tuple_type<A23>::const_reference get() const { return m_x; }
07726 private:
07727     typename tuple_type<A23>::const_reference m_x;
07728 };
07729 
07730 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07731 struct const_tuple_element<tuple<A0, A1, 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> {
07732     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a24) {}
07733     typename tuple_type<A24>::const_reference get() const { return m_x; }
07734 private:
07735     typename tuple_type<A24>::const_reference m_x;
07736 };
07737 
07738 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
07739 struct const_tuple_element<tuple<A0, A1, 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> {
07740     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>& x) : m_x(x.a25) {}
07741     typename tuple_type<A25>::const_reference get() const { return m_x; }
07742 private:
07743     typename tuple_type<A25>::const_reference m_x;
07744 };
07745 
07746 
07747 
07748 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07749 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07750     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a0) {}
07751     typename tuple_type<A0>::const_reference get() const { return m_x; }
07752 private:
07753     typename tuple_type<A0>::const_reference m_x;
07754 };
07755 
07756 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07757 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07758     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a1) {}
07759     typename tuple_type<A1>::const_reference get() const { return m_x; }
07760 private:
07761     typename tuple_type<A1>::const_reference m_x;
07762 };
07763 
07764 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07765 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07766     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a2) {}
07767     typename tuple_type<A2>::const_reference get() const { return m_x; }
07768 private:
07769     typename tuple_type<A2>::const_reference m_x;
07770 };
07771 
07772 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07773 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07774     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a3) {}
07775     typename tuple_type<A3>::const_reference get() const { return m_x; }
07776 private:
07777     typename tuple_type<A3>::const_reference m_x;
07778 };
07779 
07780 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07781 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07782     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a4) {}
07783     typename tuple_type<A4>::const_reference get() const { return m_x; }
07784 private:
07785     typename tuple_type<A4>::const_reference m_x;
07786 };
07787 
07788 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07789 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07790     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a5) {}
07791     typename tuple_type<A5>::const_reference get() const { return m_x; }
07792 private:
07793     typename tuple_type<A5>::const_reference m_x;
07794 };
07795 
07796 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07797 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07798     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a6) {}
07799     typename tuple_type<A6>::const_reference get() const { return m_x; }
07800 private:
07801     typename tuple_type<A6>::const_reference m_x;
07802 };
07803 
07804 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07805 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07806     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a7) {}
07807     typename tuple_type<A7>::const_reference get() const { return m_x; }
07808 private:
07809     typename tuple_type<A7>::const_reference m_x;
07810 };
07811 
07812 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07813 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07814     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a8) {}
07815     typename tuple_type<A8>::const_reference get() const { return m_x; }
07816 private:
07817     typename tuple_type<A8>::const_reference m_x;
07818 };
07819 
07820 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07821 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07822     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a9) {}
07823     typename tuple_type<A9>::const_reference get() const { return m_x; }
07824 private:
07825     typename tuple_type<A9>::const_reference m_x;
07826 };
07827 
07828 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07829 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07830     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a10) {}
07831     typename tuple_type<A10>::const_reference get() const { return m_x; }
07832 private:
07833     typename tuple_type<A10>::const_reference m_x;
07834 };
07835 
07836 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07837 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07838     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a11) {}
07839     typename tuple_type<A11>::const_reference get() const { return m_x; }
07840 private:
07841     typename tuple_type<A11>::const_reference m_x;
07842 };
07843 
07844 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07845 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07846     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a12) {}
07847     typename tuple_type<A12>::const_reference get() const { return m_x; }
07848 private:
07849     typename tuple_type<A12>::const_reference m_x;
07850 };
07851 
07852 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07853 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07854     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a13) {}
07855     typename tuple_type<A13>::const_reference get() const { return m_x; }
07856 private:
07857     typename tuple_type<A13>::const_reference m_x;
07858 };
07859 
07860 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07861 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07862     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a14) {}
07863     typename tuple_type<A14>::const_reference get() const { return m_x; }
07864 private:
07865     typename tuple_type<A14>::const_reference m_x;
07866 };
07867 
07868 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07869 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07870     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a15) {}
07871     typename tuple_type<A15>::const_reference get() const { return m_x; }
07872 private:
07873     typename tuple_type<A15>::const_reference m_x;
07874 };
07875 
07876 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07877 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07878     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a16) {}
07879     typename tuple_type<A16>::const_reference get() const { return m_x; }
07880 private:
07881     typename tuple_type<A16>::const_reference m_x;
07882 };
07883 
07884 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07885 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07886     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a17) {}
07887     typename tuple_type<A17>::const_reference get() const { return m_x; }
07888 private:
07889     typename tuple_type<A17>::const_reference m_x;
07890 };
07891 
07892 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07893 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07894     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a18) {}
07895     typename tuple_type<A18>::const_reference get() const { return m_x; }
07896 private:
07897     typename tuple_type<A18>::const_reference m_x;
07898 };
07899 
07900 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07901 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07902     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a19) {}
07903     typename tuple_type<A19>::const_reference get() const { return m_x; }
07904 private:
07905     typename tuple_type<A19>::const_reference m_x;
07906 };
07907 
07908 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07909 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07910     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a20) {}
07911     typename tuple_type<A20>::const_reference get() const { return m_x; }
07912 private:
07913     typename tuple_type<A20>::const_reference m_x;
07914 };
07915 
07916 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07917 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07918     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a21) {}
07919     typename tuple_type<A21>::const_reference get() const { return m_x; }
07920 private:
07921     typename tuple_type<A21>::const_reference m_x;
07922 };
07923 
07924 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07925 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07926     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a22) {}
07927     typename tuple_type<A22>::const_reference get() const { return m_x; }
07928 private:
07929     typename tuple_type<A22>::const_reference m_x;
07930 };
07931 
07932 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07933 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07934     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a23) {}
07935     typename tuple_type<A23>::const_reference get() const { return m_x; }
07936 private:
07937     typename tuple_type<A23>::const_reference m_x;
07938 };
07939 
07940 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07941 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07942     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a24) {}
07943     typename tuple_type<A24>::const_reference get() const { return m_x; }
07944 private:
07945     typename tuple_type<A24>::const_reference m_x;
07946 };
07947 
07948 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07949 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07950     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a25) {}
07951     typename tuple_type<A25>::const_reference get() const { return m_x; }
07952 private:
07953     typename tuple_type<A25>::const_reference m_x;
07954 };
07955 
07956 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
07957 struct const_tuple_element<tuple<A0, A1, A2, 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> {
07958     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>& x) : m_x(x.a26) {}
07959     typename tuple_type<A26>::const_reference get() const { return m_x; }
07960 private:
07961     typename tuple_type<A26>::const_reference m_x;
07962 };
07963 
07964 
07965 
07966 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
07967 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
07968     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a0) {}
07969     typename tuple_type<A0>::const_reference get() const { return m_x; }
07970 private:
07971     typename tuple_type<A0>::const_reference m_x;
07972 };
07973 
07974 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
07975 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
07976     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a1) {}
07977     typename tuple_type<A1>::const_reference get() const { return m_x; }
07978 private:
07979     typename tuple_type<A1>::const_reference m_x;
07980 };
07981 
07982 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
07983 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
07984     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a2) {}
07985     typename tuple_type<A2>::const_reference get() const { return m_x; }
07986 private:
07987     typename tuple_type<A2>::const_reference m_x;
07988 };
07989 
07990 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
07991 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
07992     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a3) {}
07993     typename tuple_type<A3>::const_reference get() const { return m_x; }
07994 private:
07995     typename tuple_type<A3>::const_reference m_x;
07996 };
07997 
07998 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
07999 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08000     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a4) {}
08001     typename tuple_type<A4>::const_reference get() const { return m_x; }
08002 private:
08003     typename tuple_type<A4>::const_reference m_x;
08004 };
08005 
08006 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
08007 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08008     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a5) {}
08009     typename tuple_type<A5>::const_reference get() const { return m_x; }
08010 private:
08011     typename tuple_type<A5>::const_reference m_x;
08012 };
08013 
08014 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
08015 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08016     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a6) {}
08017     typename tuple_type<A6>::const_reference get() const { return m_x; }
08018 private:
08019     typename tuple_type<A6>::const_reference m_x;
08020 };
08021 
08022 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
08023 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08024     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a7) {}
08025     typename tuple_type<A7>::const_reference get() const { return m_x; }
08026 private:
08027     typename tuple_type<A7>::const_reference m_x;
08028 };
08029 
08030 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
08031 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08032     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a8) {}
08033     typename tuple_type<A8>::const_reference get() const { return m_x; }
08034 private:
08035     typename tuple_type<A8>::const_reference m_x;
08036 };
08037 
08038 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
08039 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08040     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a9) {}
08041     typename tuple_type<A9>::const_reference get() const { return m_x; }
08042 private:
08043     typename tuple_type<A9>::const_reference m_x;
08044 };
08045 
08046 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
08047 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08048     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a10) {}
08049     typename tuple_type<A10>::const_reference get() const { return m_x; }
08050 private:
08051     typename tuple_type<A10>::const_reference m_x;
08052 };
08053 
08054 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
08055 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08056     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a11) {}
08057     typename tuple_type<A11>::const_reference get() const { return m_x; }
08058 private:
08059     typename tuple_type<A11>::const_reference m_x;
08060 };
08061 
08062 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
08063 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08064     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a12) {}
08065     typename tuple_type<A12>::const_reference get() const { return m_x; }
08066 private:
08067     typename tuple_type<A12>::const_reference m_x;
08068 };
08069 
08070 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
08071 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08072     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a13) {}
08073     typename tuple_type<A13>::const_reference get() const { return m_x; }
08074 private:
08075     typename tuple_type<A13>::const_reference m_x;
08076 };
08077 
08078 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
08079 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08080     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a14) {}
08081     typename tuple_type<A14>::const_reference get() const { return m_x; }
08082 private:
08083     typename tuple_type<A14>::const_reference m_x;
08084 };
08085 
08086 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
08087 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08088     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a15) {}
08089     typename tuple_type<A15>::const_reference get() const { return m_x; }
08090 private:
08091     typename tuple_type<A15>::const_reference m_x;
08092 };
08093 
08094 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
08095 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08096     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a16) {}
08097     typename tuple_type<A16>::const_reference get() const { return m_x; }
08098 private:
08099     typename tuple_type<A16>::const_reference m_x;
08100 };
08101 
08102 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
08103 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08104     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a17) {}
08105     typename tuple_type<A17>::const_reference get() const { return m_x; }
08106 private:
08107     typename tuple_type<A17>::const_reference m_x;
08108 };
08109 
08110 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
08111 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08112     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a18) {}
08113     typename tuple_type<A18>::const_reference get() const { return m_x; }
08114 private:
08115     typename tuple_type<A18>::const_reference m_x;
08116 };
08117 
08118 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
08119 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08120     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a19) {}
08121     typename tuple_type<A19>::const_reference get() const { return m_x; }
08122 private:
08123     typename tuple_type<A19>::const_reference m_x;
08124 };
08125 
08126 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
08127 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08128     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a20) {}
08129     typename tuple_type<A20>::const_reference get() const { return m_x; }
08130 private:
08131     typename tuple_type<A20>::const_reference m_x;
08132 };
08133 
08134 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
08135 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08136     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a21) {}
08137     typename tuple_type<A21>::const_reference get() const { return m_x; }
08138 private:
08139     typename tuple_type<A21>::const_reference m_x;
08140 };
08141 
08142 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
08143 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08144     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a22) {}
08145     typename tuple_type<A22>::const_reference get() const { return m_x; }
08146 private:
08147     typename tuple_type<A22>::const_reference m_x;
08148 };
08149 
08150 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
08151 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08152     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a23) {}
08153     typename tuple_type<A23>::const_reference get() const { return m_x; }
08154 private:
08155     typename tuple_type<A23>::const_reference m_x;
08156 };
08157 
08158 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
08159 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08160     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a24) {}
08161     typename tuple_type<A24>::const_reference get() const { return m_x; }
08162 private:
08163     typename tuple_type<A24>::const_reference m_x;
08164 };
08165 
08166 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
08167 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08168     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a25) {}
08169     typename tuple_type<A25>::const_reference get() const { return m_x; }
08170 private:
08171     typename tuple_type<A25>::const_reference m_x;
08172 };
08173 
08174 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
08175 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08176     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a26) {}
08177     typename tuple_type<A26>::const_reference get() const { return m_x; }
08178 private:
08179     typename tuple_type<A26>::const_reference m_x;
08180 };
08181 
08182 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
08183 struct const_tuple_element<tuple<A0, A1, A2, A3, 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> {
08184     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>& x) : m_x(x.a27) {}
08185     typename tuple_type<A27>::const_reference get() const { return m_x; }
08186 private:
08187     typename tuple_type<A27>::const_reference m_x;
08188 };
08189 
08190 
08191 
08192 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08193 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08194     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a0) {}
08195     typename tuple_type<A0>::const_reference get() const { return m_x; }
08196 private:
08197     typename tuple_type<A0>::const_reference m_x;
08198 };
08199 
08200 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08201 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08202     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a1) {}
08203     typename tuple_type<A1>::const_reference get() const { return m_x; }
08204 private:
08205     typename tuple_type<A1>::const_reference m_x;
08206 };
08207 
08208 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08209 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08210     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a2) {}
08211     typename tuple_type<A2>::const_reference get() const { return m_x; }
08212 private:
08213     typename tuple_type<A2>::const_reference m_x;
08214 };
08215 
08216 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08217 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08218     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a3) {}
08219     typename tuple_type<A3>::const_reference get() const { return m_x; }
08220 private:
08221     typename tuple_type<A3>::const_reference m_x;
08222 };
08223 
08224 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08225 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08226     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a4) {}
08227     typename tuple_type<A4>::const_reference get() const { return m_x; }
08228 private:
08229     typename tuple_type<A4>::const_reference m_x;
08230 };
08231 
08232 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08233 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08234     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a5) {}
08235     typename tuple_type<A5>::const_reference get() const { return m_x; }
08236 private:
08237     typename tuple_type<A5>::const_reference m_x;
08238 };
08239 
08240 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08241 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08242     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a6) {}
08243     typename tuple_type<A6>::const_reference get() const { return m_x; }
08244 private:
08245     typename tuple_type<A6>::const_reference m_x;
08246 };
08247 
08248 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08249 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08250     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a7) {}
08251     typename tuple_type<A7>::const_reference get() const { return m_x; }
08252 private:
08253     typename tuple_type<A7>::const_reference m_x;
08254 };
08255 
08256 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08257 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08258     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a8) {}
08259     typename tuple_type<A8>::const_reference get() const { return m_x; }
08260 private:
08261     typename tuple_type<A8>::const_reference m_x;
08262 };
08263 
08264 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08265 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08266     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a9) {}
08267     typename tuple_type<A9>::const_reference get() const { return m_x; }
08268 private:
08269     typename tuple_type<A9>::const_reference m_x;
08270 };
08271 
08272 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08273 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08274     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a10) {}
08275     typename tuple_type<A10>::const_reference get() const { return m_x; }
08276 private:
08277     typename tuple_type<A10>::const_reference m_x;
08278 };
08279 
08280 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08281 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08282     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a11) {}
08283     typename tuple_type<A11>::const_reference get() const { return m_x; }
08284 private:
08285     typename tuple_type<A11>::const_reference m_x;
08286 };
08287 
08288 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08289 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08290     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a12) {}
08291     typename tuple_type<A12>::const_reference get() const { return m_x; }
08292 private:
08293     typename tuple_type<A12>::const_reference m_x;
08294 };
08295 
08296 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08297 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08298     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a13) {}
08299     typename tuple_type<A13>::const_reference get() const { return m_x; }
08300 private:
08301     typename tuple_type<A13>::const_reference m_x;
08302 };
08303 
08304 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08305 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08306     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a14) {}
08307     typename tuple_type<A14>::const_reference get() const { return m_x; }
08308 private:
08309     typename tuple_type<A14>::const_reference m_x;
08310 };
08311 
08312 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08313 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08314     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a15) {}
08315     typename tuple_type<A15>::const_reference get() const { return m_x; }
08316 private:
08317     typename tuple_type<A15>::const_reference m_x;
08318 };
08319 
08320 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08321 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08322     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a16) {}
08323     typename tuple_type<A16>::const_reference get() const { return m_x; }
08324 private:
08325     typename tuple_type<A16>::const_reference m_x;
08326 };
08327 
08328 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08329 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08330     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a17) {}
08331     typename tuple_type<A17>::const_reference get() const { return m_x; }
08332 private:
08333     typename tuple_type<A17>::const_reference m_x;
08334 };
08335 
08336 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08337 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08338     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a18) {}
08339     typename tuple_type<A18>::const_reference get() const { return m_x; }
08340 private:
08341     typename tuple_type<A18>::const_reference m_x;
08342 };
08343 
08344 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08345 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08346     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a19) {}
08347     typename tuple_type<A19>::const_reference get() const { return m_x; }
08348 private:
08349     typename tuple_type<A19>::const_reference m_x;
08350 };
08351 
08352 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08353 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08354     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a20) {}
08355     typename tuple_type<A20>::const_reference get() const { return m_x; }
08356 private:
08357     typename tuple_type<A20>::const_reference m_x;
08358 };
08359 
08360 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08361 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08362     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a21) {}
08363     typename tuple_type<A21>::const_reference get() const { return m_x; }
08364 private:
08365     typename tuple_type<A21>::const_reference m_x;
08366 };
08367 
08368 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08369 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08370     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a22) {}
08371     typename tuple_type<A22>::const_reference get() const { return m_x; }
08372 private:
08373     typename tuple_type<A22>::const_reference m_x;
08374 };
08375 
08376 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08377 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08378     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a23) {}
08379     typename tuple_type<A23>::const_reference get() const { return m_x; }
08380 private:
08381     typename tuple_type<A23>::const_reference m_x;
08382 };
08383 
08384 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08385 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08386     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a24) {}
08387     typename tuple_type<A24>::const_reference get() const { return m_x; }
08388 private:
08389     typename tuple_type<A24>::const_reference m_x;
08390 };
08391 
08392 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08393 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08394     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a25) {}
08395     typename tuple_type<A25>::const_reference get() const { return m_x; }
08396 private:
08397     typename tuple_type<A25>::const_reference m_x;
08398 };
08399 
08400 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08401 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08402     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a26) {}
08403     typename tuple_type<A26>::const_reference get() const { return m_x; }
08404 private:
08405     typename tuple_type<A26>::const_reference m_x;
08406 };
08407 
08408 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08409 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08410     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a27) {}
08411     typename tuple_type<A27>::const_reference get() const { return m_x; }
08412 private:
08413     typename tuple_type<A27>::const_reference m_x;
08414 };
08415 
08416 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
08417 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, 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> {
08418     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>& x) : m_x(x.a28) {}
08419     typename tuple_type<A28>::const_reference get() const { return m_x; }
08420 private:
08421     typename tuple_type<A28>::const_reference m_x;
08422 };
08423 
08424 
08425 
08426 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08427 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08428     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a0) {}
08429     typename tuple_type<A0>::const_reference get() const { return m_x; }
08430 private:
08431     typename tuple_type<A0>::const_reference m_x;
08432 };
08433 
08434 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08435 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08436     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a1) {}
08437     typename tuple_type<A1>::const_reference get() const { return m_x; }
08438 private:
08439     typename tuple_type<A1>::const_reference m_x;
08440 };
08441 
08442 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08443 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08444     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a2) {}
08445     typename tuple_type<A2>::const_reference get() const { return m_x; }
08446 private:
08447     typename tuple_type<A2>::const_reference m_x;
08448 };
08449 
08450 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08451 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08452     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a3) {}
08453     typename tuple_type<A3>::const_reference get() const { return m_x; }
08454 private:
08455     typename tuple_type<A3>::const_reference m_x;
08456 };
08457 
08458 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08459 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08460     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a4) {}
08461     typename tuple_type<A4>::const_reference get() const { return m_x; }
08462 private:
08463     typename tuple_type<A4>::const_reference m_x;
08464 };
08465 
08466 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08467 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08468     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a5) {}
08469     typename tuple_type<A5>::const_reference get() const { return m_x; }
08470 private:
08471     typename tuple_type<A5>::const_reference m_x;
08472 };
08473 
08474 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08475 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08476     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a6) {}
08477     typename tuple_type<A6>::const_reference get() const { return m_x; }
08478 private:
08479     typename tuple_type<A6>::const_reference m_x;
08480 };
08481 
08482 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08483 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08484     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a7) {}
08485     typename tuple_type<A7>::const_reference get() const { return m_x; }
08486 private:
08487     typename tuple_type<A7>::const_reference m_x;
08488 };
08489 
08490 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08491 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08492     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a8) {}
08493     typename tuple_type<A8>::const_reference get() const { return m_x; }
08494 private:
08495     typename tuple_type<A8>::const_reference m_x;
08496 };
08497 
08498 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08499 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08500     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a9) {}
08501     typename tuple_type<A9>::const_reference get() const { return m_x; }
08502 private:
08503     typename tuple_type<A9>::const_reference m_x;
08504 };
08505 
08506 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08507 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08508     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a10) {}
08509     typename tuple_type<A10>::const_reference get() const { return m_x; }
08510 private:
08511     typename tuple_type<A10>::const_reference m_x;
08512 };
08513 
08514 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08515 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08516     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a11) {}
08517     typename tuple_type<A11>::const_reference get() const { return m_x; }
08518 private:
08519     typename tuple_type<A11>::const_reference m_x;
08520 };
08521 
08522 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08523 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08524     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a12) {}
08525     typename tuple_type<A12>::const_reference get() const { return m_x; }
08526 private:
08527     typename tuple_type<A12>::const_reference m_x;
08528 };
08529 
08530 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08531 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08532     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a13) {}
08533     typename tuple_type<A13>::const_reference get() const { return m_x; }
08534 private:
08535     typename tuple_type<A13>::const_reference m_x;
08536 };
08537 
08538 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08539 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08540     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a14) {}
08541     typename tuple_type<A14>::const_reference get() const { return m_x; }
08542 private:
08543     typename tuple_type<A14>::const_reference m_x;
08544 };
08545 
08546 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08547 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08548     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a15) {}
08549     typename tuple_type<A15>::const_reference get() const { return m_x; }
08550 private:
08551     typename tuple_type<A15>::const_reference m_x;
08552 };
08553 
08554 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08555 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08556     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a16) {}
08557     typename tuple_type<A16>::const_reference get() const { return m_x; }
08558 private:
08559     typename tuple_type<A16>::const_reference m_x;
08560 };
08561 
08562 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08563 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08564     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a17) {}
08565     typename tuple_type<A17>::const_reference get() const { return m_x; }
08566 private:
08567     typename tuple_type<A17>::const_reference m_x;
08568 };
08569 
08570 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08571 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08572     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a18) {}
08573     typename tuple_type<A18>::const_reference get() const { return m_x; }
08574 private:
08575     typename tuple_type<A18>::const_reference m_x;
08576 };
08577 
08578 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08579 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08580     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a19) {}
08581     typename tuple_type<A19>::const_reference get() const { return m_x; }
08582 private:
08583     typename tuple_type<A19>::const_reference m_x;
08584 };
08585 
08586 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08587 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08588     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a20) {}
08589     typename tuple_type<A20>::const_reference get() const { return m_x; }
08590 private:
08591     typename tuple_type<A20>::const_reference m_x;
08592 };
08593 
08594 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08595 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08596     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a21) {}
08597     typename tuple_type<A21>::const_reference get() const { return m_x; }
08598 private:
08599     typename tuple_type<A21>::const_reference m_x;
08600 };
08601 
08602 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08603 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08604     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a22) {}
08605     typename tuple_type<A22>::const_reference get() const { return m_x; }
08606 private:
08607     typename tuple_type<A22>::const_reference m_x;
08608 };
08609 
08610 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08611 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08612     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a23) {}
08613     typename tuple_type<A23>::const_reference get() const { return m_x; }
08614 private:
08615     typename tuple_type<A23>::const_reference m_x;
08616 };
08617 
08618 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08619 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08620     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a24) {}
08621     typename tuple_type<A24>::const_reference get() const { return m_x; }
08622 private:
08623     typename tuple_type<A24>::const_reference m_x;
08624 };
08625 
08626 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08627 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08628     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a25) {}
08629     typename tuple_type<A25>::const_reference get() const { return m_x; }
08630 private:
08631     typename tuple_type<A25>::const_reference m_x;
08632 };
08633 
08634 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08635 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08636     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a26) {}
08637     typename tuple_type<A26>::const_reference get() const { return m_x; }
08638 private:
08639     typename tuple_type<A26>::const_reference m_x;
08640 };
08641 
08642 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08643 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08644     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a27) {}
08645     typename tuple_type<A27>::const_reference get() const { return m_x; }
08646 private:
08647     typename tuple_type<A27>::const_reference m_x;
08648 };
08649 
08650 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08651 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08652     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a28) {}
08653     typename tuple_type<A28>::const_reference get() const { return m_x; }
08654 private:
08655     typename tuple_type<A28>::const_reference m_x;
08656 };
08657 
08658 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
08659 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, 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> {
08660     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>& x) : m_x(x.a29) {}
08661     typename tuple_type<A29>::const_reference get() const { return m_x; }
08662 private:
08663     typename tuple_type<A29>::const_reference m_x;
08664 };
08665 
08666 
08667 
08668 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08669 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08670     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a0) {}
08671     typename tuple_type<A0>::const_reference get() const { return m_x; }
08672 private:
08673     typename tuple_type<A0>::const_reference m_x;
08674 };
08675 
08676 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08677 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08678     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a1) {}
08679     typename tuple_type<A1>::const_reference get() const { return m_x; }
08680 private:
08681     typename tuple_type<A1>::const_reference m_x;
08682 };
08683 
08684 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08685 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08686     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a2) {}
08687     typename tuple_type<A2>::const_reference get() const { return m_x; }
08688 private:
08689     typename tuple_type<A2>::const_reference m_x;
08690 };
08691 
08692 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08693 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08694     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a3) {}
08695     typename tuple_type<A3>::const_reference get() const { return m_x; }
08696 private:
08697     typename tuple_type<A3>::const_reference m_x;
08698 };
08699 
08700 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08701 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08702     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a4) {}
08703     typename tuple_type<A4>::const_reference get() const { return m_x; }
08704 private:
08705     typename tuple_type<A4>::const_reference m_x;
08706 };
08707 
08708 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08709 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08710     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a5) {}
08711     typename tuple_type<A5>::const_reference get() const { return m_x; }
08712 private:
08713     typename tuple_type<A5>::const_reference m_x;
08714 };
08715 
08716 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08717 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08718     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a6) {}
08719     typename tuple_type<A6>::const_reference get() const { return m_x; }
08720 private:
08721     typename tuple_type<A6>::const_reference m_x;
08722 };
08723 
08724 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08725 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08726     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a7) {}
08727     typename tuple_type<A7>::const_reference get() const { return m_x; }
08728 private:
08729     typename tuple_type<A7>::const_reference m_x;
08730 };
08731 
08732 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08733 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08734     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a8) {}
08735     typename tuple_type<A8>::const_reference get() const { return m_x; }
08736 private:
08737     typename tuple_type<A8>::const_reference m_x;
08738 };
08739 
08740 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08741 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08742     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a9) {}
08743     typename tuple_type<A9>::const_reference get() const { return m_x; }
08744 private:
08745     typename tuple_type<A9>::const_reference m_x;
08746 };
08747 
08748 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08749 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08750     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a10) {}
08751     typename tuple_type<A10>::const_reference get() const { return m_x; }
08752 private:
08753     typename tuple_type<A10>::const_reference m_x;
08754 };
08755 
08756 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08757 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08758     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a11) {}
08759     typename tuple_type<A11>::const_reference get() const { return m_x; }
08760 private:
08761     typename tuple_type<A11>::const_reference m_x;
08762 };
08763 
08764 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08765 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08766     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a12) {}
08767     typename tuple_type<A12>::const_reference get() const { return m_x; }
08768 private:
08769     typename tuple_type<A12>::const_reference m_x;
08770 };
08771 
08772 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08773 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08774     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a13) {}
08775     typename tuple_type<A13>::const_reference get() const { return m_x; }
08776 private:
08777     typename tuple_type<A13>::const_reference m_x;
08778 };
08779 
08780 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08781 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08782     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a14) {}
08783     typename tuple_type<A14>::const_reference get() const { return m_x; }
08784 private:
08785     typename tuple_type<A14>::const_reference m_x;
08786 };
08787 
08788 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08789 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08790     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a15) {}
08791     typename tuple_type<A15>::const_reference get() const { return m_x; }
08792 private:
08793     typename tuple_type<A15>::const_reference m_x;
08794 };
08795 
08796 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08797 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08798     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a16) {}
08799     typename tuple_type<A16>::const_reference get() const { return m_x; }
08800 private:
08801     typename tuple_type<A16>::const_reference m_x;
08802 };
08803 
08804 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08805 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08806     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a17) {}
08807     typename tuple_type<A17>::const_reference get() const { return m_x; }
08808 private:
08809     typename tuple_type<A17>::const_reference m_x;
08810 };
08811 
08812 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08813 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08814     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a18) {}
08815     typename tuple_type<A18>::const_reference get() const { return m_x; }
08816 private:
08817     typename tuple_type<A18>::const_reference m_x;
08818 };
08819 
08820 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08821 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08822     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a19) {}
08823     typename tuple_type<A19>::const_reference get() const { return m_x; }
08824 private:
08825     typename tuple_type<A19>::const_reference m_x;
08826 };
08827 
08828 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08829 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08830     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a20) {}
08831     typename tuple_type<A20>::const_reference get() const { return m_x; }
08832 private:
08833     typename tuple_type<A20>::const_reference m_x;
08834 };
08835 
08836 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08837 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08838     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a21) {}
08839     typename tuple_type<A21>::const_reference get() const { return m_x; }
08840 private:
08841     typename tuple_type<A21>::const_reference m_x;
08842 };
08843 
08844 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08845 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08846     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a22) {}
08847     typename tuple_type<A22>::const_reference get() const { return m_x; }
08848 private:
08849     typename tuple_type<A22>::const_reference m_x;
08850 };
08851 
08852 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08853 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08854     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a23) {}
08855     typename tuple_type<A23>::const_reference get() const { return m_x; }
08856 private:
08857     typename tuple_type<A23>::const_reference m_x;
08858 };
08859 
08860 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08861 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08862     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a24) {}
08863     typename tuple_type<A24>::const_reference get() const { return m_x; }
08864 private:
08865     typename tuple_type<A24>::const_reference m_x;
08866 };
08867 
08868 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08869 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08870     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a25) {}
08871     typename tuple_type<A25>::const_reference get() const { return m_x; }
08872 private:
08873     typename tuple_type<A25>::const_reference m_x;
08874 };
08875 
08876 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08877 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08878     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a26) {}
08879     typename tuple_type<A26>::const_reference get() const { return m_x; }
08880 private:
08881     typename tuple_type<A26>::const_reference m_x;
08882 };
08883 
08884 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08885 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08886     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a27) {}
08887     typename tuple_type<A27>::const_reference get() const { return m_x; }
08888 private:
08889     typename tuple_type<A27>::const_reference m_x;
08890 };
08891 
08892 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08893 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08894     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a28) {}
08895     typename tuple_type<A28>::const_reference get() const { return m_x; }
08896 private:
08897     typename tuple_type<A28>::const_reference m_x;
08898 };
08899 
08900 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08901 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08902     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a29) {}
08903     typename tuple_type<A29>::const_reference get() const { return m_x; }
08904 private:
08905     typename tuple_type<A29>::const_reference m_x;
08906 };
08907 
08908 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
08909 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08910     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>& x) : m_x(x.a30) {}
08911     typename tuple_type<A30>::const_reference get() const { return m_x; }
08912 private:
08913     typename tuple_type<A30>::const_reference m_x;
08914 };
08915 
08916 
08917 
08918 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
08919 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08920     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a0) {}
08921     typename tuple_type<A0>::const_reference get() const { return m_x; }
08922 private:
08923     typename tuple_type<A0>::const_reference m_x;
08924 };
08925 
08926 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
08927 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08928     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a1) {}
08929     typename tuple_type<A1>::const_reference get() const { return m_x; }
08930 private:
08931     typename tuple_type<A1>::const_reference m_x;
08932 };
08933 
08934 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
08935 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08936     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a2) {}
08937     typename tuple_type<A2>::const_reference get() const { return m_x; }
08938 private:
08939     typename tuple_type<A2>::const_reference m_x;
08940 };
08941 
08942 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
08943 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08944     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a3) {}
08945     typename tuple_type<A3>::const_reference get() const { return m_x; }
08946 private:
08947     typename tuple_type<A3>::const_reference m_x;
08948 };
08949 
08950 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
08951 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08952     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a4) {}
08953     typename tuple_type<A4>::const_reference get() const { return m_x; }
08954 private:
08955     typename tuple_type<A4>::const_reference m_x;
08956 };
08957 
08958 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
08959 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08960     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a5) {}
08961     typename tuple_type<A5>::const_reference get() const { return m_x; }
08962 private:
08963     typename tuple_type<A5>::const_reference m_x;
08964 };
08965 
08966 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
08967 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08968     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a6) {}
08969     typename tuple_type<A6>::const_reference get() const { return m_x; }
08970 private:
08971     typename tuple_type<A6>::const_reference m_x;
08972 };
08973 
08974 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
08975 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08976     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a7) {}
08977     typename tuple_type<A7>::const_reference get() const { return m_x; }
08978 private:
08979     typename tuple_type<A7>::const_reference m_x;
08980 };
08981 
08982 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
08983 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08984     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a8) {}
08985     typename tuple_type<A8>::const_reference get() const { return m_x; }
08986 private:
08987     typename tuple_type<A8>::const_reference m_x;
08988 };
08989 
08990 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
08991 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
08992     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a9) {}
08993     typename tuple_type<A9>::const_reference get() const { return m_x; }
08994 private:
08995     typename tuple_type<A9>::const_reference m_x;
08996 };
08997 
08998 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
08999 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
09000     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a10) {}
09001     typename tuple_type<A10>::const_reference get() const { return m_x; }
09002 private:
09003     typename tuple_type<A10>::const_reference m_x;
09004 };
09005 
09006 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
09007 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
09008     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a11) {}
09009     typename tuple_type<A11>::const_reference get() const { return m_x; }
09010 private:
09011     typename tuple_type<A11>::const_reference m_x;
09012 };
09013 
09014 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
09015 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
09016     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a12) {}
09017     typename tuple_type<A12>::const_reference get() const { return m_x; }
09018 private:
09019     typename tuple_type<A12>::const_reference m_x;
09020 };
09021 
09022 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
09023 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
09024     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a13) {}
09025     typename tuple_type<A13>::const_reference get() const { return m_x; }
09026 private:
09027     typename tuple_type<A13>::const_reference m_x;
09028 };
09029 
09030 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
09031 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
09032     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a14) {}
09033     typename tuple_type<A14>::const_reference get() const { return m_x; }
09034 private:
09035     typename tuple_type<A14>::const_reference m_x;
09036 };
09037 
09038 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
09039 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
09040     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a15) {}
09041     typename tuple_type<A15>::const_reference get() const { return m_x; }
09042 private:
09043     typename tuple_type<A15>::const_reference m_x;
09044 };
09045 
09046 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
09047 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
09048     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a16) {}
09049     typename tuple_type<A16>::const_reference get() const { return m_x; }
09050 private:
09051     typename tuple_type<A16>::const_reference m_x;
09052 };
09053 
09054 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
09055 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
09056     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a17) {}
09057     typename tuple_type<A17>::const_reference get() const { return m_x; }
09058 private:
09059     typename tuple_type<A17>::const_reference m_x;
09060 };
09061 
09062 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
09063 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
09064     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a18) {}
09065     typename tuple_type<A18>::const_reference get() const { return m_x; }
09066 private:
09067     typename tuple_type<A18>::const_reference m_x;
09068 };
09069 
09070 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
09071 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
09072     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a19) {}
09073     typename tuple_type<A19>::const_reference get() const { return m_x; }
09074 private:
09075     typename tuple_type<A19>::const_reference m_x;
09076 };
09077 
09078 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
09079 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
09080     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a20) {}
09081     typename tuple_type<A20>::const_reference get() const { return m_x; }
09082 private:
09083     typename tuple_type<A20>::const_reference m_x;
09084 };
09085 
09086 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
09087 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
09088     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a21) {}
09089     typename tuple_type<A21>::const_reference get() const { return m_x; }
09090 private:
09091     typename tuple_type<A21>::const_reference m_x;
09092 };
09093 
09094 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
09095 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
09096     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a22) {}
09097     typename tuple_type<A22>::const_reference get() const { return m_x; }
09098 private:
09099     typename tuple_type<A22>::const_reference m_x;
09100 };
09101 
09102 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
09103 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
09104     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a23) {}
09105     typename tuple_type<A23>::const_reference get() const { return m_x; }
09106 private:
09107     typename tuple_type<A23>::const_reference m_x;
09108 };
09109 
09110 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
09111 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
09112     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a24) {}
09113     typename tuple_type<A24>::const_reference get() const { return m_x; }
09114 private:
09115     typename tuple_type<A24>::const_reference m_x;
09116 };
09117 
09118 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
09119 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
09120     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a25) {}
09121     typename tuple_type<A25>::const_reference get() const { return m_x; }
09122 private:
09123     typename tuple_type<A25>::const_reference m_x;
09124 };
09125 
09126 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
09127 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
09128     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a26) {}
09129     typename tuple_type<A26>::const_reference get() const { return m_x; }
09130 private:
09131     typename tuple_type<A26>::const_reference m_x;
09132 };
09133 
09134 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
09135 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
09136     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a27) {}
09137     typename tuple_type<A27>::const_reference get() const { return m_x; }
09138 private:
09139     typename tuple_type<A27>::const_reference m_x;
09140 };
09141 
09142 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
09143 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
09144     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a28) {}
09145     typename tuple_type<A28>::const_reference get() const { return m_x; }
09146 private:
09147     typename tuple_type<A28>::const_reference m_x;
09148 };
09149 
09150 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
09151 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
09152     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a29) {}
09153     typename tuple_type<A29>::const_reference get() const { return m_x; }
09154 private:
09155     typename tuple_type<A29>::const_reference m_x;
09156 };
09157 
09158 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
09159 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
09160     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a30) {}
09161     typename tuple_type<A30>::const_reference get() const { return m_x; }
09162 private:
09163     typename tuple_type<A30>::const_reference m_x;
09164 };
09165 
09166 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
09167 struct const_tuple_element<tuple<A0, A1, A2, A3, A4, A5, A6, 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> {
09168     const_tuple_element(const tuple<A0, A1, A2, A3, A4, A5, A6, 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>& x) : m_x(x.a31) {}
09169     typename tuple_type<A31>::const_reference get() const { return m_x; }
09170 private:
09171     typename tuple_type<A31>::const_reference m_x;
09172 };
09173 
09174 
09175 /// @endcond
09176 
09177 template <>
09178 struct tuple<> {
09179     tuple() {}
09180     tuple(msgpack::object const& o) { o.convert(*this); }
09181     typedef tuple<> value_type;
09182 };
09183 
09184 /// @cond
09185 
09186 template <typename A0>
09187 struct tuple<A0> {
09188     typedef tuple<A0> value_type;
09189     tuple() {}
09190     tuple(typename tuple_type<A0>::transparent_reference _a0) :
09191         a0(_a0) {}
09192     tuple(msgpack::object const& o) { o.convert(*this); }
09193     template <int N> typename tuple_element<value_type, N>::reference get()
09194         { return tuple_element<value_type, N>(*this).get(); }
09195     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09196         { return const_tuple_element<value_type, N>(*this).get(); }
09197     
09198     A0 a0;
09199 };
09200 
09201 template <int N, typename A0>
09202 inline typename type::tuple_element<type::tuple<A0>, N>::reference get(type::tuple<A0>& t)
09203 { return t.template get<N>(); }
09204 template <int N, typename A0>
09205 inline typename type::const_tuple_element<type::tuple<A0>, N>::const_reference get(type::tuple<A0> const& t)
09206 { return t.template get<N>(); }
09207 
09208 template <typename A0, typename A1>
09209 struct tuple<A0, A1> {
09210     typedef tuple<A0, A1> value_type;
09211     tuple() {}
09212     tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1) :
09213         a0(_a0), a1(_a1) {}
09214     tuple(msgpack::object const& o) { o.convert(*this); }
09215     template <int N> typename tuple_element<value_type, N>::reference get()
09216         { return tuple_element<value_type, N>(*this).get(); }
09217     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09218         { return const_tuple_element<value_type, N>(*this).get(); }
09219     
09220     A0 a0;
09221     A1 a1;
09222 };
09223 
09224 template <int N, typename A0, typename A1>
09225 inline typename type::tuple_element<type::tuple<A0, A1>, N>::reference get(type::tuple<A0, A1>& t)
09226 { return t.template get<N>(); }
09227 template <int N, typename A0, typename A1>
09228 inline typename type::const_tuple_element<type::tuple<A0, A1>, N>::const_reference get(type::tuple<A0, A1> const& t)
09229 { return t.template get<N>(); }
09230 
09231 template <typename A0, typename A1, typename A2>
09232 struct tuple<A0, A1, A2> {
09233     typedef tuple<A0, A1, A2> value_type;
09234     tuple() {}
09235     tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2) :
09236         a0(_a0), a1(_a1), a2(_a2) {}
09237     tuple(msgpack::object const& o) { o.convert(*this); }
09238     template <int N> typename tuple_element<value_type, N>::reference get()
09239         { return tuple_element<value_type, N>(*this).get(); }
09240     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09241         { return const_tuple_element<value_type, N>(*this).get(); }
09242     
09243     A0 a0;
09244     A1 a1;
09245     A2 a2;
09246 };
09247 
09248 template <int N, typename A0, typename A1, typename A2>
09249 inline typename type::tuple_element<type::tuple<A0, A1, A2>, N>::reference get(type::tuple<A0, A1, A2>& t)
09250 { return t.template get<N>(); }
09251 template <int N, typename A0, typename A1, typename A2>
09252 inline typename type::const_tuple_element<type::tuple<A0, A1, A2>, N>::const_reference get(type::tuple<A0, A1, A2> const& t)
09253 { return t.template get<N>(); }
09254 
09255 template <typename A0, typename A1, typename A2, typename A3>
09256 struct tuple<A0, A1, A2, A3> {
09257     typedef tuple<A0, A1, A2, A3> value_type;
09258     tuple() {}
09259     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) :
09260         a0(_a0), a1(_a1), a2(_a2), a3(_a3) {}
09261     tuple(msgpack::object const& o) { o.convert(*this); }
09262     template <int N> typename tuple_element<value_type, N>::reference get()
09263         { return tuple_element<value_type, N>(*this).get(); }
09264     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09265         { return const_tuple_element<value_type, N>(*this).get(); }
09266     
09267     A0 a0;
09268     A1 a1;
09269     A2 a2;
09270     A3 a3;
09271 };
09272 
09273 template <int N, typename A0, typename A1, typename A2, typename A3>
09274 inline typename type::tuple_element<type::tuple<A0, A1, A2, A3>, N>::reference get(type::tuple<A0, A1, A2, A3>& t)
09275 { return t.template get<N>(); }
09276 template <int N, typename A0, typename A1, typename A2, typename A3>
09277 inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3>, N>::const_reference get(type::tuple<A0, A1, A2, A3> const& t)
09278 { return t.template get<N>(); }
09279 
09280 template <typename A0, typename A1, typename A2, typename A3, typename A4>
09281 struct tuple<A0, A1, A2, A3, A4> {
09282     typedef tuple<A0, A1, A2, A3, A4> value_type;
09283     tuple() {}
09284     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) :
09285         a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4) {}
09286     tuple(msgpack::object const& o) { o.convert(*this); }
09287     template <int N> typename tuple_element<value_type, N>::reference get()
09288         { return tuple_element<value_type, N>(*this).get(); }
09289     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09290         { return const_tuple_element<value_type, N>(*this).get(); }
09291     
09292     A0 a0;
09293     A1 a1;
09294     A2 a2;
09295     A3 a3;
09296     A4 a4;
09297 };
09298 
09299 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4>
09300 inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4>, N>::reference get(type::tuple<A0, A1, A2, A3, A4>& t)
09301 { return t.template get<N>(); }
09302 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4>
09303 inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4> const& t)
09304 { return t.template get<N>(); }
09305 
09306 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
09307 struct tuple<A0, A1, A2, A3, A4, A5> {
09308     typedef tuple<A0, A1, A2, A3, A4, A5> value_type;
09309     tuple() {}
09310     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) :
09311         a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5) {}
09312     tuple(msgpack::object const& o) { o.convert(*this); }
09313     template <int N> typename tuple_element<value_type, N>::reference get()
09314         { return tuple_element<value_type, N>(*this).get(); }
09315     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09316         { return const_tuple_element<value_type, N>(*this).get(); }
09317     
09318     A0 a0;
09319     A1 a1;
09320     A2 a2;
09321     A3 a3;
09322     A4 a4;
09323     A5 a5;
09324 };
09325 
09326 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
09327 inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5>& t)
09328 { return t.template get<N>(); }
09329 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
09330 inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5> const& t)
09331 { return t.template get<N>(); }
09332 
09333 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
09334 struct tuple<A0, A1, A2, A3, A4, A5, A6> {
09335     typedef tuple<A0, A1, A2, A3, A4, A5, A6> value_type;
09336     tuple() {}
09337     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) :
09338         a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6) {}
09339     tuple(msgpack::object const& o) { o.convert(*this); }
09340     template <int N> typename tuple_element<value_type, N>::reference get()
09341         { return tuple_element<value_type, N>(*this).get(); }
09342     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09343         { return const_tuple_element<value_type, N>(*this).get(); }
09344     
09345     A0 a0;
09346     A1 a1;
09347     A2 a2;
09348     A3 a3;
09349     A4 a4;
09350     A5 a5;
09351     A6 a6;
09352 };
09353 
09354 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
09355 inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6>& t)
09356 { return t.template get<N>(); }
09357 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
09358 inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6> const& t)
09359 { return t.template get<N>(); }
09360 
09361 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
09362 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7> {
09363     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7> value_type;
09364     tuple() {}
09365     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) :
09366         a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7) {}
09367     tuple(msgpack::object const& o) { o.convert(*this); }
09368     template <int N> typename tuple_element<value_type, N>::reference get()
09369         { return tuple_element<value_type, N>(*this).get(); }
09370     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09371         { return const_tuple_element<value_type, N>(*this).get(); }
09372     
09373     A0 a0;
09374     A1 a1;
09375     A2 a2;
09376     A3 a3;
09377     A4 a4;
09378     A5 a5;
09379     A6 a6;
09380     A7 a7;
09381 };
09382 
09383 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
09384 inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7>& t)
09385 { return t.template get<N>(); }
09386 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
09387 inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7> const& t)
09388 { return t.template get<N>(); }
09389 
09390 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
09391 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> {
09392     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> value_type;
09393     tuple() {}
09394     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) :
09395         a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8) {}
09396     tuple(msgpack::object const& o) { o.convert(*this); }
09397     template <int N> typename tuple_element<value_type, N>::reference get()
09398         { return tuple_element<value_type, N>(*this).get(); }
09399     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09400         { return const_tuple_element<value_type, N>(*this).get(); }
09401     
09402     A0 a0;
09403     A1 a1;
09404     A2 a2;
09405     A3 a3;
09406     A4 a4;
09407     A5 a5;
09408     A6 a6;
09409     A7 a7;
09410     A8 a8;
09411 };
09412 
09413 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
09414 inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& t)
09415 { return t.template get<N>(); }
09416 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
09417 inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> const& t)
09418 { return t.template get<N>(); }
09419 
09420 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
09421 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> {
09422     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> value_type;
09423     tuple() {}
09424     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) :
09425         a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9) {}
09426     tuple(msgpack::object const& o) { o.convert(*this); }
09427     template <int N> typename tuple_element<value_type, N>::reference get()
09428         { return tuple_element<value_type, N>(*this).get(); }
09429     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09430         { return const_tuple_element<value_type, N>(*this).get(); }
09431     
09432     A0 a0;
09433     A1 a1;
09434     A2 a2;
09435     A3 a3;
09436     A4 a4;
09437     A5 a5;
09438     A6 a6;
09439     A7 a7;
09440     A8 a8;
09441     A9 a9;
09442 };
09443 
09444 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
09445 inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& t)
09446 { return t.template get<N>(); }
09447 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
09448 inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> const& t)
09449 { return t.template get<N>(); }
09450 
09451 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
09452 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> {
09453     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> value_type;
09454     tuple() {}
09455     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) :
09456         a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10) {}
09457     tuple(msgpack::object const& o) { o.convert(*this); }
09458     template <int N> typename tuple_element<value_type, N>::reference get()
09459         { return tuple_element<value_type, N>(*this).get(); }
09460     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09461         { return const_tuple_element<value_type, N>(*this).get(); }
09462     
09463     A0 a0;
09464     A1 a1;
09465     A2 a2;
09466     A3 a3;
09467     A4 a4;
09468     A5 a5;
09469     A6 a6;
09470     A7 a7;
09471     A8 a8;
09472     A9 a9;
09473     A10 a10;
09474 };
09475 
09476 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>
09477 inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& t)
09478 { return t.template get<N>(); }
09479 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>
09480 inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> const& t)
09481 { return t.template get<N>(); }
09482 
09483 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
09484 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> {
09485     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> value_type;
09486     tuple() {}
09487     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) :
09488         a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11) {}
09489     tuple(msgpack::object const& o) { o.convert(*this); }
09490     template <int N> typename tuple_element<value_type, N>::reference get()
09491         { return tuple_element<value_type, N>(*this).get(); }
09492     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09493         { return const_tuple_element<value_type, N>(*this).get(); }
09494     
09495     A0 a0;
09496     A1 a1;
09497     A2 a2;
09498     A3 a3;
09499     A4 a4;
09500     A5 a5;
09501     A6 a6;
09502     A7 a7;
09503     A8 a8;
09504     A9 a9;
09505     A10 a10;
09506     A11 a11;
09507 };
09508 
09509 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>
09510 inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& t)
09511 { return t.template get<N>(); }
09512 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>
09513 inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> const& t)
09514 { return t.template get<N>(); }
09515 
09516 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
09517 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> {
09518     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> value_type;
09519     tuple() {}
09520     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) :
09521         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) {}
09522     tuple(msgpack::object const& o) { o.convert(*this); }
09523     template <int N> typename tuple_element<value_type, N>::reference get()
09524         { return tuple_element<value_type, N>(*this).get(); }
09525     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09526         { return const_tuple_element<value_type, N>(*this).get(); }
09527     
09528     A0 a0;
09529     A1 a1;
09530     A2 a2;
09531     A3 a3;
09532     A4 a4;
09533     A5 a5;
09534     A6 a6;
09535     A7 a7;
09536     A8 a8;
09537     A9 a9;
09538     A10 a10;
09539     A11 a11;
09540     A12 a12;
09541 };
09542 
09543 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>
09544 inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& t)
09545 { return t.template get<N>(); }
09546 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>
09547 inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> const& t)
09548 { return t.template get<N>(); }
09549 
09550 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
09551 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> {
09552     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> value_type;
09553     tuple() {}
09554     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) :
09555         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) {}
09556     tuple(msgpack::object const& o) { o.convert(*this); }
09557     template <int N> typename tuple_element<value_type, N>::reference get()
09558         { return tuple_element<value_type, N>(*this).get(); }
09559     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09560         { return const_tuple_element<value_type, N>(*this).get(); }
09561     
09562     A0 a0;
09563     A1 a1;
09564     A2 a2;
09565     A3 a3;
09566     A4 a4;
09567     A5 a5;
09568     A6 a6;
09569     A7 a7;
09570     A8 a8;
09571     A9 a9;
09572     A10 a10;
09573     A11 a11;
09574     A12 a12;
09575     A13 a13;
09576 };
09577 
09578 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>
09579 inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& t)
09580 { return t.template get<N>(); }
09581 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>
09582 inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> const& t)
09583 { return t.template get<N>(); }
09584 
09585 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
09586 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> {
09587     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> value_type;
09588     tuple() {}
09589     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) :
09590         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) {}
09591     tuple(msgpack::object const& o) { o.convert(*this); }
09592     template <int N> typename tuple_element<value_type, N>::reference get()
09593         { return tuple_element<value_type, N>(*this).get(); }
09594     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09595         { return const_tuple_element<value_type, N>(*this).get(); }
09596     
09597     A0 a0;
09598     A1 a1;
09599     A2 a2;
09600     A3 a3;
09601     A4 a4;
09602     A5 a5;
09603     A6 a6;
09604     A7 a7;
09605     A8 a8;
09606     A9 a9;
09607     A10 a10;
09608     A11 a11;
09609     A12 a12;
09610     A13 a13;
09611     A14 a14;
09612 };
09613 
09614 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>
09615 inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& t)
09616 { return t.template get<N>(); }
09617 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>
09618 inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> const& t)
09619 { return t.template get<N>(); }
09620 
09621 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
09622 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> {
09623     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> value_type;
09624     tuple() {}
09625     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) :
09626         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) {}
09627     tuple(msgpack::object const& o) { o.convert(*this); }
09628     template <int N> typename tuple_element<value_type, N>::reference get()
09629         { return tuple_element<value_type, N>(*this).get(); }
09630     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09631         { return const_tuple_element<value_type, N>(*this).get(); }
09632     
09633     A0 a0;
09634     A1 a1;
09635     A2 a2;
09636     A3 a3;
09637     A4 a4;
09638     A5 a5;
09639     A6 a6;
09640     A7 a7;
09641     A8 a8;
09642     A9 a9;
09643     A10 a10;
09644     A11 a11;
09645     A12 a12;
09646     A13 a13;
09647     A14 a14;
09648     A15 a15;
09649 };
09650 
09651 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>
09652 inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& t)
09653 { return t.template get<N>(); }
09654 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>
09655 inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> const& t)
09656 { return t.template get<N>(); }
09657 
09658 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
09659 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> {
09660     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> value_type;
09661     tuple() {}
09662     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) :
09663         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) {}
09664     tuple(msgpack::object const& o) { o.convert(*this); }
09665     template <int N> typename tuple_element<value_type, N>::reference get()
09666         { return tuple_element<value_type, N>(*this).get(); }
09667     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09668         { return const_tuple_element<value_type, N>(*this).get(); }
09669     
09670     A0 a0;
09671     A1 a1;
09672     A2 a2;
09673     A3 a3;
09674     A4 a4;
09675     A5 a5;
09676     A6 a6;
09677     A7 a7;
09678     A8 a8;
09679     A9 a9;
09680     A10 a10;
09681     A11 a11;
09682     A12 a12;
09683     A13 a13;
09684     A14 a14;
09685     A15 a15;
09686     A16 a16;
09687 };
09688 
09689 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>
09690 inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& t)
09691 { return t.template get<N>(); }
09692 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>
09693 inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> const& t)
09694 { return t.template get<N>(); }
09695 
09696 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
09697 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> {
09698     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> value_type;
09699     tuple() {}
09700     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) :
09701         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) {}
09702     tuple(msgpack::object const& o) { o.convert(*this); }
09703     template <int N> typename tuple_element<value_type, N>::reference get()
09704         { return tuple_element<value_type, N>(*this).get(); }
09705     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09706         { return const_tuple_element<value_type, N>(*this).get(); }
09707     
09708     A0 a0;
09709     A1 a1;
09710     A2 a2;
09711     A3 a3;
09712     A4 a4;
09713     A5 a5;
09714     A6 a6;
09715     A7 a7;
09716     A8 a8;
09717     A9 a9;
09718     A10 a10;
09719     A11 a11;
09720     A12 a12;
09721     A13 a13;
09722     A14 a14;
09723     A15 a15;
09724     A16 a16;
09725     A17 a17;
09726 };
09727 
09728 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>
09729 inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& t)
09730 { return t.template get<N>(); }
09731 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>
09732 inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> const& t)
09733 { return t.template get<N>(); }
09734 
09735 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
09736 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> {
09737     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> value_type;
09738     tuple() {}
09739     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) :
09740         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) {}
09741     tuple(msgpack::object const& o) { o.convert(*this); }
09742     template <int N> typename tuple_element<value_type, N>::reference get()
09743         { return tuple_element<value_type, N>(*this).get(); }
09744     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09745         { return const_tuple_element<value_type, N>(*this).get(); }
09746     
09747     A0 a0;
09748     A1 a1;
09749     A2 a2;
09750     A3 a3;
09751     A4 a4;
09752     A5 a5;
09753     A6 a6;
09754     A7 a7;
09755     A8 a8;
09756     A9 a9;
09757     A10 a10;
09758     A11 a11;
09759     A12 a12;
09760     A13 a13;
09761     A14 a14;
09762     A15 a15;
09763     A16 a16;
09764     A17 a17;
09765     A18 a18;
09766 };
09767 
09768 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>
09769 inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& t)
09770 { return t.template get<N>(); }
09771 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>
09772 inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> const& t)
09773 { return t.template get<N>(); }
09774 
09775 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
09776 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> {
09777     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> value_type;
09778     tuple() {}
09779     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) :
09780         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) {}
09781     tuple(msgpack::object const& o) { o.convert(*this); }
09782     template <int N> typename tuple_element<value_type, N>::reference get()
09783         { return tuple_element<value_type, N>(*this).get(); }
09784     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09785         { return const_tuple_element<value_type, N>(*this).get(); }
09786     
09787     A0 a0;
09788     A1 a1;
09789     A2 a2;
09790     A3 a3;
09791     A4 a4;
09792     A5 a5;
09793     A6 a6;
09794     A7 a7;
09795     A8 a8;
09796     A9 a9;
09797     A10 a10;
09798     A11 a11;
09799     A12 a12;
09800     A13 a13;
09801     A14 a14;
09802     A15 a15;
09803     A16 a16;
09804     A17 a17;
09805     A18 a18;
09806     A19 a19;
09807 };
09808 
09809 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>
09810 inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& t)
09811 { return t.template get<N>(); }
09812 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>
09813 inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> const& t)
09814 { return t.template get<N>(); }
09815 
09816 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
09817 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> {
09818     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> value_type;
09819     tuple() {}
09820     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) :
09821         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) {}
09822     tuple(msgpack::object const& o) { o.convert(*this); }
09823     template <int N> typename tuple_element<value_type, N>::reference get()
09824         { return tuple_element<value_type, N>(*this).get(); }
09825     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09826         { return const_tuple_element<value_type, N>(*this).get(); }
09827     
09828     A0 a0;
09829     A1 a1;
09830     A2 a2;
09831     A3 a3;
09832     A4 a4;
09833     A5 a5;
09834     A6 a6;
09835     A7 a7;
09836     A8 a8;
09837     A9 a9;
09838     A10 a10;
09839     A11 a11;
09840     A12 a12;
09841     A13 a13;
09842     A14 a14;
09843     A15 a15;
09844     A16 a16;
09845     A17 a17;
09846     A18 a18;
09847     A19 a19;
09848     A20 a20;
09849 };
09850 
09851 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>
09852 inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& t)
09853 { return t.template get<N>(); }
09854 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>
09855 inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> const& t)
09856 { return t.template get<N>(); }
09857 
09858 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
09859 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> {
09860     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> value_type;
09861     tuple() {}
09862     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) :
09863         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) {}
09864     tuple(msgpack::object const& o) { o.convert(*this); }
09865     template <int N> typename tuple_element<value_type, N>::reference get()
09866         { return tuple_element<value_type, N>(*this).get(); }
09867     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09868         { return const_tuple_element<value_type, N>(*this).get(); }
09869     
09870     A0 a0;
09871     A1 a1;
09872     A2 a2;
09873     A3 a3;
09874     A4 a4;
09875     A5 a5;
09876     A6 a6;
09877     A7 a7;
09878     A8 a8;
09879     A9 a9;
09880     A10 a10;
09881     A11 a11;
09882     A12 a12;
09883     A13 a13;
09884     A14 a14;
09885     A15 a15;
09886     A16 a16;
09887     A17 a17;
09888     A18 a18;
09889     A19 a19;
09890     A20 a20;
09891     A21 a21;
09892 };
09893 
09894 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>
09895 inline typename type::tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, N>::reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& t)
09896 { return t.template get<N>(); }
09897 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>
09898 inline typename type::const_tuple_element<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>, N>::const_reference get(type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> const& t)
09899 { return t.template get<N>(); }
09900 
09901 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
09902 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> {
09903     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22> value_type;
09904     tuple() {}
09905     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) :
09906         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) {}
09907     tuple(msgpack::object const& o) { o.convert(*this); }
09908     template <int N> typename tuple_element<value_type, N>::reference get()
09909         { return tuple_element<value_type, N>(*this).get(); }
09910     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09911         { return const_tuple_element<value_type, N>(*this).get(); }
09912     
09913     A0 a0;
09914     A1 a1;
09915     A2 a2;
09916     A3 a3;
09917     A4 a4;
09918     A5 a5;
09919     A6 a6;
09920     A7 a7;
09921     A8 a8;
09922     A9 a9;
09923     A10 a10;
09924     A11 a11;
09925     A12 a12;
09926     A13 a13;
09927     A14 a14;
09928     A15 a15;
09929     A16 a16;
09930     A17 a17;
09931     A18 a18;
09932     A19 a19;
09933     A20 a20;
09934     A21 a21;
09935     A22 a22;
09936 };
09937 
09938 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>
09939 inline typename type::tuple_element<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>, N>::reference get(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>& t)
09940 { return t.template get<N>(); }
09941 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>
09942 inline typename type::const_tuple_element<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>, N>::const_reference get(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> const& t)
09943 { return t.template get<N>(); }
09944 
09945 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
09946 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> {
09947     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23> value_type;
09948     tuple() {}
09949     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) :
09950         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) {}
09951     tuple(msgpack::object const& o) { o.convert(*this); }
09952     template <int N> typename tuple_element<value_type, N>::reference get()
09953         { return tuple_element<value_type, N>(*this).get(); }
09954     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
09955         { return const_tuple_element<value_type, N>(*this).get(); }
09956     
09957     A0 a0;
09958     A1 a1;
09959     A2 a2;
09960     A3 a3;
09961     A4 a4;
09962     A5 a5;
09963     A6 a6;
09964     A7 a7;
09965     A8 a8;
09966     A9 a9;
09967     A10 a10;
09968     A11 a11;
09969     A12 a12;
09970     A13 a13;
09971     A14 a14;
09972     A15 a15;
09973     A16 a16;
09974     A17 a17;
09975     A18 a18;
09976     A19 a19;
09977     A20 a20;
09978     A21 a21;
09979     A22 a22;
09980     A23 a23;
09981 };
09982 
09983 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>
09984 inline typename type::tuple_element<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>, N>::reference get(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>& t)
09985 { return t.template get<N>(); }
09986 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>
09987 inline typename type::const_tuple_element<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>, N>::const_reference get(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> const& t)
09988 { return t.template get<N>(); }
09989 
09990 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
09991 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> {
09992     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> value_type;
09993     tuple() {}
09994     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) :
09995         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) {}
09996     tuple(msgpack::object const& o) { o.convert(*this); }
09997     template <int N> typename tuple_element<value_type, N>::reference get()
09998         { return tuple_element<value_type, N>(*this).get(); }
09999     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
10000         { return const_tuple_element<value_type, N>(*this).get(); }
10001     
10002     A0 a0;
10003     A1 a1;
10004     A2 a2;
10005     A3 a3;
10006     A4 a4;
10007     A5 a5;
10008     A6 a6;
10009     A7 a7;
10010     A8 a8;
10011     A9 a9;
10012     A10 a10;
10013     A11 a11;
10014     A12 a12;
10015     A13 a13;
10016     A14 a14;
10017     A15 a15;
10018     A16 a16;
10019     A17 a17;
10020     A18 a18;
10021     A19 a19;
10022     A20 a20;
10023     A21 a21;
10024     A22 a22;
10025     A23 a23;
10026     A24 a24;
10027 };
10028 
10029 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
10030 inline typename type::tuple_element<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>, N>::reference get(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>& t)
10031 { return t.template get<N>(); }
10032 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
10033 inline typename type::const_tuple_element<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>, N>::const_reference get(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> const& t)
10034 { return t.template get<N>(); }
10035 
10036 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
10037 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> {
10038     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> value_type;
10039     tuple() {}
10040     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) :
10041         a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25) {}
10042     tuple(msgpack::object const& o) { o.convert(*this); }
10043     template <int N> typename tuple_element<value_type, N>::reference get()
10044         { return tuple_element<value_type, N>(*this).get(); }
10045     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
10046         { return const_tuple_element<value_type, N>(*this).get(); }
10047     
10048     A0 a0;
10049     A1 a1;
10050     A2 a2;
10051     A3 a3;
10052     A4 a4;
10053     A5 a5;
10054     A6 a6;
10055     A7 a7;
10056     A8 a8;
10057     A9 a9;
10058     A10 a10;
10059     A11 a11;
10060     A12 a12;
10061     A13 a13;
10062     A14 a14;
10063     A15 a15;
10064     A16 a16;
10065     A17 a17;
10066     A18 a18;
10067     A19 a19;
10068     A20 a20;
10069     A21 a21;
10070     A22 a22;
10071     A23 a23;
10072     A24 a24;
10073     A25 a25;
10074 };
10075 
10076 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
10077 inline typename type::tuple_element<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>, N>::reference get(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>& t)
10078 { return t.template get<N>(); }
10079 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
10080 inline typename type::const_tuple_element<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>, N>::const_reference get(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> const& t)
10081 { return t.template get<N>(); }
10082 
10083 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
10084 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> {
10085     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> value_type;
10086     tuple() {}
10087     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) :
10088         a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26) {}
10089     tuple(msgpack::object const& o) { o.convert(*this); }
10090     template <int N> typename tuple_element<value_type, N>::reference get()
10091         { return tuple_element<value_type, N>(*this).get(); }
10092     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
10093         { return const_tuple_element<value_type, N>(*this).get(); }
10094     
10095     A0 a0;
10096     A1 a1;
10097     A2 a2;
10098     A3 a3;
10099     A4 a4;
10100     A5 a5;
10101     A6 a6;
10102     A7 a7;
10103     A8 a8;
10104     A9 a9;
10105     A10 a10;
10106     A11 a11;
10107     A12 a12;
10108     A13 a13;
10109     A14 a14;
10110     A15 a15;
10111     A16 a16;
10112     A17 a17;
10113     A18 a18;
10114     A19 a19;
10115     A20 a20;
10116     A21 a21;
10117     A22 a22;
10118     A23 a23;
10119     A24 a24;
10120     A25 a25;
10121     A26 a26;
10122 };
10123 
10124 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
10125 inline typename type::tuple_element<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>, N>::reference get(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>& t)
10126 { return t.template get<N>(); }
10127 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
10128 inline typename type::const_tuple_element<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>, N>::const_reference get(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> const& t)
10129 { return t.template get<N>(); }
10130 
10131 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
10132 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> {
10133     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> value_type;
10134     tuple() {}
10135     tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18, typename tuple_type<A19>::transparent_reference _a19, typename tuple_type<A20>::transparent_reference _a20, typename tuple_type<A21>::transparent_reference _a21, typename tuple_type<A22>::transparent_reference _a22, typename tuple_type<A23>::transparent_reference _a23, typename tuple_type<A24>::transparent_reference _a24, typename tuple_type<A25>::transparent_reference _a25, typename tuple_type<A26>::transparent_reference _a26, typename tuple_type<A27>::transparent_reference _a27) :
10136         a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27) {}
10137     tuple(msgpack::object const& o) { o.convert(*this); }
10138     template <int N> typename tuple_element<value_type, N>::reference get()
10139         { return tuple_element<value_type, N>(*this).get(); }
10140     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
10141         { return const_tuple_element<value_type, N>(*this).get(); }
10142     
10143     A0 a0;
10144     A1 a1;
10145     A2 a2;
10146     A3 a3;
10147     A4 a4;
10148     A5 a5;
10149     A6 a6;
10150     A7 a7;
10151     A8 a8;
10152     A9 a9;
10153     A10 a10;
10154     A11 a11;
10155     A12 a12;
10156     A13 a13;
10157     A14 a14;
10158     A15 a15;
10159     A16 a16;
10160     A17 a17;
10161     A18 a18;
10162     A19 a19;
10163     A20 a20;
10164     A21 a21;
10165     A22 a22;
10166     A23 a23;
10167     A24 a24;
10168     A25 a25;
10169     A26 a26;
10170     A27 a27;
10171 };
10172 
10173 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
10174 inline typename type::tuple_element<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>, N>::reference get(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>& t)
10175 { return t.template get<N>(); }
10176 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
10177 inline typename type::const_tuple_element<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>, N>::const_reference get(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> const& t)
10178 { return t.template get<N>(); }
10179 
10180 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
10181 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> {
10182     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> value_type;
10183     tuple() {}
10184     tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18, typename tuple_type<A19>::transparent_reference _a19, typename tuple_type<A20>::transparent_reference _a20, typename tuple_type<A21>::transparent_reference _a21, typename tuple_type<A22>::transparent_reference _a22, typename tuple_type<A23>::transparent_reference _a23, typename tuple_type<A24>::transparent_reference _a24, typename tuple_type<A25>::transparent_reference _a25, typename tuple_type<A26>::transparent_reference _a26, typename tuple_type<A27>::transparent_reference _a27, typename tuple_type<A28>::transparent_reference _a28) :
10185         a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27), a28(_a28) {}
10186     tuple(msgpack::object const& o) { o.convert(*this); }
10187     template <int N> typename tuple_element<value_type, N>::reference get()
10188         { return tuple_element<value_type, N>(*this).get(); }
10189     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
10190         { return const_tuple_element<value_type, N>(*this).get(); }
10191     
10192     A0 a0;
10193     A1 a1;
10194     A2 a2;
10195     A3 a3;
10196     A4 a4;
10197     A5 a5;
10198     A6 a6;
10199     A7 a7;
10200     A8 a8;
10201     A9 a9;
10202     A10 a10;
10203     A11 a11;
10204     A12 a12;
10205     A13 a13;
10206     A14 a14;
10207     A15 a15;
10208     A16 a16;
10209     A17 a17;
10210     A18 a18;
10211     A19 a19;
10212     A20 a20;
10213     A21 a21;
10214     A22 a22;
10215     A23 a23;
10216     A24 a24;
10217     A25 a25;
10218     A26 a26;
10219     A27 a27;
10220     A28 a28;
10221 };
10222 
10223 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
10224 inline typename type::tuple_element<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>, N>::reference get(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>& t)
10225 { return t.template get<N>(); }
10226 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
10227 inline typename type::const_tuple_element<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>, N>::const_reference get(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> const& t)
10228 { return t.template get<N>(); }
10229 
10230 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
10231 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> {
10232     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> value_type;
10233     tuple() {}
10234     tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18, typename tuple_type<A19>::transparent_reference _a19, typename tuple_type<A20>::transparent_reference _a20, typename tuple_type<A21>::transparent_reference _a21, typename tuple_type<A22>::transparent_reference _a22, typename tuple_type<A23>::transparent_reference _a23, typename tuple_type<A24>::transparent_reference _a24, typename tuple_type<A25>::transparent_reference _a25, typename tuple_type<A26>::transparent_reference _a26, typename tuple_type<A27>::transparent_reference _a27, typename tuple_type<A28>::transparent_reference _a28, typename tuple_type<A29>::transparent_reference _a29) :
10235         a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27), a28(_a28), a29(_a29) {}
10236     tuple(msgpack::object const& o) { o.convert(*this); }
10237     template <int N> typename tuple_element<value_type, N>::reference get()
10238         { return tuple_element<value_type, N>(*this).get(); }
10239     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
10240         { return const_tuple_element<value_type, N>(*this).get(); }
10241     
10242     A0 a0;
10243     A1 a1;
10244     A2 a2;
10245     A3 a3;
10246     A4 a4;
10247     A5 a5;
10248     A6 a6;
10249     A7 a7;
10250     A8 a8;
10251     A9 a9;
10252     A10 a10;
10253     A11 a11;
10254     A12 a12;
10255     A13 a13;
10256     A14 a14;
10257     A15 a15;
10258     A16 a16;
10259     A17 a17;
10260     A18 a18;
10261     A19 a19;
10262     A20 a20;
10263     A21 a21;
10264     A22 a22;
10265     A23 a23;
10266     A24 a24;
10267     A25 a25;
10268     A26 a26;
10269     A27 a27;
10270     A28 a28;
10271     A29 a29;
10272 };
10273 
10274 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
10275 inline typename type::tuple_element<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>, N>::reference get(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>& t)
10276 { return t.template get<N>(); }
10277 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
10278 inline typename type::const_tuple_element<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>, N>::const_reference get(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> const& t)
10279 { return t.template get<N>(); }
10280 
10281 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
10282 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> {
10283     typedef tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> value_type;
10284     tuple() {}
10285     tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18, typename tuple_type<A19>::transparent_reference _a19, typename tuple_type<A20>::transparent_reference _a20, typename tuple_type<A21>::transparent_reference _a21, typename tuple_type<A22>::transparent_reference _a22, typename tuple_type<A23>::transparent_reference _a23, typename tuple_type<A24>::transparent_reference _a24, typename tuple_type<A25>::transparent_reference _a25, typename tuple_type<A26>::transparent_reference _a26, typename tuple_type<A27>::transparent_reference _a27, typename tuple_type<A28>::transparent_reference _a28, typename tuple_type<A29>::transparent_reference _a29, typename tuple_type<A30>::transparent_reference _a30) :
10286         a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27), a28(_a28), a29(_a29), a30(_a30) {}
10287     tuple(msgpack::object const& o) { o.convert(*this); }
10288     template <int N> typename tuple_element<value_type, N>::reference get()
10289         { return tuple_element<value_type, N>(*this).get(); }
10290     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
10291         { return const_tuple_element<value_type, N>(*this).get(); }
10292     
10293     A0 a0;
10294     A1 a1;
10295     A2 a2;
10296     A3 a3;
10297     A4 a4;
10298     A5 a5;
10299     A6 a6;
10300     A7 a7;
10301     A8 a8;
10302     A9 a9;
10303     A10 a10;
10304     A11 a11;
10305     A12 a12;
10306     A13 a13;
10307     A14 a14;
10308     A15 a15;
10309     A16 a16;
10310     A17 a17;
10311     A18 a18;
10312     A19 a19;
10313     A20 a20;
10314     A21 a21;
10315     A22 a22;
10316     A23 a23;
10317     A24 a24;
10318     A25 a25;
10319     A26 a26;
10320     A27 a27;
10321     A28 a28;
10322     A29 a29;
10323     A30 a30;
10324 };
10325 
10326 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
10327 inline typename type::tuple_element<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>, N>::reference get(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>& t)
10328 { return t.template get<N>(); }
10329 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
10330 inline typename type::const_tuple_element<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>, N>::const_reference get(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> const& t)
10331 { return t.template get<N>(); }
10332 
10333 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
10334 struct tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> {
10335     typedef tuple<A0, A1, A2, A3, A4, A5, A6, 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> value_type;
10336     tuple() {}
10337     tuple(typename tuple_type<A0>::transparent_reference _a0, typename tuple_type<A1>::transparent_reference _a1, typename tuple_type<A2>::transparent_reference _a2, typename tuple_type<A3>::transparent_reference _a3, typename tuple_type<A4>::transparent_reference _a4, typename tuple_type<A5>::transparent_reference _a5, typename tuple_type<A6>::transparent_reference _a6, typename tuple_type<A7>::transparent_reference _a7, typename tuple_type<A8>::transparent_reference _a8, typename tuple_type<A9>::transparent_reference _a9, typename tuple_type<A10>::transparent_reference _a10, typename tuple_type<A11>::transparent_reference _a11, typename tuple_type<A12>::transparent_reference _a12, typename tuple_type<A13>::transparent_reference _a13, typename tuple_type<A14>::transparent_reference _a14, typename tuple_type<A15>::transparent_reference _a15, typename tuple_type<A16>::transparent_reference _a16, typename tuple_type<A17>::transparent_reference _a17, typename tuple_type<A18>::transparent_reference _a18, typename tuple_type<A19>::transparent_reference _a19, typename tuple_type<A20>::transparent_reference _a20, typename tuple_type<A21>::transparent_reference _a21, typename tuple_type<A22>::transparent_reference _a22, typename tuple_type<A23>::transparent_reference _a23, typename tuple_type<A24>::transparent_reference _a24, typename tuple_type<A25>::transparent_reference _a25, typename tuple_type<A26>::transparent_reference _a26, typename tuple_type<A27>::transparent_reference _a27, typename tuple_type<A28>::transparent_reference _a28, typename tuple_type<A29>::transparent_reference _a29, typename tuple_type<A30>::transparent_reference _a30, typename tuple_type<A31>::transparent_reference _a31) :
10338         a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11), a12(_a12), a13(_a13), a14(_a14), a15(_a15), a16(_a16), a17(_a17), a18(_a18), a19(_a19), a20(_a20), a21(_a21), a22(_a22), a23(_a23), a24(_a24), a25(_a25), a26(_a26), a27(_a27), a28(_a28), a29(_a29), a30(_a30), a31(_a31) {}
10339     tuple(msgpack::object const& o) { o.convert(*this); }
10340     template <int N> typename tuple_element<value_type, N>::reference get()
10341         { return tuple_element<value_type, N>(*this).get(); }
10342     template <int N> typename const_tuple_element<value_type, N>::const_reference get() const
10343         { return const_tuple_element<value_type, N>(*this).get(); }
10344     
10345     A0 a0;
10346     A1 a1;
10347     A2 a2;
10348     A3 a3;
10349     A4 a4;
10350     A5 a5;
10351     A6 a6;
10352     A7 a7;
10353     A8 a8;
10354     A9 a9;
10355     A10 a10;
10356     A11 a11;
10357     A12 a12;
10358     A13 a13;
10359     A14 a14;
10360     A15 a15;
10361     A16 a16;
10362     A17 a17;
10363     A18 a18;
10364     A19 a19;
10365     A20 a20;
10366     A21 a21;
10367     A22 a22;
10368     A23 a23;
10369     A24 a24;
10370     A25 a25;
10371     A26 a26;
10372     A27 a27;
10373     A28 a28;
10374     A29 a29;
10375     A30 a30;
10376     A31 a31;
10377 };
10378 
10379 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
10380 inline typename type::tuple_element<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>, N>::reference get(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>& t)
10381 { return t.template get<N>(); }
10382 template <int N, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
10383 inline typename type::const_tuple_element<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>, N>::const_reference get(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> const& t)
10384 { return t.template get<N>(); }
10385 
10386 /// @endcond
10387 
10388 inline tuple<> make_tuple()
10389 {
10390     return tuple<>();
10391 }
10392 
10393 /// @cond
10394 
10395 template <typename A0>
10396 inline tuple<A0> make_tuple(typename tuple_type<A0>::transparent_reference a0)
10397 {
10398     return tuple<A0>(a0);
10399 }
10400 
10401 template <typename A0, typename A1>
10402 inline tuple<A0, A1> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1)
10403 {
10404     return tuple<A0, A1>(a0, a1);
10405 }
10406 
10407 template <typename A0, typename A1, typename A2>
10408 inline tuple<A0, A1, A2> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2)
10409 {
10410     return tuple<A0, A1, A2>(a0, a1, a2);
10411 }
10412 
10413 template <typename A0, typename A1, typename A2, typename A3>
10414 inline tuple<A0, A1, A2, A3> 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)
10415 {
10416     return tuple<A0, A1, A2, A3>(a0, a1, a2, a3);
10417 }
10418 
10419 template <typename A0, typename A1, typename A2, typename A3, typename A4>
10420 inline tuple<A0, A1, A2, A3, A4> 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)
10421 {
10422     return tuple<A0, A1, A2, A3, A4>(a0, a1, a2, a3, a4);
10423 }
10424 
10425 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
10426 inline tuple<A0, A1, A2, A3, A4, A5> 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)
10427 {
10428     return tuple<A0, A1, A2, A3, A4, A5>(a0, a1, a2, a3, a4, a5);
10429 }
10430 
10431 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
10432 inline tuple<A0, A1, A2, A3, A4, A5, A6> 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)
10433 {
10434     return tuple<A0, A1, A2, A3, A4, A5, A6>(a0, a1, a2, a3, a4, a5, a6);
10435 }
10436 
10437 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
10438 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7> 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)
10439 {
10440     return tuple<A0, A1, A2, A3, A4, A5, A6, A7>(a0, a1, a2, a3, a4, a5, a6, a7);
10441 }
10442 
10443 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
10444 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> 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)
10445 {
10446     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>(a0, a1, a2, a3, a4, a5, a6, a7, a8);
10447 }
10448 
10449 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
10450 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> 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)
10451 {
10452     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
10453 }
10454 
10455 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
10456 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> 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)
10457 {
10458     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
10459 }
10460 
10461 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
10462 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> 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)
10463 {
10464     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
10465 }
10466 
10467 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
10468 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> 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)
10469 {
10470     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12);
10471 }
10472 
10473 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
10474 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> 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)
10475 {
10476     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13);
10477 }
10478 
10479 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
10480 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> 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)
10481 {
10482     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14);
10483 }
10484 
10485 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
10486 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> 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)
10487 {
10488     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);
10489 }
10490 
10491 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
10492 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> 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)
10493 {
10494     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16);
10495 }
10496 
10497 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
10498 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> 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)
10499 {
10500     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17);
10501 }
10502 
10503 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
10504 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> 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)
10505 {
10506     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18);
10507 }
10508 
10509 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
10510 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> 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)
10511 {
10512     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19);
10513 }
10514 
10515 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
10516 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> 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)
10517 {
10518     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
10519 }
10520 
10521 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
10522 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21> 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)
10523 {
10524     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21);
10525 }
10526 
10527 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
10528 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> 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)
10529 {
10530     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22);
10531 }
10532 
10533 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
10534 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> 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)
10535 {
10536     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23);
10537 }
10538 
10539 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
10540 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> 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)
10541 {
10542     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24);
10543 }
10544 
10545 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
10546 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25)
10547 {
10548     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25);
10549 }
10550 
10551 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
10552 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26)
10553 {
10554     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26);
10555 }
10556 
10557 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
10558 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26, typename tuple_type<A27>::transparent_reference a27)
10559 {
10560     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27);
10561 }
10562 
10563 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
10564 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26, typename tuple_type<A27>::transparent_reference a27, typename tuple_type<A28>::transparent_reference a28)
10565 {
10566     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28);
10567 }
10568 
10569 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
10570 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26, typename tuple_type<A27>::transparent_reference a27, typename tuple_type<A28>::transparent_reference a28, typename tuple_type<A29>::transparent_reference a29)
10571 {
10572     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29);
10573 }
10574 
10575 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
10576 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26, typename tuple_type<A27>::transparent_reference a27, typename tuple_type<A28>::transparent_reference a28, typename tuple_type<A29>::transparent_reference a29, typename tuple_type<A30>::transparent_reference a30)
10577 {
10578     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30);
10579 }
10580 
10581 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30, typename A31>
10582 inline tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31> make_tuple(typename tuple_type<A0>::transparent_reference a0, typename tuple_type<A1>::transparent_reference a1, typename tuple_type<A2>::transparent_reference a2, typename tuple_type<A3>::transparent_reference a3, typename tuple_type<A4>::transparent_reference a4, typename tuple_type<A5>::transparent_reference a5, typename tuple_type<A6>::transparent_reference a6, typename tuple_type<A7>::transparent_reference a7, typename tuple_type<A8>::transparent_reference a8, typename tuple_type<A9>::transparent_reference a9, typename tuple_type<A10>::transparent_reference a10, typename tuple_type<A11>::transparent_reference a11, typename tuple_type<A12>::transparent_reference a12, typename tuple_type<A13>::transparent_reference a13, typename tuple_type<A14>::transparent_reference a14, typename tuple_type<A15>::transparent_reference a15, typename tuple_type<A16>::transparent_reference a16, typename tuple_type<A17>::transparent_reference a17, typename tuple_type<A18>::transparent_reference a18, typename tuple_type<A19>::transparent_reference a19, typename tuple_type<A20>::transparent_reference a20, typename tuple_type<A21>::transparent_reference a21, typename tuple_type<A22>::transparent_reference a22, typename tuple_type<A23>::transparent_reference a23, typename tuple_type<A24>::transparent_reference a24, typename tuple_type<A25>::transparent_reference a25, typename tuple_type<A26>::transparent_reference a26, typename tuple_type<A27>::transparent_reference a27, typename tuple_type<A28>::transparent_reference a28, typename tuple_type<A29>::transparent_reference a29, typename tuple_type<A30>::transparent_reference a30, typename tuple_type<A31>::transparent_reference a31)
10583 {
10584     return tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31>(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31);
10585 }
10586 
10587 /// @endcond
10588 
10589 }  // namespace type
10590 
10591 namespace adaptor {
10592 
10593 template <>
10594 struct convert<type::tuple<> > {
10595     msgpack::object const& operator()(
10596         msgpack::object const& o,
10597         type::tuple<>&) const {
10598         if(o.type != msgpack::type::ARRAY) {
10599             printf("throw msgpack::type_error()");
10600 //            throw msgpack::type_error();
10601         }
10602         return o;
10603     }
10604 };
10605 
10606 /// @cond
10607 
10608 template <typename A0>
10609 struct convert<type::tuple<A0> > {
10610     msgpack::object const& operator()(
10611         msgpack::object const& o,
10612         type::tuple<A0>& v) const {
10613         if(o.type != msgpack::type::ARRAY) { 
10614             printf("throw msgpack::type_error()");
10615 //            throw msgpack::type_error(); 
10616         }
10617         if(o.via.array.size < 1) { 
10618             printf("throw msgpack::type_error()");
10619 //            throw msgpack::type_error(); 
10620         }
10621         
10622         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10623         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10624         return o;
10625     }
10626 };
10627 
10628 template <typename A0, typename A1>
10629 struct convert<type::tuple<A0, A1> > {
10630     msgpack::object const& operator()(
10631         msgpack::object const& o,
10632         type::tuple<A0, A1>& v) const {
10633         if(o.type != msgpack::type::ARRAY) { 
10634             printf("throw msgpack::type_error()");
10635 //            throw msgpack::type_error(); 
10636         }
10637         if(o.via.array.size < 2) { 
10638             printf("throw msgpack::type_error()");
10639 //            throw msgpack::type_error(); 
10640         }
10641         
10642         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10643         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10644         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10645         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10646         return o;
10647     }
10648 };
10649 
10650 template <typename A0, typename A1, typename A2>
10651 struct convert<type::tuple<A0, A1, A2> > {
10652     msgpack::object const& operator()(
10653         msgpack::object const& o,
10654         type::tuple<A0, A1, A2>& v) const {
10655         if(o.type != msgpack::type::ARRAY) { 
10656             printf("throw msgpack::type_error()");
10657 //            throw msgpack::type_error(); 
10658         }
10659         if(o.via.array.size < 3) { 
10660             printf("throw msgpack::type_error()");
10661 //            throw msgpack::type_error(); 
10662         }
10663         
10664         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10665         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10666         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10667         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10668         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10669         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10670         return o;
10671     }
10672 };
10673 
10674 template <typename A0, typename A1, typename A2, typename A3>
10675 struct convert<type::tuple<A0, A1, A2, A3> > {
10676     msgpack::object const& operator()(
10677         msgpack::object const& o,
10678         type::tuple<A0, A1, A2, A3>& v) const {
10679         if(o.type != msgpack::type::ARRAY) { 
10680             printf("throw msgpack::type_error()");
10681 //            throw msgpack::type_error(); 
10682         }
10683         if(o.via.array.size < 4) { 
10684             printf("throw msgpack::type_error()");
10685 //            throw msgpack::type_error(); 
10686         }
10687         
10688         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10689         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10690         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10691         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10692         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10693         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10694         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10695         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10696         return o;
10697     }
10698 };
10699 
10700 template <typename A0, typename A1, typename A2, typename A3, typename A4>
10701 struct convert<type::tuple<A0, A1, A2, A3, A4> > {
10702     msgpack::object const& operator()(
10703         msgpack::object const& o,
10704         type::tuple<A0, A1, A2, A3, A4>& v) const {
10705         if(o.type != msgpack::type::ARRAY) { 
10706             printf("throw msgpack::type_error()");
10707 //            throw msgpack::type_error(); 
10708         }
10709         if(o.via.array.size < 5) { 
10710             printf("throw msgpack::type_error()");
10711 //            throw msgpack::type_error(); 
10712         }
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         return o;
10725     }
10726 };
10727 
10728 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
10729 struct convert<type::tuple<A0, A1, A2, A3, A4, A5> > {
10730     msgpack::object const& operator()(
10731         msgpack::object const& o,
10732         type::tuple<A0, A1, A2, A3, A4, A5>& v) const {
10733         if(o.type != msgpack::type::ARRAY) { 
10734             printf("throw msgpack::type_error()");
10735 //            throw msgpack::type_error(); 
10736         }
10737         if(o.via.array.size < 6) { 
10738             printf("throw msgpack::type_error()");
10739 //            throw msgpack::type_error(); 
10740         }
10741         
10742         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10743         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10744         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10745         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10746         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10747         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10748         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10749         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10750         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10751         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10752         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10753         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10754         return o;
10755     }
10756 };
10757 
10758 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
10759 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6> > {
10760     msgpack::object const& operator()(
10761         msgpack::object const& o,
10762         type::tuple<A0, A1, A2, A3, A4, A5, A6>& v) const {
10763         if(o.type != msgpack::type::ARRAY) { 
10764             printf("throw msgpack::type_error()");
10765 //            throw msgpack::type_error(); 
10766         }
10767         if(o.via.array.size < 7) { 
10768             printf("throw msgpack::type_error()");
10769 //            throw msgpack::type_error(); 
10770         }
10771         
10772         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10773         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10774         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10775         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10776         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10777         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10778         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10779         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10780         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10781         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10782         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10783         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10784         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10785         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
10786         return o;
10787     }
10788 };
10789 
10790 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
10791 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7> > {
10792     msgpack::object const& operator()(
10793         msgpack::object const& o,
10794         type::tuple<A0, A1, A2, A3, A4, A5, A6, A7>& v) const {
10795         if(o.type != msgpack::type::ARRAY) { 
10796             printf("throw msgpack::type_error()");
10797 //            throw msgpack::type_error(); 
10798         }
10799         if(o.via.array.size < 8) { 
10800             printf("throw msgpack::type_error()");
10801 //            throw msgpack::type_error(); 
10802         }
10803         
10804         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10805         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10806         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10807         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10808         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10809         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10810         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10811         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10812         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10813         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10814         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10815         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10816         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10817         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
10818         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10819         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
10820         return o;
10821     }
10822 };
10823 
10824 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
10825 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> > {
10826     msgpack::object const& operator()(
10827         msgpack::object const& o,
10828         type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& v) const {
10829         if(o.type != msgpack::type::ARRAY) { 
10830             printf("throw msgpack::type_error()");
10831 //            throw msgpack::type_error(); 
10832         }
10833         if(o.via.array.size < 9) { 
10834             printf("throw msgpack::type_error()");
10835 //            throw msgpack::type_error(); 
10836         }
10837         
10838         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10839         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10840         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10841         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10842         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10843         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10844         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10845         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10846         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10847         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10848         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10849         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10850         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10851         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
10852         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10853         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
10854         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10855         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
10856         return o;
10857     }
10858 };
10859 
10860 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
10861 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> > {
10862     msgpack::object const& operator()(
10863         msgpack::object const& o,
10864         type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& v) const {
10865         if(o.type != msgpack::type::ARRAY) { 
10866             printf("throw msgpack::type_error()");
10867 //            throw msgpack::type_error(); 
10868         }
10869         if(o.via.array.size < 10) { 
10870             printf("throw msgpack::type_error()");
10871 //            throw msgpack::type_error(); 
10872         }
10873         
10874         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10875         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10876         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10877         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10878         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10879         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10880         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10881         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10882         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10883         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10884         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10885         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10886         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10887         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
10888         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10889         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
10890         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10891         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
10892         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10893         o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
10894         return o;
10895     }
10896 };
10897 
10898 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
10899 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> > {
10900     msgpack::object const& operator()(
10901         msgpack::object const& o,
10902         type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& v) const {
10903         if(o.type != msgpack::type::ARRAY) { 
10904             printf("throw msgpack::type_error()");
10905 //            throw msgpack::type_error(); 
10906         }
10907         if(o.via.array.size < 11) { 
10908             printf("throw msgpack::type_error()");
10909 //            throw msgpack::type_error(); 
10910         }
10911         
10912         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10913         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10914         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10915         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10916         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10917         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10918         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10919         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10920         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10921         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10922         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10923         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10924         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10925         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
10926         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10927         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
10928         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10929         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
10930         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10931         o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
10932         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10933         o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
10934         return o;
10935     }
10936 };
10937 
10938 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
10939 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> > {
10940     msgpack::object const& operator()(
10941         msgpack::object const& o,
10942         type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& v) const {
10943         if(o.type != msgpack::type::ARRAY) { 
10944             printf("throw msgpack::type_error()");
10945 //            throw msgpack::type_error(); 
10946         }
10947         if(o.via.array.size < 12) { 
10948             printf("throw msgpack::type_error()");
10949 //            throw msgpack::type_error(); 
10950         }
10951         
10952         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10953         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10954         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10955         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10956         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10957         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
10958         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10959         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
10960         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10961         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
10962         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10963         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
10964         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10965         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
10966         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10967         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
10968         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10969         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
10970         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10971         o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
10972         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10973         o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
10974         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10975         o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
10976         return o;
10977     }
10978 };
10979 
10980 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
10981 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> > {
10982     msgpack::object const& operator()(
10983         msgpack::object const& o,
10984         type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& v) const {
10985         if(o.type != msgpack::type::ARRAY) { 
10986             printf("throw msgpack::type_error()");
10987 //            throw msgpack::type_error(); 
10988         }
10989         if(o.via.array.size < 13) { 
10990             printf("throw msgpack::type_error()");
10991 //            throw msgpack::type_error(); 
10992         }
10993         
10994         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10995         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
10996         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10997         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
10998         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
10999         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11000         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11001         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11002         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11003         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11004         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11005         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11006         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11007         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11008         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11009         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11010         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11011         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11012         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11013         o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11014         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11015         o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11016         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11017         o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11018         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11019         o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11020         return o;
11021     }
11022 };
11023 
11024 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
11025 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> > {
11026     msgpack::object const& operator()(
11027         msgpack::object const& o,
11028         type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& v) const {
11029         if(o.type != msgpack::type::ARRAY) { 
11030             printf("throw msgpack::type_error()");
11031 //            throw msgpack::type_error(); 
11032         }
11033         if(o.via.array.size < 14) { 
11034             printf("throw msgpack::type_error()");
11035 //            throw msgpack::type_error(); 
11036         }
11037         
11038         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11039         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11040         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11041         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11042         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11043         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11044         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11045         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11046         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11047         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11048         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11049         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11050         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11051         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11052         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11053         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11054         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11055         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11056         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11057         o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11058         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11059         o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11060         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11061         o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11062         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11063         o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11064         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11065         o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11066         return o;
11067     }
11068 };
11069 
11070 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
11071 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> > {
11072     msgpack::object const& operator()(
11073         msgpack::object const& o,
11074         type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& v) const {
11075         if(o.type != msgpack::type::ARRAY) { 
11076             printf("throw msgpack::type_error()");
11077 //            throw msgpack::type_error(); 
11078         }
11079         if(o.via.array.size < 15) { 
11080             printf("throw msgpack::type_error()");
11081 //            throw msgpack::type_error(); 
11082         }
11083         
11084         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11085         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11086         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11087         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11088         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11089         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11090         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11091         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11092         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11093         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11094         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11095         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11096         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11097         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11098         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11099         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11100         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11101         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11102         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11103         o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11104         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11105         o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11106         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11107         o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11108         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11109         o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11110         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11111         o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11112         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11113         o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11114         return o;
11115     }
11116 };
11117 
11118 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
11119 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> > {
11120     msgpack::object const& operator()(
11121         msgpack::object const& o,
11122         type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& v) const {
11123         if(o.type != msgpack::type::ARRAY) { 
11124             printf("throw msgpack::type_error()");
11125 //            throw msgpack::type_error(); 
11126         }
11127         if(o.via.array.size < 16) { 
11128             printf("throw msgpack::type_error()");
11129 //            throw msgpack::type_error(); 
11130         }
11131         
11132         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11133         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11134         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11135         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11136         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11137         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11138         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11139         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11140         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11141         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11142         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11143         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11144         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11145         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11146         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11147         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11148         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11149         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11150         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11151         o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11152         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11153         o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11154         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11155         o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11156         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11157         o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11158         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11159         o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11160         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11161         o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11162         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11163         o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11164         return o;
11165     }
11166 };
11167 
11168 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
11169 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> > {
11170     msgpack::object const& operator()(
11171         msgpack::object const& o,
11172         type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& v) const {
11173         if(o.type != msgpack::type::ARRAY) { 
11174             printf("throw msgpack::type_error()");
11175 //            throw msgpack::type_error(); 
11176         }
11177         if(o.via.array.size < 17) { 
11178             printf("throw msgpack::type_error()");
11179 //            throw msgpack::type_error(); 
11180         }
11181         
11182         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11183         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11184         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11185         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11186         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11187         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11188         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11189         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11190         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11191         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11192         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11193         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11194         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11195         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11196         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11197         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11198         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11199         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11200         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11201         o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11202         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11203         o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11204         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11205         o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11206         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11207         o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11208         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11209         o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11210         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11211         o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11212         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11213         o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11214         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11215         o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11216         return o;
11217     }
11218 };
11219 
11220 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
11221 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> > {
11222     msgpack::object const& operator()(
11223         msgpack::object const& o,
11224         type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& v) const {
11225         if(o.type != msgpack::type::ARRAY) { 
11226             printf("throw msgpack::type_error()");
11227 //            throw msgpack::type_error(); 
11228         }
11229         if(o.via.array.size < 18) { 
11230             printf("throw msgpack::type_error()");
11231 //            throw msgpack::type_error(); 
11232         }
11233         
11234         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11235         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11236         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11237         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11238         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11239         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11240         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11241         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11242         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11243         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11244         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11245         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11246         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11247         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11248         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11249         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11250         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11251         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11252         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11253         o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11254         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11255         o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11256         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11257         o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11258         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11259         o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11260         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11261         o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11262         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11263         o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11264         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11265         o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11266         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11267         o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11268         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11269         o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11270         return o;
11271     }
11272 };
11273 
11274 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
11275 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> > {
11276     msgpack::object const& operator()(
11277         msgpack::object const& o,
11278         type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& v) const {
11279         if(o.type != msgpack::type::ARRAY) { 
11280             printf("throw msgpack::type_error()");
11281 //            throw msgpack::type_error(); 
11282         }
11283         if(o.via.array.size < 19) { 
11284             printf("throw msgpack::type_error()");
11285 //            throw msgpack::type_error(); 
11286         }
11287         
11288         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11289         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11290         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11291         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11292         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11293         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11294         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11295         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11296         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11297         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11298         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11299         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11300         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11301         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11302         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11303         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11304         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11305         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11306         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11307         o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11308         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11309         o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11310         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11311         o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11312         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11313         o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11314         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11315         o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11316         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11317         o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11318         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11319         o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11320         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11321         o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11322         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11323         o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11324         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11325         o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11326         return o;
11327     }
11328 };
11329 
11330 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
11331 struct convert<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> > {
11332     msgpack::object const& operator()(
11333         msgpack::object const& o,
11334         type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& v) const {
11335         if(o.type != msgpack::type::ARRAY) { 
11336             printf("throw msgpack::type_error()");
11337 //            throw msgpack::type_error(); 
11338         }
11339         if(o.via.array.size < 20) { 
11340             printf("throw msgpack::type_error()");
11341 //            throw msgpack::type_error(); 
11342         }
11343         
11344         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11345         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11346         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11347         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11348         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11349         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11350         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11351         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11352         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11353         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11354         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11355         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11356         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11357         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11358         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11359         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11360         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11361         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11362         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11363         o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11364         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11365         o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11366         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11367         o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11368         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11369         o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11370         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11371         o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11372         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11373         o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11374         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11375         o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11376         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11377         o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11378         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11379         o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11380         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11381         o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11382         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11383         o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11384         return o;
11385     }
11386 };
11387 
11388 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
11389 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> > {
11390     msgpack::object const& operator()(
11391         msgpack::object const& o,
11392         type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& v) const {
11393         if(o.type != msgpack::type::ARRAY) { 
11394             printf("throw msgpack::type_error()");
11395 //            throw msgpack::type_error(); 
11396         }
11397         if(o.via.array.size < 21) { 
11398             printf("throw msgpack::type_error()");
11399 //            throw msgpack::type_error(); 
11400         }
11401         
11402         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11403         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11404         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11405         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11406         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11407         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11408         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11409         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11410         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11411         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11412         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11413         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11414         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11415         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11416         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11417         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11418         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11419         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11420         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11421         o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11422         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11423         o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11424         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11425         o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11426         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11427         o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11428         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11429         o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11430         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11431         o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11432         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11433         o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11434         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11435         o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11436         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11437         o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11438         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11439         o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11440         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11441         o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11442         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11443         o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11444         return o;
11445     }
11446 };
11447 
11448 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
11449 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> > {
11450     msgpack::object const& operator()(
11451         msgpack::object const& o,
11452         type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& v) const {
11453         if(o.type != msgpack::type::ARRAY) { 
11454             printf("throw msgpack::type_error()");
11455 //            throw msgpack::type_error(); 
11456         }
11457         if(o.via.array.size < 22) { 
11458             printf("throw msgpack::type_error()");
11459 //            throw msgpack::type_error(); 
11460         }
11461         
11462         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11463         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11464         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11465         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11466         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11467         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11468         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11469         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11470         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11471         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11472         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11473         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11474         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11475         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11476         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11477         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11478         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11479         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11480         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11481         o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11482         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11483         o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11484         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11485         o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11486         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11487         o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11488         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11489         o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11490         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11491         o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11492         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11493         o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11494         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11495         o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11496         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11497         o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11498         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11499         o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11500         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11501         o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11502         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11503         o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11504         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11505         o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11506         return o;
11507     }
11508 };
11509 
11510 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
11511 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> > {
11512     msgpack::object const& operator()(
11513         msgpack::object const& o,
11514         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>& v) const {
11515         if(o.type != msgpack::type::ARRAY) { 
11516             printf("throw msgpack::type_error()");
11517 //            throw msgpack::type_error(); 
11518         }
11519         if(o.via.array.size < 23) { 
11520             printf("throw msgpack::type_error()");
11521 //            throw msgpack::type_error(); 
11522         }
11523         
11524         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11525         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11526         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11527         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11528         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11529         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11530         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11531         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11532         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11533         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11534         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11535         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11536         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11537         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11538         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11539         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11540         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11541         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11542         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11543         o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11544         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11545         o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11546         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11547         o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11548         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11549         o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11550         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11551         o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11552         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11553         o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11554         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11555         o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11556         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11557         o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11558         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11559         o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11560         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11561         o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11562         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11563         o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11564         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11565         o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11566         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11567         o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11568         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11569         o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11570         return o;
11571     }
11572 };
11573 
11574 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
11575 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> > {
11576     msgpack::object const& operator()(
11577         msgpack::object const& o,
11578         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>& v) const {
11579         if(o.type != msgpack::type::ARRAY) { 
11580             printf("throw msgpack::type_error()");
11581 //            throw msgpack::type_error(); 
11582         }
11583         if(o.via.array.size < 24) { 
11584             printf("throw msgpack::type_error()");
11585 //            throw msgpack::type_error(); 
11586         }
11587         
11588         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11589         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11590         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11591         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11592         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11593         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11594         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11595         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11596         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11597         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11598         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11599         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11600         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11601         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11602         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11603         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11604         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11605         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11606         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11607         o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11608         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11609         o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11610         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11611         o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11612         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11613         o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11614         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11615         o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11616         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11617         o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11618         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11619         o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11620         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11621         o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11622         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11623         o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11624         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11625         o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11626         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11627         o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11628         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11629         o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11630         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11631         o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11632         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11633         o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11634         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11635         o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
11636         return o;
11637     }
11638 };
11639 
11640 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
11641 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> > {
11642     msgpack::object const& operator()(
11643         msgpack::object const& o,
11644         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>& v) const {
11645         if(o.type != msgpack::type::ARRAY) { 
11646             printf("throw msgpack::type_error()");
11647 //            throw msgpack::type_error(); 
11648         }
11649         if(o.via.array.size < 25) { 
11650             printf("throw msgpack::type_error()");
11651 //            throw msgpack::type_error(); 
11652         }
11653         
11654         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11655         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11656         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11657         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11658         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11659         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11660         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11661         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11662         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11663         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11664         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11665         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11666         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11667         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11668         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11669         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11670         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11671         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11672         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11673         o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11674         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11675         o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11676         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11677         o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11678         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11679         o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11680         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11681         o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11682         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11683         o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11684         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11685         o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11686         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11687         o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11688         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11689         o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11690         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11691         o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11692         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11693         o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11694         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11695         o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11696         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11697         o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11698         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11699         o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11700         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11701         o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
11702         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11703         o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
11704         return o;
11705     }
11706 };
11707 
11708 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
11709 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> > {
11710     msgpack::object const& operator()(
11711         msgpack::object const& o,
11712         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>& v) const {
11713         if(o.type != msgpack::type::ARRAY) { 
11714             printf("throw msgpack::type_error()");
11715 //            throw msgpack::type_error(); 
11716         }
11717         if(o.via.array.size < 26) { 
11718             printf("throw msgpack::type_error()");
11719 //            throw msgpack::type_error(); 
11720         }
11721         
11722         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11723         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11724         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11725         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11726         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11727         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11728         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11729         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11730         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11731         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11732         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11733         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11734         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11735         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11736         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11737         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11738         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11739         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11740         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11741         o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11742         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11743         o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11744         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11745         o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11746         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11747         o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11748         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11749         o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11750         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11751         o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11752         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11753         o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11754         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11755         o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11756         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11757         o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11758         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11759         o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11760         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11761         o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11762         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11763         o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11764         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11765         o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11766         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11767         o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11768         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11769         o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
11770         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11771         o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
11772         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11773         o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
11774         return o;
11775     }
11776 };
11777 
11778 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
11779 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> > {
11780     msgpack::object const& operator()(
11781         msgpack::object const& o,
11782         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>& v) const {
11783         if(o.type != msgpack::type::ARRAY) { 
11784             printf("throw msgpack::type_error()");
11785 //            throw msgpack::type_error(); 
11786         }
11787         if(o.via.array.size < 27) { 
11788             printf("throw msgpack::type_error()");
11789 //            throw msgpack::type_error(); 
11790         }
11791         
11792         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11793         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11794         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11795         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11796         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11797         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11798         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11799         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11800         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11801         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11802         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11803         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11804         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11805         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11806         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11807         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11808         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11809         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11810         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11811         o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11812         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11813         o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11814         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11815         o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11816         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11817         o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11818         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11819         o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11820         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11821         o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11822         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11823         o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11824         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11825         o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11826         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11827         o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11828         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11829         o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11830         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11831         o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11832         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11833         o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11834         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11835         o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11836         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11837         o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11838         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11839         o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
11840         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11841         o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
11842         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11843         o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
11844         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11845         o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
11846         return o;
11847     }
11848 };
11849 
11850 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
11851 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> > {
11852     msgpack::object const& operator()(
11853         msgpack::object const& o,
11854         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>& v) const {
11855         if(o.type != msgpack::type::ARRAY) { 
11856             printf("throw msgpack::type_error()");
11857 //            throw msgpack::type_error(); 
11858         }
11859         if(o.via.array.size < 28) { 
11860             printf("throw msgpack::type_error()");
11861 //            throw msgpack::type_error(); 
11862         }
11863         
11864         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11865         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11866         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11867         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11868         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11869         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11870         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11871         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11872         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11873         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11874         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11875         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11876         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11877         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11878         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11879         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11880         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11881         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11882         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11883         o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11884         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11885         o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11886         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11887         o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11888         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11889         o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11890         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11891         o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11892         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11893         o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11894         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11895         o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11896         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11897         o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11898         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11899         o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11900         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11901         o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11902         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11903         o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11904         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11905         o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11906         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11907         o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11908         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11909         o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11910         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11911         o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
11912         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11913         o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
11914         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11915         o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
11916         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11917         o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
11918         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11919         o.via.array.ptr[27].msgpack::object::convert<typename type::tuple_type<A27>::type>(v.template get<27>());
11920         return o;
11921     }
11922 };
11923 
11924 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
11925 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> > {
11926     msgpack::object const& operator()(
11927         msgpack::object const& o,
11928         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>& v) const {
11929         if(o.type != msgpack::type::ARRAY) { 
11930             printf("throw msgpack::type_error()");
11931 //            throw msgpack::type_error(); 
11932         }
11933         if(o.via.array.size < 29) { 
11934             printf("throw msgpack::type_error()");
11935 //            throw msgpack::type_error(); 
11936         }
11937         
11938         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11939         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
11940         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11941         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
11942         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11943         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
11944         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11945         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
11946         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11947         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
11948         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11949         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
11950         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11951         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
11952         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11953         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
11954         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11955         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
11956         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11957         o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
11958         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11959         o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
11960         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11961         o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
11962         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11963         o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
11964         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11965         o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
11966         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11967         o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
11968         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11969         o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
11970         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11971         o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
11972         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11973         o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
11974         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11975         o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
11976         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11977         o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
11978         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11979         o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
11980         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11981         o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
11982         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11983         o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
11984         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11985         o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
11986         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11987         o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
11988         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11989         o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
11990         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11991         o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
11992         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11993         o.via.array.ptr[27].msgpack::object::convert<typename type::tuple_type<A27>::type>(v.template get<27>());
11994         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
11995         o.via.array.ptr[28].msgpack::object::convert<typename type::tuple_type<A28>::type>(v.template get<28>());
11996         return o;
11997     }
11998 };
11999 
12000 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
12001 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> > {
12002     msgpack::object const& operator()(
12003         msgpack::object const& o,
12004         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>& v) const {
12005         if(o.type != msgpack::type::ARRAY) { 
12006             printf("throw msgpack::type_error()");
12007 //            throw msgpack::type_error(); 
12008         }
12009         if(o.via.array.size < 30) { 
12010             printf("throw msgpack::type_error()");
12011 //            throw msgpack::type_error(); 
12012         }
12013         
12014         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12015         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
12016         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12017         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
12018         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12019         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
12020         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12021         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
12022         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12023         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
12024         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12025         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
12026         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12027         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
12028         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12029         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
12030         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12031         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
12032         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12033         o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
12034         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12035         o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
12036         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12037         o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
12038         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12039         o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
12040         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12041         o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
12042         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12043         o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
12044         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12045         o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
12046         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12047         o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
12048         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12049         o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
12050         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12051         o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
12052         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12053         o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
12054         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12055         o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
12056         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12057         o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
12058         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12059         o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
12060         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12061         o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
12062         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12063         o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
12064         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12065         o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
12066         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12067         o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
12068         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12069         o.via.array.ptr[27].msgpack::object::convert<typename type::tuple_type<A27>::type>(v.template get<27>());
12070         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12071         o.via.array.ptr[28].msgpack::object::convert<typename type::tuple_type<A28>::type>(v.template get<28>());
12072         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12073         o.via.array.ptr[29].msgpack::object::convert<typename type::tuple_type<A29>::type>(v.template get<29>());
12074         return o;
12075     }
12076 };
12077 
12078 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
12079 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> > {
12080     msgpack::object const& operator()(
12081         msgpack::object const& o,
12082         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>& v) const {
12083         if(o.type != msgpack::type::ARRAY) { 
12084             printf("throw msgpack::type_error()");
12085 //            throw msgpack::type_error(); 
12086         }
12087         if(o.via.array.size < 31) { 
12088             printf("throw msgpack::type_error()");
12089 //            throw msgpack::type_error(); 
12090         }
12091         
12092         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12093         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
12094         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12095         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
12096         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12097         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
12098         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12099         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
12100         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12101         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
12102         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12103         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
12104         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12105         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
12106         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12107         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
12108         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12109         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
12110         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12111         o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
12112         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12113         o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
12114         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12115         o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
12116         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12117         o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
12118         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12119         o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
12120         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12121         o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
12122         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12123         o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
12124         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12125         o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
12126         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12127         o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
12128         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12129         o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
12130         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12131         o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
12132         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12133         o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
12134         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12135         o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
12136         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12137         o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
12138         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12139         o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
12140         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12141         o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
12142         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12143         o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
12144         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12145         o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
12146         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12147         o.via.array.ptr[27].msgpack::object::convert<typename type::tuple_type<A27>::type>(v.template get<27>());
12148         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12149         o.via.array.ptr[28].msgpack::object::convert<typename type::tuple_type<A28>::type>(v.template get<28>());
12150         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12151         o.via.array.ptr[29].msgpack::object::convert<typename type::tuple_type<A29>::type>(v.template get<29>());
12152         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12153         o.via.array.ptr[30].msgpack::object::convert<typename type::tuple_type<A30>::type>(v.template get<30>());
12154         return o;
12155     }
12156 };
12157 
12158 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
12159 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> > {
12160     msgpack::object const& operator()(
12161         msgpack::object const& o,
12162         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>& v) const {
12163         if(o.type != msgpack::type::ARRAY) { 
12164             printf("throw msgpack::type_error()");
12165 //            throw msgpack::type_error(); 
12166         }
12167         if(o.via.array.size < 32) { 
12168             printf("throw msgpack::type_error()");
12169 //            throw msgpack::type_error(); 
12170         }
12171         
12172         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12173         o.via.array.ptr[0].msgpack::object::convert<typename type::tuple_type<A0>::type>(v.template get<0>());
12174         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12175         o.via.array.ptr[1].msgpack::object::convert<typename type::tuple_type<A1>::type>(v.template get<1>());
12176         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12177         o.via.array.ptr[2].msgpack::object::convert<typename type::tuple_type<A2>::type>(v.template get<2>());
12178         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12179         o.via.array.ptr[3].msgpack::object::convert<typename type::tuple_type<A3>::type>(v.template get<3>());
12180         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12181         o.via.array.ptr[4].msgpack::object::convert<typename type::tuple_type<A4>::type>(v.template get<4>());
12182         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12183         o.via.array.ptr[5].msgpack::object::convert<typename type::tuple_type<A5>::type>(v.template get<5>());
12184         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12185         o.via.array.ptr[6].msgpack::object::convert<typename type::tuple_type<A6>::type>(v.template get<6>());
12186         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12187         o.via.array.ptr[7].msgpack::object::convert<typename type::tuple_type<A7>::type>(v.template get<7>());
12188         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12189         o.via.array.ptr[8].msgpack::object::convert<typename type::tuple_type<A8>::type>(v.template get<8>());
12190         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12191         o.via.array.ptr[9].msgpack::object::convert<typename type::tuple_type<A9>::type>(v.template get<9>());
12192         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12193         o.via.array.ptr[10].msgpack::object::convert<typename type::tuple_type<A10>::type>(v.template get<10>());
12194         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12195         o.via.array.ptr[11].msgpack::object::convert<typename type::tuple_type<A11>::type>(v.template get<11>());
12196         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12197         o.via.array.ptr[12].msgpack::object::convert<typename type::tuple_type<A12>::type>(v.template get<12>());
12198         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12199         o.via.array.ptr[13].msgpack::object::convert<typename type::tuple_type<A13>::type>(v.template get<13>());
12200         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12201         o.via.array.ptr[14].msgpack::object::convert<typename type::tuple_type<A14>::type>(v.template get<14>());
12202         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12203         o.via.array.ptr[15].msgpack::object::convert<typename type::tuple_type<A15>::type>(v.template get<15>());
12204         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12205         o.via.array.ptr[16].msgpack::object::convert<typename type::tuple_type<A16>::type>(v.template get<16>());
12206         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12207         o.via.array.ptr[17].msgpack::object::convert<typename type::tuple_type<A17>::type>(v.template get<17>());
12208         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12209         o.via.array.ptr[18].msgpack::object::convert<typename type::tuple_type<A18>::type>(v.template get<18>());
12210         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12211         o.via.array.ptr[19].msgpack::object::convert<typename type::tuple_type<A19>::type>(v.template get<19>());
12212         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12213         o.via.array.ptr[20].msgpack::object::convert<typename type::tuple_type<A20>::type>(v.template get<20>());
12214         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12215         o.via.array.ptr[21].msgpack::object::convert<typename type::tuple_type<A21>::type>(v.template get<21>());
12216         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12217         o.via.array.ptr[22].msgpack::object::convert<typename type::tuple_type<A22>::type>(v.template get<22>());
12218         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12219         o.via.array.ptr[23].msgpack::object::convert<typename type::tuple_type<A23>::type>(v.template get<23>());
12220         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12221         o.via.array.ptr[24].msgpack::object::convert<typename type::tuple_type<A24>::type>(v.template get<24>());
12222         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12223         o.via.array.ptr[25].msgpack::object::convert<typename type::tuple_type<A25>::type>(v.template get<25>());
12224         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12225         o.via.array.ptr[26].msgpack::object::convert<typename type::tuple_type<A26>::type>(v.template get<26>());
12226         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12227         o.via.array.ptr[27].msgpack::object::convert<typename type::tuple_type<A27>::type>(v.template get<27>());
12228         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12229         o.via.array.ptr[28].msgpack::object::convert<typename type::tuple_type<A28>::type>(v.template get<28>());
12230         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12231         o.via.array.ptr[29].msgpack::object::convert<typename type::tuple_type<A29>::type>(v.template get<29>());
12232         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12233         o.via.array.ptr[30].msgpack::object::convert<typename type::tuple_type<A30>::type>(v.template get<30>());
12234         // In order to avoid clang++'s invalid warning, msgpack::object:: has been added.
12235         o.via.array.ptr[31].msgpack::object::convert<typename type::tuple_type<A31>::type>(v.template get<31>());
12236         return o;
12237     }
12238 };
12239 
12240 /// @endcond
12241 
12242 template <>
12243 struct pack<type::tuple<> > {
12244     template <typename Stream>
12245     msgpack::packer<Stream> & operator()(
12246         msgpack::packer<Stream> & o,
12247         const type::tuple<>&) const {
12248         o.pack_array(0);
12249         return o;
12250     }
12251 };
12252 
12253 /// @cond
12254 
12255 template <typename A0>
12256 struct pack<type::tuple<A0> > {
12257     template <typename Stream>
12258     msgpack::packer<Stream> & operator()(
12259         msgpack::packer<Stream> & o,
12260         const type::tuple<A0>& v) const {
12261         o.pack_array(1);
12262         
12263         o.pack(v.template get<0>());
12264         return o;
12265     }
12266 };
12267 
12268 template <typename A0, typename A1>
12269 struct pack<type::tuple<A0, A1> > {
12270     template <typename Stream>
12271     msgpack::packer<Stream> & operator()(
12272         msgpack::packer<Stream> & o,
12273         const type::tuple<A0, A1>& v) const {
12274         o.pack_array(2);
12275         
12276         o.pack(v.template get<0>());
12277         o.pack(v.template get<1>());
12278         return o;
12279     }
12280 };
12281 
12282 template <typename A0, typename A1, typename A2>
12283 struct pack<type::tuple<A0, A1, A2> > {
12284     template <typename Stream>
12285     msgpack::packer<Stream> & operator()(
12286         msgpack::packer<Stream> & o,
12287         const type::tuple<A0, A1, A2>& v) const {
12288         o.pack_array(3);
12289         
12290         o.pack(v.template get<0>());
12291         o.pack(v.template get<1>());
12292         o.pack(v.template get<2>());
12293         return o;
12294     }
12295 };
12296 
12297 template <typename A0, typename A1, typename A2, typename A3>
12298 struct pack<type::tuple<A0, A1, A2, A3> > {
12299     template <typename Stream>
12300     msgpack::packer<Stream> & operator()(
12301         msgpack::packer<Stream> & o,
12302         const type::tuple<A0, A1, A2, A3>& v) const {
12303         o.pack_array(4);
12304         
12305         o.pack(v.template get<0>());
12306         o.pack(v.template get<1>());
12307         o.pack(v.template get<2>());
12308         o.pack(v.template get<3>());
12309         return o;
12310     }
12311 };
12312 
12313 template <typename A0, typename A1, typename A2, typename A3, typename A4>
12314 struct pack<type::tuple<A0, A1, A2, A3, A4> > {
12315     template <typename Stream>
12316     msgpack::packer<Stream> & operator()(
12317         msgpack::packer<Stream> & o,
12318         const type::tuple<A0, A1, A2, A3, A4>& v) const {
12319         o.pack_array(5);
12320         
12321         o.pack(v.template get<0>());
12322         o.pack(v.template get<1>());
12323         o.pack(v.template get<2>());
12324         o.pack(v.template get<3>());
12325         o.pack(v.template get<4>());
12326         return o;
12327     }
12328 };
12329 
12330 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
12331 struct pack<type::tuple<A0, A1, A2, A3, A4, A5> > {
12332     template <typename Stream>
12333     msgpack::packer<Stream> & operator()(
12334         msgpack::packer<Stream> & o,
12335         const type::tuple<A0, A1, A2, A3, A4, A5>& v) const {
12336         o.pack_array(6);
12337         
12338         o.pack(v.template get<0>());
12339         o.pack(v.template get<1>());
12340         o.pack(v.template get<2>());
12341         o.pack(v.template get<3>());
12342         o.pack(v.template get<4>());
12343         o.pack(v.template get<5>());
12344         return o;
12345     }
12346 };
12347 
12348 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
12349 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6> > {
12350     template <typename Stream>
12351     msgpack::packer<Stream> & operator()(
12352         msgpack::packer<Stream> & o,
12353         const type::tuple<A0, A1, A2, A3, A4, A5, A6>& v) const {
12354         o.pack_array(7);
12355         
12356         o.pack(v.template get<0>());
12357         o.pack(v.template get<1>());
12358         o.pack(v.template get<2>());
12359         o.pack(v.template get<3>());
12360         o.pack(v.template get<4>());
12361         o.pack(v.template get<5>());
12362         o.pack(v.template get<6>());
12363         return o;
12364     }
12365 };
12366 
12367 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
12368 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7> > {
12369     template <typename Stream>
12370     msgpack::packer<Stream> & operator()(
12371         msgpack::packer<Stream> & o,
12372         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7>& v) const {
12373         o.pack_array(8);
12374         
12375         o.pack(v.template get<0>());
12376         o.pack(v.template get<1>());
12377         o.pack(v.template get<2>());
12378         o.pack(v.template get<3>());
12379         o.pack(v.template get<4>());
12380         o.pack(v.template get<5>());
12381         o.pack(v.template get<6>());
12382         o.pack(v.template get<7>());
12383         return o;
12384     }
12385 };
12386 
12387 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
12388 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> > {
12389     template <typename Stream>
12390     msgpack::packer<Stream> & operator()(
12391         msgpack::packer<Stream> & o,
12392         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& v) const {
12393         o.pack_array(9);
12394         
12395         o.pack(v.template get<0>());
12396         o.pack(v.template get<1>());
12397         o.pack(v.template get<2>());
12398         o.pack(v.template get<3>());
12399         o.pack(v.template get<4>());
12400         o.pack(v.template get<5>());
12401         o.pack(v.template get<6>());
12402         o.pack(v.template get<7>());
12403         o.pack(v.template get<8>());
12404         return o;
12405     }
12406 };
12407 
12408 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
12409 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> > {
12410     template <typename Stream>
12411     msgpack::packer<Stream> & operator()(
12412         msgpack::packer<Stream> & o,
12413         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& v) const {
12414         o.pack_array(10);
12415         
12416         o.pack(v.template get<0>());
12417         o.pack(v.template get<1>());
12418         o.pack(v.template get<2>());
12419         o.pack(v.template get<3>());
12420         o.pack(v.template get<4>());
12421         o.pack(v.template get<5>());
12422         o.pack(v.template get<6>());
12423         o.pack(v.template get<7>());
12424         o.pack(v.template get<8>());
12425         o.pack(v.template get<9>());
12426         return o;
12427     }
12428 };
12429 
12430 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
12431 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> > {
12432     template <typename Stream>
12433     msgpack::packer<Stream> & operator()(
12434         msgpack::packer<Stream> & o,
12435         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& v) const {
12436         o.pack_array(11);
12437         
12438         o.pack(v.template get<0>());
12439         o.pack(v.template get<1>());
12440         o.pack(v.template get<2>());
12441         o.pack(v.template get<3>());
12442         o.pack(v.template get<4>());
12443         o.pack(v.template get<5>());
12444         o.pack(v.template get<6>());
12445         o.pack(v.template get<7>());
12446         o.pack(v.template get<8>());
12447         o.pack(v.template get<9>());
12448         o.pack(v.template get<10>());
12449         return o;
12450     }
12451 };
12452 
12453 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
12454 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> > {
12455     template <typename Stream>
12456     msgpack::packer<Stream> & operator()(
12457         msgpack::packer<Stream> & o,
12458         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& v) const {
12459         o.pack_array(12);
12460         
12461         o.pack(v.template get<0>());
12462         o.pack(v.template get<1>());
12463         o.pack(v.template get<2>());
12464         o.pack(v.template get<3>());
12465         o.pack(v.template get<4>());
12466         o.pack(v.template get<5>());
12467         o.pack(v.template get<6>());
12468         o.pack(v.template get<7>());
12469         o.pack(v.template get<8>());
12470         o.pack(v.template get<9>());
12471         o.pack(v.template get<10>());
12472         o.pack(v.template get<11>());
12473         return o;
12474     }
12475 };
12476 
12477 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
12478 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> > {
12479     template <typename Stream>
12480     msgpack::packer<Stream> & operator()(
12481         msgpack::packer<Stream> & o,
12482         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& v) const {
12483         o.pack_array(13);
12484         
12485         o.pack(v.template get<0>());
12486         o.pack(v.template get<1>());
12487         o.pack(v.template get<2>());
12488         o.pack(v.template get<3>());
12489         o.pack(v.template get<4>());
12490         o.pack(v.template get<5>());
12491         o.pack(v.template get<6>());
12492         o.pack(v.template get<7>());
12493         o.pack(v.template get<8>());
12494         o.pack(v.template get<9>());
12495         o.pack(v.template get<10>());
12496         o.pack(v.template get<11>());
12497         o.pack(v.template get<12>());
12498         return o;
12499     }
12500 };
12501 
12502 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
12503 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> > {
12504     template <typename Stream>
12505     msgpack::packer<Stream> & operator()(
12506         msgpack::packer<Stream> & o,
12507         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& v) const {
12508         o.pack_array(14);
12509         
12510         o.pack(v.template get<0>());
12511         o.pack(v.template get<1>());
12512         o.pack(v.template get<2>());
12513         o.pack(v.template get<3>());
12514         o.pack(v.template get<4>());
12515         o.pack(v.template get<5>());
12516         o.pack(v.template get<6>());
12517         o.pack(v.template get<7>());
12518         o.pack(v.template get<8>());
12519         o.pack(v.template get<9>());
12520         o.pack(v.template get<10>());
12521         o.pack(v.template get<11>());
12522         o.pack(v.template get<12>());
12523         o.pack(v.template get<13>());
12524         return o;
12525     }
12526 };
12527 
12528 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
12529 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> > {
12530     template <typename Stream>
12531     msgpack::packer<Stream> & operator()(
12532         msgpack::packer<Stream> & o,
12533         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& v) const {
12534         o.pack_array(15);
12535         
12536         o.pack(v.template get<0>());
12537         o.pack(v.template get<1>());
12538         o.pack(v.template get<2>());
12539         o.pack(v.template get<3>());
12540         o.pack(v.template get<4>());
12541         o.pack(v.template get<5>());
12542         o.pack(v.template get<6>());
12543         o.pack(v.template get<7>());
12544         o.pack(v.template get<8>());
12545         o.pack(v.template get<9>());
12546         o.pack(v.template get<10>());
12547         o.pack(v.template get<11>());
12548         o.pack(v.template get<12>());
12549         o.pack(v.template get<13>());
12550         o.pack(v.template get<14>());
12551         return o;
12552     }
12553 };
12554 
12555 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
12556 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> > {
12557     template <typename Stream>
12558     msgpack::packer<Stream> & operator()(
12559         msgpack::packer<Stream> & o,
12560         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& v) const {
12561         o.pack_array(16);
12562         
12563         o.pack(v.template get<0>());
12564         o.pack(v.template get<1>());
12565         o.pack(v.template get<2>());
12566         o.pack(v.template get<3>());
12567         o.pack(v.template get<4>());
12568         o.pack(v.template get<5>());
12569         o.pack(v.template get<6>());
12570         o.pack(v.template get<7>());
12571         o.pack(v.template get<8>());
12572         o.pack(v.template get<9>());
12573         o.pack(v.template get<10>());
12574         o.pack(v.template get<11>());
12575         o.pack(v.template get<12>());
12576         o.pack(v.template get<13>());
12577         o.pack(v.template get<14>());
12578         o.pack(v.template get<15>());
12579         return o;
12580     }
12581 };
12582 
12583 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
12584 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> > {
12585     template <typename Stream>
12586     msgpack::packer<Stream> & operator()(
12587         msgpack::packer<Stream> & o,
12588         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& v) const {
12589         o.pack_array(17);
12590         
12591         o.pack(v.template get<0>());
12592         o.pack(v.template get<1>());
12593         o.pack(v.template get<2>());
12594         o.pack(v.template get<3>());
12595         o.pack(v.template get<4>());
12596         o.pack(v.template get<5>());
12597         o.pack(v.template get<6>());
12598         o.pack(v.template get<7>());
12599         o.pack(v.template get<8>());
12600         o.pack(v.template get<9>());
12601         o.pack(v.template get<10>());
12602         o.pack(v.template get<11>());
12603         o.pack(v.template get<12>());
12604         o.pack(v.template get<13>());
12605         o.pack(v.template get<14>());
12606         o.pack(v.template get<15>());
12607         o.pack(v.template get<16>());
12608         return o;
12609     }
12610 };
12611 
12612 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
12613 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> > {
12614     template <typename Stream>
12615     msgpack::packer<Stream> & operator()(
12616         msgpack::packer<Stream> & o,
12617         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& v) const {
12618         o.pack_array(18);
12619         
12620         o.pack(v.template get<0>());
12621         o.pack(v.template get<1>());
12622         o.pack(v.template get<2>());
12623         o.pack(v.template get<3>());
12624         o.pack(v.template get<4>());
12625         o.pack(v.template get<5>());
12626         o.pack(v.template get<6>());
12627         o.pack(v.template get<7>());
12628         o.pack(v.template get<8>());
12629         o.pack(v.template get<9>());
12630         o.pack(v.template get<10>());
12631         o.pack(v.template get<11>());
12632         o.pack(v.template get<12>());
12633         o.pack(v.template get<13>());
12634         o.pack(v.template get<14>());
12635         o.pack(v.template get<15>());
12636         o.pack(v.template get<16>());
12637         o.pack(v.template get<17>());
12638         return o;
12639     }
12640 };
12641 
12642 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
12643 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18> > {
12644     template <typename Stream>
12645     msgpack::packer<Stream> & operator()(
12646         msgpack::packer<Stream> & o,
12647         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& v) const {
12648         o.pack_array(19);
12649         
12650         o.pack(v.template get<0>());
12651         o.pack(v.template get<1>());
12652         o.pack(v.template get<2>());
12653         o.pack(v.template get<3>());
12654         o.pack(v.template get<4>());
12655         o.pack(v.template get<5>());
12656         o.pack(v.template get<6>());
12657         o.pack(v.template get<7>());
12658         o.pack(v.template get<8>());
12659         o.pack(v.template get<9>());
12660         o.pack(v.template get<10>());
12661         o.pack(v.template get<11>());
12662         o.pack(v.template get<12>());
12663         o.pack(v.template get<13>());
12664         o.pack(v.template get<14>());
12665         o.pack(v.template get<15>());
12666         o.pack(v.template get<16>());
12667         o.pack(v.template get<17>());
12668         o.pack(v.template get<18>());
12669         return o;
12670     }
12671 };
12672 
12673 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
12674 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19> > {
12675     template <typename Stream>
12676     msgpack::packer<Stream> & operator()(
12677         msgpack::packer<Stream> & o,
12678         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& v) const {
12679         o.pack_array(20);
12680         
12681         o.pack(v.template get<0>());
12682         o.pack(v.template get<1>());
12683         o.pack(v.template get<2>());
12684         o.pack(v.template get<3>());
12685         o.pack(v.template get<4>());
12686         o.pack(v.template get<5>());
12687         o.pack(v.template get<6>());
12688         o.pack(v.template get<7>());
12689         o.pack(v.template get<8>());
12690         o.pack(v.template get<9>());
12691         o.pack(v.template get<10>());
12692         o.pack(v.template get<11>());
12693         o.pack(v.template get<12>());
12694         o.pack(v.template get<13>());
12695         o.pack(v.template get<14>());
12696         o.pack(v.template get<15>());
12697         o.pack(v.template get<16>());
12698         o.pack(v.template get<17>());
12699         o.pack(v.template get<18>());
12700         o.pack(v.template get<19>());
12701         return o;
12702     }
12703 };
12704 
12705 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
12706 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> > {
12707     template <typename Stream>
12708     msgpack::packer<Stream> & operator()(
12709         msgpack::packer<Stream> & o,
12710         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& v) const {
12711         o.pack_array(21);
12712         
12713         o.pack(v.template get<0>());
12714         o.pack(v.template get<1>());
12715         o.pack(v.template get<2>());
12716         o.pack(v.template get<3>());
12717         o.pack(v.template get<4>());
12718         o.pack(v.template get<5>());
12719         o.pack(v.template get<6>());
12720         o.pack(v.template get<7>());
12721         o.pack(v.template get<8>());
12722         o.pack(v.template get<9>());
12723         o.pack(v.template get<10>());
12724         o.pack(v.template get<11>());
12725         o.pack(v.template get<12>());
12726         o.pack(v.template get<13>());
12727         o.pack(v.template get<14>());
12728         o.pack(v.template get<15>());
12729         o.pack(v.template get<16>());
12730         o.pack(v.template get<17>());
12731         o.pack(v.template get<18>());
12732         o.pack(v.template get<19>());
12733         o.pack(v.template get<20>());
12734         return o;
12735     }
12736 };
12737 
12738 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
12739 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> > {
12740     template <typename Stream>
12741     msgpack::packer<Stream> & operator()(
12742         msgpack::packer<Stream> & o,
12743         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& v) const {
12744         o.pack_array(22);
12745         
12746         o.pack(v.template get<0>());
12747         o.pack(v.template get<1>());
12748         o.pack(v.template get<2>());
12749         o.pack(v.template get<3>());
12750         o.pack(v.template get<4>());
12751         o.pack(v.template get<5>());
12752         o.pack(v.template get<6>());
12753         o.pack(v.template get<7>());
12754         o.pack(v.template get<8>());
12755         o.pack(v.template get<9>());
12756         o.pack(v.template get<10>());
12757         o.pack(v.template get<11>());
12758         o.pack(v.template get<12>());
12759         o.pack(v.template get<13>());
12760         o.pack(v.template get<14>());
12761         o.pack(v.template get<15>());
12762         o.pack(v.template get<16>());
12763         o.pack(v.template get<17>());
12764         o.pack(v.template get<18>());
12765         o.pack(v.template get<19>());
12766         o.pack(v.template get<20>());
12767         o.pack(v.template get<21>());
12768         return o;
12769     }
12770 };
12771 
12772 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
12773 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> > {
12774     template <typename Stream>
12775     msgpack::packer<Stream> & operator()(
12776         msgpack::packer<Stream> & o,
12777         const 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>& v) const {
12778         o.pack_array(23);
12779         
12780         o.pack(v.template get<0>());
12781         o.pack(v.template get<1>());
12782         o.pack(v.template get<2>());
12783         o.pack(v.template get<3>());
12784         o.pack(v.template get<4>());
12785         o.pack(v.template get<5>());
12786         o.pack(v.template get<6>());
12787         o.pack(v.template get<7>());
12788         o.pack(v.template get<8>());
12789         o.pack(v.template get<9>());
12790         o.pack(v.template get<10>());
12791         o.pack(v.template get<11>());
12792         o.pack(v.template get<12>());
12793         o.pack(v.template get<13>());
12794         o.pack(v.template get<14>());
12795         o.pack(v.template get<15>());
12796         o.pack(v.template get<16>());
12797         o.pack(v.template get<17>());
12798         o.pack(v.template get<18>());
12799         o.pack(v.template get<19>());
12800         o.pack(v.template get<20>());
12801         o.pack(v.template get<21>());
12802         o.pack(v.template get<22>());
12803         return o;
12804     }
12805 };
12806 
12807 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
12808 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> > {
12809     template <typename Stream>
12810     msgpack::packer<Stream> & operator()(
12811         msgpack::packer<Stream> & o,
12812         const 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>& v) const {
12813         o.pack_array(24);
12814         
12815         o.pack(v.template get<0>());
12816         o.pack(v.template get<1>());
12817         o.pack(v.template get<2>());
12818         o.pack(v.template get<3>());
12819         o.pack(v.template get<4>());
12820         o.pack(v.template get<5>());
12821         o.pack(v.template get<6>());
12822         o.pack(v.template get<7>());
12823         o.pack(v.template get<8>());
12824         o.pack(v.template get<9>());
12825         o.pack(v.template get<10>());
12826         o.pack(v.template get<11>());
12827         o.pack(v.template get<12>());
12828         o.pack(v.template get<13>());
12829         o.pack(v.template get<14>());
12830         o.pack(v.template get<15>());
12831         o.pack(v.template get<16>());
12832         o.pack(v.template get<17>());
12833         o.pack(v.template get<18>());
12834         o.pack(v.template get<19>());
12835         o.pack(v.template get<20>());
12836         o.pack(v.template get<21>());
12837         o.pack(v.template get<22>());
12838         o.pack(v.template get<23>());
12839         return o;
12840     }
12841 };
12842 
12843 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
12844 struct pack<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> > {
12845     template <typename Stream>
12846     msgpack::packer<Stream> & operator()(
12847         msgpack::packer<Stream> & o,
12848         const 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>& v) const {
12849         o.pack_array(25);
12850         
12851         o.pack(v.template get<0>());
12852         o.pack(v.template get<1>());
12853         o.pack(v.template get<2>());
12854         o.pack(v.template get<3>());
12855         o.pack(v.template get<4>());
12856         o.pack(v.template get<5>());
12857         o.pack(v.template get<6>());
12858         o.pack(v.template get<7>());
12859         o.pack(v.template get<8>());
12860         o.pack(v.template get<9>());
12861         o.pack(v.template get<10>());
12862         o.pack(v.template get<11>());
12863         o.pack(v.template get<12>());
12864         o.pack(v.template get<13>());
12865         o.pack(v.template get<14>());
12866         o.pack(v.template get<15>());
12867         o.pack(v.template get<16>());
12868         o.pack(v.template get<17>());
12869         o.pack(v.template get<18>());
12870         o.pack(v.template get<19>());
12871         o.pack(v.template get<20>());
12872         o.pack(v.template get<21>());
12873         o.pack(v.template get<22>());
12874         o.pack(v.template get<23>());
12875         o.pack(v.template get<24>());
12876         return o;
12877     }
12878 };
12879 
12880 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
12881 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> > {
12882     template <typename Stream>
12883     msgpack::packer<Stream> & operator()(
12884         msgpack::packer<Stream> & o,
12885         const 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>& v) const {
12886         o.pack_array(26);
12887         
12888         o.pack(v.template get<0>());
12889         o.pack(v.template get<1>());
12890         o.pack(v.template get<2>());
12891         o.pack(v.template get<3>());
12892         o.pack(v.template get<4>());
12893         o.pack(v.template get<5>());
12894         o.pack(v.template get<6>());
12895         o.pack(v.template get<7>());
12896         o.pack(v.template get<8>());
12897         o.pack(v.template get<9>());
12898         o.pack(v.template get<10>());
12899         o.pack(v.template get<11>());
12900         o.pack(v.template get<12>());
12901         o.pack(v.template get<13>());
12902         o.pack(v.template get<14>());
12903         o.pack(v.template get<15>());
12904         o.pack(v.template get<16>());
12905         o.pack(v.template get<17>());
12906         o.pack(v.template get<18>());
12907         o.pack(v.template get<19>());
12908         o.pack(v.template get<20>());
12909         o.pack(v.template get<21>());
12910         o.pack(v.template get<22>());
12911         o.pack(v.template get<23>());
12912         o.pack(v.template get<24>());
12913         o.pack(v.template get<25>());
12914         return o;
12915     }
12916 };
12917 
12918 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
12919 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> > {
12920     template <typename Stream>
12921     msgpack::packer<Stream> & operator()(
12922         msgpack::packer<Stream> & o,
12923         const 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>& v) const {
12924         o.pack_array(27);
12925         
12926         o.pack(v.template get<0>());
12927         o.pack(v.template get<1>());
12928         o.pack(v.template get<2>());
12929         o.pack(v.template get<3>());
12930         o.pack(v.template get<4>());
12931         o.pack(v.template get<5>());
12932         o.pack(v.template get<6>());
12933         o.pack(v.template get<7>());
12934         o.pack(v.template get<8>());
12935         o.pack(v.template get<9>());
12936         o.pack(v.template get<10>());
12937         o.pack(v.template get<11>());
12938         o.pack(v.template get<12>());
12939         o.pack(v.template get<13>());
12940         o.pack(v.template get<14>());
12941         o.pack(v.template get<15>());
12942         o.pack(v.template get<16>());
12943         o.pack(v.template get<17>());
12944         o.pack(v.template get<18>());
12945         o.pack(v.template get<19>());
12946         o.pack(v.template get<20>());
12947         o.pack(v.template get<21>());
12948         o.pack(v.template get<22>());
12949         o.pack(v.template get<23>());
12950         o.pack(v.template get<24>());
12951         o.pack(v.template get<25>());
12952         o.pack(v.template get<26>());
12953         return o;
12954     }
12955 };
12956 
12957 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
12958 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> > {
12959     template <typename Stream>
12960     msgpack::packer<Stream> & operator()(
12961         msgpack::packer<Stream> & o,
12962         const 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>& v) const {
12963         o.pack_array(28);
12964         
12965         o.pack(v.template get<0>());
12966         o.pack(v.template get<1>());
12967         o.pack(v.template get<2>());
12968         o.pack(v.template get<3>());
12969         o.pack(v.template get<4>());
12970         o.pack(v.template get<5>());
12971         o.pack(v.template get<6>());
12972         o.pack(v.template get<7>());
12973         o.pack(v.template get<8>());
12974         o.pack(v.template get<9>());
12975         o.pack(v.template get<10>());
12976         o.pack(v.template get<11>());
12977         o.pack(v.template get<12>());
12978         o.pack(v.template get<13>());
12979         o.pack(v.template get<14>());
12980         o.pack(v.template get<15>());
12981         o.pack(v.template get<16>());
12982         o.pack(v.template get<17>());
12983         o.pack(v.template get<18>());
12984         o.pack(v.template get<19>());
12985         o.pack(v.template get<20>());
12986         o.pack(v.template get<21>());
12987         o.pack(v.template get<22>());
12988         o.pack(v.template get<23>());
12989         o.pack(v.template get<24>());
12990         o.pack(v.template get<25>());
12991         o.pack(v.template get<26>());
12992         o.pack(v.template get<27>());
12993         return o;
12994     }
12995 };
12996 
12997 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
12998 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> > {
12999     template <typename Stream>
13000     msgpack::packer<Stream> & operator()(
13001         msgpack::packer<Stream> & o,
13002         const 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>& v) const {
13003         o.pack_array(29);
13004         
13005         o.pack(v.template get<0>());
13006         o.pack(v.template get<1>());
13007         o.pack(v.template get<2>());
13008         o.pack(v.template get<3>());
13009         o.pack(v.template get<4>());
13010         o.pack(v.template get<5>());
13011         o.pack(v.template get<6>());
13012         o.pack(v.template get<7>());
13013         o.pack(v.template get<8>());
13014         o.pack(v.template get<9>());
13015         o.pack(v.template get<10>());
13016         o.pack(v.template get<11>());
13017         o.pack(v.template get<12>());
13018         o.pack(v.template get<13>());
13019         o.pack(v.template get<14>());
13020         o.pack(v.template get<15>());
13021         o.pack(v.template get<16>());
13022         o.pack(v.template get<17>());
13023         o.pack(v.template get<18>());
13024         o.pack(v.template get<19>());
13025         o.pack(v.template get<20>());
13026         o.pack(v.template get<21>());
13027         o.pack(v.template get<22>());
13028         o.pack(v.template get<23>());
13029         o.pack(v.template get<24>());
13030         o.pack(v.template get<25>());
13031         o.pack(v.template get<26>());
13032         o.pack(v.template get<27>());
13033         o.pack(v.template get<28>());
13034         return o;
13035     }
13036 };
13037 
13038 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
13039 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> > {
13040     template <typename Stream>
13041     msgpack::packer<Stream> & operator()(
13042         msgpack::packer<Stream> & o,
13043         const 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>& v) const {
13044         o.pack_array(30);
13045         
13046         o.pack(v.template get<0>());
13047         o.pack(v.template get<1>());
13048         o.pack(v.template get<2>());
13049         o.pack(v.template get<3>());
13050         o.pack(v.template get<4>());
13051         o.pack(v.template get<5>());
13052         o.pack(v.template get<6>());
13053         o.pack(v.template get<7>());
13054         o.pack(v.template get<8>());
13055         o.pack(v.template get<9>());
13056         o.pack(v.template get<10>());
13057         o.pack(v.template get<11>());
13058         o.pack(v.template get<12>());
13059         o.pack(v.template get<13>());
13060         o.pack(v.template get<14>());
13061         o.pack(v.template get<15>());
13062         o.pack(v.template get<16>());
13063         o.pack(v.template get<17>());
13064         o.pack(v.template get<18>());
13065         o.pack(v.template get<19>());
13066         o.pack(v.template get<20>());
13067         o.pack(v.template get<21>());
13068         o.pack(v.template get<22>());
13069         o.pack(v.template get<23>());
13070         o.pack(v.template get<24>());
13071         o.pack(v.template get<25>());
13072         o.pack(v.template get<26>());
13073         o.pack(v.template get<27>());
13074         o.pack(v.template get<28>());
13075         o.pack(v.template get<29>());
13076         return o;
13077     }
13078 };
13079 
13080 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
13081 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> > {
13082     template <typename Stream>
13083     msgpack::packer<Stream> & operator()(
13084         msgpack::packer<Stream> & o,
13085         const 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>& v) const {
13086         o.pack_array(31);
13087         
13088         o.pack(v.template get<0>());
13089         o.pack(v.template get<1>());
13090         o.pack(v.template get<2>());
13091         o.pack(v.template get<3>());
13092         o.pack(v.template get<4>());
13093         o.pack(v.template get<5>());
13094         o.pack(v.template get<6>());
13095         o.pack(v.template get<7>());
13096         o.pack(v.template get<8>());
13097         o.pack(v.template get<9>());
13098         o.pack(v.template get<10>());
13099         o.pack(v.template get<11>());
13100         o.pack(v.template get<12>());
13101         o.pack(v.template get<13>());
13102         o.pack(v.template get<14>());
13103         o.pack(v.template get<15>());
13104         o.pack(v.template get<16>());
13105         o.pack(v.template get<17>());
13106         o.pack(v.template get<18>());
13107         o.pack(v.template get<19>());
13108         o.pack(v.template get<20>());
13109         o.pack(v.template get<21>());
13110         o.pack(v.template get<22>());
13111         o.pack(v.template get<23>());
13112         o.pack(v.template get<24>());
13113         o.pack(v.template get<25>());
13114         o.pack(v.template get<26>());
13115         o.pack(v.template get<27>());
13116         o.pack(v.template get<28>());
13117         o.pack(v.template get<29>());
13118         o.pack(v.template get<30>());
13119         return o;
13120     }
13121 };
13122 
13123 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
13124 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> > {
13125     template <typename Stream>
13126     msgpack::packer<Stream> & operator()(
13127         msgpack::packer<Stream> & o,
13128         const 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>& v) const {
13129         o.pack_array(32);
13130         
13131         o.pack(v.template get<0>());
13132         o.pack(v.template get<1>());
13133         o.pack(v.template get<2>());
13134         o.pack(v.template get<3>());
13135         o.pack(v.template get<4>());
13136         o.pack(v.template get<5>());
13137         o.pack(v.template get<6>());
13138         o.pack(v.template get<7>());
13139         o.pack(v.template get<8>());
13140         o.pack(v.template get<9>());
13141         o.pack(v.template get<10>());
13142         o.pack(v.template get<11>());
13143         o.pack(v.template get<12>());
13144         o.pack(v.template get<13>());
13145         o.pack(v.template get<14>());
13146         o.pack(v.template get<15>());
13147         o.pack(v.template get<16>());
13148         o.pack(v.template get<17>());
13149         o.pack(v.template get<18>());
13150         o.pack(v.template get<19>());
13151         o.pack(v.template get<20>());
13152         o.pack(v.template get<21>());
13153         o.pack(v.template get<22>());
13154         o.pack(v.template get<23>());
13155         o.pack(v.template get<24>());
13156         o.pack(v.template get<25>());
13157         o.pack(v.template get<26>());
13158         o.pack(v.template get<27>());
13159         o.pack(v.template get<28>());
13160         o.pack(v.template get<29>());
13161         o.pack(v.template get<30>());
13162         o.pack(v.template get<31>());
13163         return o;
13164     }
13165 };
13166 
13167 /// @endcond
13168 
13169 template <>
13170 struct object_with_zone<type::tuple<> > {
13171     void operator()(
13172         msgpack::object::with_zone& o,
13173         const type::tuple<>&) const {
13174         o.type = msgpack::type::ARRAY;
13175         o.via.array.ptr = nullptr;
13176         o.via.array.size = 0;
13177     }
13178 };
13179 
13180 /// @cond
13181 
13182 template <typename A0>
13183 struct object_with_zone<type::tuple<A0> > {
13184     void operator()(
13185         msgpack::object::with_zone& o,
13186         const type::tuple<A0>& v) const {
13187         o.type = msgpack::type::ARRAY;
13188         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*1));
13189         o.via.array.size = 1;
13190         
13191         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13192     }
13193 };
13194 
13195 template <typename A0, typename A1>
13196 struct object_with_zone<type::tuple<A0, A1> > {
13197     void operator()(
13198         msgpack::object::with_zone& o,
13199         const type::tuple<A0, A1>& v) const {
13200         o.type = msgpack::type::ARRAY;
13201         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*2));
13202         o.via.array.size = 2;
13203         
13204         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13205         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13206     }
13207 };
13208 
13209 template <typename A0, typename A1, typename A2>
13210 struct object_with_zone<type::tuple<A0, A1, A2> > {
13211     void operator()(
13212         msgpack::object::with_zone& o,
13213         const type::tuple<A0, A1, A2>& v) const {
13214         o.type = msgpack::type::ARRAY;
13215         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*3));
13216         o.via.array.size = 3;
13217         
13218         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13219         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13220         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13221     }
13222 };
13223 
13224 template <typename A0, typename A1, typename A2, typename A3>
13225 struct object_with_zone<type::tuple<A0, A1, A2, A3> > {
13226     void operator()(
13227         msgpack::object::with_zone& o,
13228         const type::tuple<A0, A1, A2, A3>& v) const {
13229         o.type = msgpack::type::ARRAY;
13230         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*4));
13231         o.via.array.size = 4;
13232         
13233         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13234         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13235         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13236         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13237     }
13238 };
13239 
13240 template <typename A0, typename A1, typename A2, typename A3, typename A4>
13241 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4> > {
13242     void operator()(
13243         msgpack::object::with_zone& o,
13244         const type::tuple<A0, A1, A2, A3, A4>& v) const {
13245         o.type = msgpack::type::ARRAY;
13246         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*5));
13247         o.via.array.size = 5;
13248         
13249         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13250         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13251         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13252         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13253         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13254     }
13255 };
13256 
13257 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
13258 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5> > {
13259     void operator()(
13260         msgpack::object::with_zone& o,
13261         const type::tuple<A0, A1, A2, A3, A4, A5>& v) const {
13262         o.type = msgpack::type::ARRAY;
13263         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*6));
13264         o.via.array.size = 6;
13265         
13266         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13267         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13268         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13269         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13270         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13271         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13272     }
13273 };
13274 
13275 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
13276 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6> > {
13277     void operator()(
13278         msgpack::object::with_zone& o,
13279         const type::tuple<A0, A1, A2, A3, A4, A5, A6>& v) const {
13280         o.type = msgpack::type::ARRAY;
13281         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*7));
13282         o.via.array.size = 7;
13283         
13284         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13285         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13286         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13287         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13288         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13289         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13290         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13291     }
13292 };
13293 
13294 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
13295 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7> > {
13296     void operator()(
13297         msgpack::object::with_zone& o,
13298         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7>& v) const {
13299         o.type = msgpack::type::ARRAY;
13300         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*8));
13301         o.via.array.size = 8;
13302         
13303         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13304         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13305         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13306         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13307         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13308         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13309         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13310         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13311     }
13312 };
13313 
13314 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
13315 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8> > {
13316     void operator()(
13317         msgpack::object::with_zone& o,
13318         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8>& v) const {
13319         o.type = msgpack::type::ARRAY;
13320         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*9));
13321         o.via.array.size = 9;
13322         
13323         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13324         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13325         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13326         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13327         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13328         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13329         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13330         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13331         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13332     }
13333 };
13334 
13335 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
13336 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9> > {
13337     void operator()(
13338         msgpack::object::with_zone& o,
13339         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9>& v) const {
13340         o.type = msgpack::type::ARRAY;
13341         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*10));
13342         o.via.array.size = 10;
13343         
13344         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13345         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13346         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13347         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13348         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13349         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13350         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13351         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13352         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13353         o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13354     }
13355 };
13356 
13357 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
13358 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> > {
13359     void operator()(
13360         msgpack::object::with_zone& o,
13361         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>& v) const {
13362         o.type = msgpack::type::ARRAY;
13363         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*11));
13364         o.via.array.size = 11;
13365         
13366         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13367         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13368         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13369         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13370         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13371         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13372         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13373         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13374         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13375         o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13376         o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13377     }
13378 };
13379 
13380 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
13381 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> > {
13382     void operator()(
13383         msgpack::object::with_zone& o,
13384         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>& v) const {
13385         o.type = msgpack::type::ARRAY;
13386         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*12));
13387         o.via.array.size = 12;
13388         
13389         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13390         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13391         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13392         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13393         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13394         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13395         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13396         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13397         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13398         o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13399         o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13400         o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13401     }
13402 };
13403 
13404 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
13405 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> > {
13406     void operator()(
13407         msgpack::object::with_zone& o,
13408         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>& v) const {
13409         o.type = msgpack::type::ARRAY;
13410         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*13));
13411         o.via.array.size = 13;
13412         
13413         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13414         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13415         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13416         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13417         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13418         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13419         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13420         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13421         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13422         o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13423         o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13424         o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13425         o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13426     }
13427 };
13428 
13429 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
13430 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> > {
13431     void operator()(
13432         msgpack::object::with_zone& o,
13433         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>& v) const {
13434         o.type = msgpack::type::ARRAY;
13435         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*14));
13436         o.via.array.size = 14;
13437         
13438         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13439         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13440         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13441         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13442         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13443         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13444         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13445         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13446         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13447         o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13448         o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13449         o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13450         o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13451         o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13452     }
13453 };
13454 
13455 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
13456 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> > {
13457     void operator()(
13458         msgpack::object::with_zone& o,
13459         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>& v) const {
13460         o.type = msgpack::type::ARRAY;
13461         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*15));
13462         o.via.array.size = 15;
13463         
13464         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13465         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13466         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13467         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13468         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13469         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13470         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13471         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13472         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13473         o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13474         o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13475         o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13476         o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13477         o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13478         o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13479     }
13480 };
13481 
13482 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
13483 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> > {
13484     void operator()(
13485         msgpack::object::with_zone& o,
13486         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>& v) const {
13487         o.type = msgpack::type::ARRAY;
13488         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*16));
13489         o.via.array.size = 16;
13490         
13491         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13492         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13493         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13494         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13495         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13496         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13497         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13498         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13499         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13500         o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13501         o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13502         o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13503         o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13504         o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13505         o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13506         o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13507     }
13508 };
13509 
13510 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
13511 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> > {
13512     void operator()(
13513         msgpack::object::with_zone& o,
13514         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16>& v) const {
13515         o.type = msgpack::type::ARRAY;
13516         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*17));
13517         o.via.array.size = 17;
13518         
13519         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13520         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13521         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13522         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13523         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13524         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13525         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13526         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13527         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13528         o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13529         o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13530         o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13531         o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13532         o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13533         o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13534         o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13535         o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13536     }
13537 };
13538 
13539 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
13540 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17> > {
13541     void operator()(
13542         msgpack::object::with_zone& o,
13543         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17>& v) const {
13544         o.type = msgpack::type::ARRAY;
13545         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*18));
13546         o.via.array.size = 18;
13547         
13548         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13549         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13550         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13551         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13552         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13553         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13554         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13555         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13556         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13557         o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13558         o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13559         o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13560         o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13561         o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13562         o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13563         o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13564         o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13565         o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13566     }
13567 };
13568 
13569 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
13570 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> > {
13571     void operator()(
13572         msgpack::object::with_zone& o,
13573         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18>& v) const {
13574         o.type = msgpack::type::ARRAY;
13575         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*19));
13576         o.via.array.size = 19;
13577         
13578         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13579         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13580         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13581         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13582         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13583         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13584         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13585         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13586         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13587         o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13588         o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13589         o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13590         o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13591         o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13592         o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13593         o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13594         o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13595         o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13596         o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13597     }
13598 };
13599 
13600 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
13601 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> > {
13602     void operator()(
13603         msgpack::object::with_zone& o,
13604         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19>& v) const {
13605         o.type = msgpack::type::ARRAY;
13606         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*20));
13607         o.via.array.size = 20;
13608         
13609         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13610         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13611         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13612         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13613         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13614         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13615         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13616         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13617         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13618         o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13619         o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13620         o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13621         o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13622         o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13623         o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13624         o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13625         o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13626         o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13627         o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13628         o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13629     }
13630 };
13631 
13632 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20>
13633 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> > {
13634     void operator()(
13635         msgpack::object::with_zone& o,
13636         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>& v) const {
13637         o.type = msgpack::type::ARRAY;
13638         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*21));
13639         o.via.array.size = 21;
13640         
13641         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13642         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13643         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13644         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13645         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13646         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13647         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13648         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13649         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13650         o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13651         o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13652         o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13653         o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13654         o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13655         o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13656         o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13657         o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13658         o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13659         o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13660         o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13661         o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13662     }
13663 };
13664 
13665 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21>
13666 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> > {
13667     void operator()(
13668         msgpack::object::with_zone& o,
13669         const type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21>& v) const {
13670         o.type = msgpack::type::ARRAY;
13671         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*22));
13672         o.via.array.size = 22;
13673         
13674         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13675         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13676         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13677         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13678         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13679         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13680         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13681         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13682         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13683         o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13684         o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13685         o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13686         o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13687         o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13688         o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13689         o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13690         o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13691         o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13692         o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13693         o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13694         o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13695         o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13696     }
13697 };
13698 
13699 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22>
13700 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> > {
13701     void operator()(
13702         msgpack::object::with_zone& o,
13703         const 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>& v) const {
13704         o.type = msgpack::type::ARRAY;
13705         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*23));
13706         o.via.array.size = 23;
13707         
13708         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13709         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13710         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13711         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13712         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13713         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13714         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13715         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13716         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13717         o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13718         o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13719         o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13720         o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13721         o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13722         o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13723         o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13724         o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13725         o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13726         o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13727         o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13728         o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13729         o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13730         o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13731     }
13732 };
13733 
13734 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23>
13735 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> > {
13736     void operator()(
13737         msgpack::object::with_zone& o,
13738         const 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>& v) const {
13739         o.type = msgpack::type::ARRAY;
13740         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*24));
13741         o.via.array.size = 24;
13742         
13743         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13744         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13745         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13746         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13747         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13748         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13749         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13750         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13751         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13752         o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13753         o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13754         o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13755         o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13756         o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13757         o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13758         o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13759         o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13760         o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13761         o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13762         o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13763         o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13764         o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13765         o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13766         o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13767     }
13768 };
13769 
13770 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24>
13771 struct object_with_zone<type::tuple<A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24> > {
13772     void operator()(
13773         msgpack::object::with_zone& o,
13774         const 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>& v) const {
13775         o.type = msgpack::type::ARRAY;
13776         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*25));
13777         o.via.array.size = 25;
13778         
13779         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13780         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13781         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13782         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13783         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13784         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13785         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13786         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13787         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13788         o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13789         o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13790         o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13791         o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13792         o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13793         o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13794         o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13795         o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13796         o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13797         o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13798         o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13799         o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13800         o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13801         o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13802         o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13803         o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
13804     }
13805 };
13806 
13807 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25>
13808 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> > {
13809     void operator()(
13810         msgpack::object::with_zone& o,
13811         const 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>& v) const {
13812         o.type = msgpack::type::ARRAY;
13813         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*26));
13814         o.via.array.size = 26;
13815         
13816         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13817         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13818         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13819         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13820         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13821         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13822         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13823         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13824         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13825         o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13826         o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13827         o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13828         o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13829         o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13830         o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13831         o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13832         o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13833         o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13834         o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13835         o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13836         o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13837         o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13838         o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13839         o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13840         o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
13841         o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
13842     }
13843 };
13844 
13845 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26>
13846 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> > {
13847     void operator()(
13848         msgpack::object::with_zone& o,
13849         const 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>& v) const {
13850         o.type = msgpack::type::ARRAY;
13851         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*27));
13852         o.via.array.size = 27;
13853         
13854         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13855         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13856         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13857         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13858         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13859         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13860         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13861         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13862         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13863         o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13864         o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13865         o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13866         o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13867         o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13868         o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13869         o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13870         o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13871         o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13872         o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13873         o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13874         o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13875         o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13876         o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13877         o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13878         o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
13879         o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
13880         o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
13881     }
13882 };
13883 
13884 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27>
13885 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> > {
13886     void operator()(
13887         msgpack::object::with_zone& o,
13888         const 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>& v) const {
13889         o.type = msgpack::type::ARRAY;
13890         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*28));
13891         o.via.array.size = 28;
13892         
13893         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13894         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13895         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13896         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13897         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13898         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13899         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13900         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13901         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13902         o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13903         o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13904         o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13905         o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13906         o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13907         o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13908         o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13909         o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13910         o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13911         o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13912         o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13913         o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13914         o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13915         o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13916         o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13917         o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
13918         o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
13919         o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
13920         o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone);
13921     }
13922 };
13923 
13924 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28>
13925 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> > {
13926     void operator()(
13927         msgpack::object::with_zone& o,
13928         const 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>& v) const {
13929         o.type = msgpack::type::ARRAY;
13930         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*29));
13931         o.via.array.size = 29;
13932         
13933         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13934         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13935         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13936         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13937         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13938         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13939         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13940         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13941         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13942         o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13943         o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13944         o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13945         o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13946         o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13947         o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13948         o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13949         o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13950         o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13951         o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13952         o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13953         o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13954         o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13955         o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13956         o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13957         o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
13958         o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
13959         o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
13960         o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone);
13961         o.via.array.ptr[28] = msgpack::object(v.template get<28>(), o.zone);
13962     }
13963 };
13964 
13965 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29>
13966 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> > {
13967     void operator()(
13968         msgpack::object::with_zone& o,
13969         const 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>& v) const {
13970         o.type = msgpack::type::ARRAY;
13971         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*30));
13972         o.via.array.size = 30;
13973         
13974         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
13975         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
13976         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
13977         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
13978         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
13979         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
13980         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
13981         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
13982         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
13983         o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
13984         o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
13985         o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
13986         o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
13987         o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
13988         o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
13989         o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
13990         o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
13991         o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
13992         o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
13993         o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
13994         o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
13995         o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
13996         o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
13997         o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
13998         o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
13999         o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
14000         o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
14001         o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone);
14002         o.via.array.ptr[28] = msgpack::object(v.template get<28>(), o.zone);
14003         o.via.array.ptr[29] = msgpack::object(v.template get<29>(), o.zone);
14004     }
14005 };
14006 
14007 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename A20, typename A21, typename A22, typename A23, typename A24, typename A25, typename A26, typename A27, typename A28, typename A29, typename A30>
14008 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> > {
14009     void operator()(
14010         msgpack::object::with_zone& o,
14011         const 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>& v) const {
14012         o.type = msgpack::type::ARRAY;
14013         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*31));
14014         o.via.array.size = 31;
14015         
14016         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
14017         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
14018         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
14019         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
14020         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
14021         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
14022         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
14023         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
14024         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
14025         o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
14026         o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
14027         o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
14028         o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
14029         o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
14030         o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
14031         o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
14032         o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
14033         o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
14034         o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
14035         o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
14036         o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
14037         o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
14038         o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
14039         o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
14040         o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
14041         o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
14042         o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
14043         o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone);
14044         o.via.array.ptr[28] = msgpack::object(v.template get<28>(), o.zone);
14045         o.via.array.ptr[29] = msgpack::object(v.template get<29>(), o.zone);
14046         o.via.array.ptr[30] = msgpack::object(v.template get<30>(), o.zone);
14047     }
14048 };
14049 
14050 template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, 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>
14051 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> > {
14052     void operator()(
14053         msgpack::object::with_zone& o,
14054         const 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>& v) const {
14055         o.type = msgpack::type::ARRAY;
14056         o.via.array.ptr = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*32));
14057         o.via.array.size = 32;
14058         
14059         o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone);
14060         o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone);
14061         o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone);
14062         o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone);
14063         o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone);
14064         o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone);
14065         o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone);
14066         o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone);
14067         o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone);
14068         o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone);
14069         o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone);
14070         o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone);
14071         o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone);
14072         o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone);
14073         o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone);
14074         o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone);
14075         o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone);
14076         o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone);
14077         o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone);
14078         o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone);
14079         o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone);
14080         o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone);
14081         o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone);
14082         o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone);
14083         o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone);
14084         o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone);
14085         o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone);
14086         o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone);
14087         o.via.array.ptr[28] = msgpack::object(v.template get<28>(), o.zone);
14088         o.via.array.ptr[29] = msgpack::object(v.template get<29>(), o.zone);
14089         o.via.array.ptr[30] = msgpack::object(v.template get<30>(), o.zone);
14090         o.via.array.ptr[31] = msgpack::object(v.template get<31>(), o.zone);
14091     }
14092 };
14093 
14094 /// @endcond
14095 
14096 } // namespace adaptor
14097 
14098 /// @cond
14099 }  // MSGPACK_API_VERSION_NAMESPACE(v1)
14100 /// @endcond
14101 
14102 }  // namespace msgpack
14103 
14104 #endif // MSGPACK_CPP03_MSGPACK_TUPLE_HPP
14105