// // MessagePack for C++ static resolution routine // // Copyright (C) 2008-2013 FURUHASHI Sadayuki and KONDO Takatoshi // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // #ifndef MSGPACK_CPP03_MSGPACK_TUPLE_HPP #define MSGPACK_CPP03_MSGPACK_TUPLE_HPP #include "msgpack/versioning.hpp" #include "msgpack/object.hpp" #include "msgpack/adaptor/adaptor_base.hpp" namespace msgpack { /// @cond MSGPACK_API_VERSION_NAMESPACE(v1) { /// @endcond namespace type { // FIXME operator== // FIXME operator!= /// @cond template struct tuple; /// @endcond template struct tuple_element; template struct const_tuple_element; template struct tuple_type { typedef T type; typedef T value_type; typedef T& reference; typedef const T& const_reference; typedef const T& transparent_reference; }; template struct tuple_type { typedef T type; typedef T& value_type; typedef T& reference; typedef const T& const_reference; typedef T& transparent_reference; }; template struct tuple_type { typedef T type; typedef T& value_type; typedef T& reference; typedef const T& const_reference; typedef const T& transparent_reference; }; /// @cond template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 9> : tuple_type { tuple_element(tuple& x) : m_x(x.a9) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 9> : tuple_type { tuple_element(tuple& x) : m_x(x.a9) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 10> : tuple_type { tuple_element(tuple& x) : m_x(x.a10) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 9> : tuple_type { tuple_element(tuple& x) : m_x(x.a9) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 10> : tuple_type { tuple_element(tuple& x) : m_x(x.a10) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 11> : tuple_type { tuple_element(tuple& x) : m_x(x.a11) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 9> : tuple_type { tuple_element(tuple& x) : m_x(x.a9) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 10> : tuple_type { tuple_element(tuple& x) : m_x(x.a10) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 11> : tuple_type { tuple_element(tuple& x) : m_x(x.a11) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 12> : tuple_type { tuple_element(tuple& x) : m_x(x.a12) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 9> : tuple_type { tuple_element(tuple& x) : m_x(x.a9) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 10> : tuple_type { tuple_element(tuple& x) : m_x(x.a10) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 11> : tuple_type { tuple_element(tuple& x) : m_x(x.a11) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 12> : tuple_type { tuple_element(tuple& x) : m_x(x.a12) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 13> : tuple_type { tuple_element(tuple& x) : m_x(x.a13) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 9> : tuple_type { tuple_element(tuple& x) : m_x(x.a9) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 10> : tuple_type { tuple_element(tuple& x) : m_x(x.a10) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 11> : tuple_type { tuple_element(tuple& x) : m_x(x.a11) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 12> : tuple_type { tuple_element(tuple& x) : m_x(x.a12) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 13> : tuple_type { tuple_element(tuple& x) : m_x(x.a13) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 14> : tuple_type { tuple_element(tuple& x) : m_x(x.a14) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 9> : tuple_type { tuple_element(tuple& x) : m_x(x.a9) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 10> : tuple_type { tuple_element(tuple& x) : m_x(x.a10) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 11> : tuple_type { tuple_element(tuple& x) : m_x(x.a11) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 12> : tuple_type { tuple_element(tuple& x) : m_x(x.a12) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 13> : tuple_type { tuple_element(tuple& x) : m_x(x.a13) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 14> : tuple_type { tuple_element(tuple& x) : m_x(x.a14) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 15> : tuple_type { tuple_element(tuple& x) : m_x(x.a15) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 9> : tuple_type { tuple_element(tuple& x) : m_x(x.a9) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 10> : tuple_type { tuple_element(tuple& x) : m_x(x.a10) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 11> : tuple_type { tuple_element(tuple& x) : m_x(x.a11) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 12> : tuple_type { tuple_element(tuple& x) : m_x(x.a12) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 13> : tuple_type { tuple_element(tuple& x) : m_x(x.a13) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 14> : tuple_type { tuple_element(tuple& x) : m_x(x.a14) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 15> : tuple_type { tuple_element(tuple& x) : m_x(x.a15) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 16> : tuple_type { tuple_element(tuple& x) : m_x(x.a16) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 9> : tuple_type { tuple_element(tuple& x) : m_x(x.a9) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 10> : tuple_type { tuple_element(tuple& x) : m_x(x.a10) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 11> : tuple_type { tuple_element(tuple& x) : m_x(x.a11) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 12> : tuple_type { tuple_element(tuple& x) : m_x(x.a12) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 13> : tuple_type { tuple_element(tuple& x) : m_x(x.a13) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 14> : tuple_type { tuple_element(tuple& x) : m_x(x.a14) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 15> : tuple_type { tuple_element(tuple& x) : m_x(x.a15) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 16> : tuple_type { tuple_element(tuple& x) : m_x(x.a16) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 17> : tuple_type { tuple_element(tuple& x) : m_x(x.a17) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 9> : tuple_type { tuple_element(tuple& x) : m_x(x.a9) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 10> : tuple_type { tuple_element(tuple& x) : m_x(x.a10) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 11> : tuple_type { tuple_element(tuple& x) : m_x(x.a11) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 12> : tuple_type { tuple_element(tuple& x) : m_x(x.a12) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 13> : tuple_type { tuple_element(tuple& x) : m_x(x.a13) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 14> : tuple_type { tuple_element(tuple& x) : m_x(x.a14) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 15> : tuple_type { tuple_element(tuple& x) : m_x(x.a15) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 16> : tuple_type { tuple_element(tuple& x) : m_x(x.a16) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 17> : tuple_type { tuple_element(tuple& x) : m_x(x.a17) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 18> : tuple_type { tuple_element(tuple& x) : m_x(x.a18) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 9> : tuple_type { tuple_element(tuple& x) : m_x(x.a9) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 10> : tuple_type { tuple_element(tuple& x) : m_x(x.a10) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 11> : tuple_type { tuple_element(tuple& x) : m_x(x.a11) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 12> : tuple_type { tuple_element(tuple& x) : m_x(x.a12) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 13> : tuple_type { tuple_element(tuple& x) : m_x(x.a13) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 14> : tuple_type { tuple_element(tuple& x) : m_x(x.a14) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 15> : tuple_type { tuple_element(tuple& x) : m_x(x.a15) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 16> : tuple_type { tuple_element(tuple& x) : m_x(x.a16) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 17> : tuple_type { tuple_element(tuple& x) : m_x(x.a17) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 18> : tuple_type { tuple_element(tuple& x) : m_x(x.a18) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 19> : tuple_type { tuple_element(tuple& x) : m_x(x.a19) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 9> : tuple_type { tuple_element(tuple& x) : m_x(x.a9) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 10> : tuple_type { tuple_element(tuple& x) : m_x(x.a10) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 11> : tuple_type { tuple_element(tuple& x) : m_x(x.a11) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 12> : tuple_type { tuple_element(tuple& x) : m_x(x.a12) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 13> : tuple_type { tuple_element(tuple& x) : m_x(x.a13) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 14> : tuple_type { tuple_element(tuple& x) : m_x(x.a14) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 15> : tuple_type { tuple_element(tuple& x) : m_x(x.a15) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 16> : tuple_type { tuple_element(tuple& x) : m_x(x.a16) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 17> : tuple_type { tuple_element(tuple& x) : m_x(x.a17) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 18> : tuple_type { tuple_element(tuple& x) : m_x(x.a18) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 19> : tuple_type { tuple_element(tuple& x) : m_x(x.a19) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 20> : tuple_type { tuple_element(tuple& x) : m_x(x.a20) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 9> : tuple_type { tuple_element(tuple& x) : m_x(x.a9) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 10> : tuple_type { tuple_element(tuple& x) : m_x(x.a10) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 11> : tuple_type { tuple_element(tuple& x) : m_x(x.a11) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 12> : tuple_type { tuple_element(tuple& x) : m_x(x.a12) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 13> : tuple_type { tuple_element(tuple& x) : m_x(x.a13) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 14> : tuple_type { tuple_element(tuple& x) : m_x(x.a14) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 15> : tuple_type { tuple_element(tuple& x) : m_x(x.a15) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 16> : tuple_type { tuple_element(tuple& x) : m_x(x.a16) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 17> : tuple_type { tuple_element(tuple& x) : m_x(x.a17) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 18> : tuple_type { tuple_element(tuple& x) : m_x(x.a18) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 19> : tuple_type { tuple_element(tuple& x) : m_x(x.a19) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 20> : tuple_type { tuple_element(tuple& x) : m_x(x.a20) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 21> : tuple_type { tuple_element(tuple& x) : m_x(x.a21) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 9> : tuple_type { tuple_element(tuple& x) : m_x(x.a9) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 10> : tuple_type { tuple_element(tuple& x) : m_x(x.a10) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 11> : tuple_type { tuple_element(tuple& x) : m_x(x.a11) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 12> : tuple_type { tuple_element(tuple& x) : m_x(x.a12) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 13> : tuple_type { tuple_element(tuple& x) : m_x(x.a13) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 14> : tuple_type { tuple_element(tuple& x) : m_x(x.a14) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 15> : tuple_type { tuple_element(tuple& x) : m_x(x.a15) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 16> : tuple_type { tuple_element(tuple& x) : m_x(x.a16) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 17> : tuple_type { tuple_element(tuple& x) : m_x(x.a17) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 18> : tuple_type { tuple_element(tuple& x) : m_x(x.a18) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 19> : tuple_type { tuple_element(tuple& x) : m_x(x.a19) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 20> : tuple_type { tuple_element(tuple& x) : m_x(x.a20) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 21> : tuple_type { tuple_element(tuple& x) : m_x(x.a21) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 22> : tuple_type { tuple_element(tuple& x) : m_x(x.a22) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 9> : tuple_type { tuple_element(tuple& x) : m_x(x.a9) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 10> : tuple_type { tuple_element(tuple& x) : m_x(x.a10) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 11> : tuple_type { tuple_element(tuple& x) : m_x(x.a11) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 12> : tuple_type { tuple_element(tuple& x) : m_x(x.a12) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 13> : tuple_type { tuple_element(tuple& x) : m_x(x.a13) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 14> : tuple_type { tuple_element(tuple& x) : m_x(x.a14) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 15> : tuple_type { tuple_element(tuple& x) : m_x(x.a15) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 16> : tuple_type { tuple_element(tuple& x) : m_x(x.a16) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 17> : tuple_type { tuple_element(tuple& x) : m_x(x.a17) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 18> : tuple_type { tuple_element(tuple& x) : m_x(x.a18) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 19> : tuple_type { tuple_element(tuple& x) : m_x(x.a19) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 20> : tuple_type { tuple_element(tuple& x) : m_x(x.a20) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 21> : tuple_type { tuple_element(tuple& x) : m_x(x.a21) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 22> : tuple_type { tuple_element(tuple& x) : m_x(x.a22) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 23> : tuple_type { tuple_element(tuple& x) : m_x(x.a23) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 9> : tuple_type { tuple_element(tuple& x) : m_x(x.a9) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 10> : tuple_type { tuple_element(tuple& x) : m_x(x.a10) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 11> : tuple_type { tuple_element(tuple& x) : m_x(x.a11) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 12> : tuple_type { tuple_element(tuple& x) : m_x(x.a12) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 13> : tuple_type { tuple_element(tuple& x) : m_x(x.a13) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 14> : tuple_type { tuple_element(tuple& x) : m_x(x.a14) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 15> : tuple_type { tuple_element(tuple& x) : m_x(x.a15) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 16> : tuple_type { tuple_element(tuple& x) : m_x(x.a16) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 17> : tuple_type { tuple_element(tuple& x) : m_x(x.a17) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 18> : tuple_type { tuple_element(tuple& x) : m_x(x.a18) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 19> : tuple_type { tuple_element(tuple& x) : m_x(x.a19) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 20> : tuple_type { tuple_element(tuple& x) : m_x(x.a20) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 21> : tuple_type { tuple_element(tuple& x) : m_x(x.a21) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 22> : tuple_type { tuple_element(tuple& x) : m_x(x.a22) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 23> : tuple_type { tuple_element(tuple& x) : m_x(x.a23) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 24> : tuple_type { tuple_element(tuple& x) : m_x(x.a24) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 9> : tuple_type { tuple_element(tuple& x) : m_x(x.a9) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 10> : tuple_type { tuple_element(tuple& x) : m_x(x.a10) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 11> : tuple_type { tuple_element(tuple& x) : m_x(x.a11) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 12> : tuple_type { tuple_element(tuple& x) : m_x(x.a12) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 13> : tuple_type { tuple_element(tuple& x) : m_x(x.a13) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 14> : tuple_type { tuple_element(tuple& x) : m_x(x.a14) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 15> : tuple_type { tuple_element(tuple& x) : m_x(x.a15) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 16> : tuple_type { tuple_element(tuple& x) : m_x(x.a16) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 17> : tuple_type { tuple_element(tuple& x) : m_x(x.a17) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 18> : tuple_type { tuple_element(tuple& x) : m_x(x.a18) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 19> : tuple_type { tuple_element(tuple& x) : m_x(x.a19) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 20> : tuple_type { tuple_element(tuple& x) : m_x(x.a20) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 21> : tuple_type { tuple_element(tuple& x) : m_x(x.a21) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 22> : tuple_type { tuple_element(tuple& x) : m_x(x.a22) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 23> : tuple_type { tuple_element(tuple& x) : m_x(x.a23) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 24> : tuple_type { tuple_element(tuple& x) : m_x(x.a24) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 25> : tuple_type { tuple_element(tuple& x) : m_x(x.a25) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 9> : tuple_type { tuple_element(tuple& x) : m_x(x.a9) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 10> : tuple_type { tuple_element(tuple& x) : m_x(x.a10) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 11> : tuple_type { tuple_element(tuple& x) : m_x(x.a11) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 12> : tuple_type { tuple_element(tuple& x) : m_x(x.a12) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 13> : tuple_type { tuple_element(tuple& x) : m_x(x.a13) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 14> : tuple_type { tuple_element(tuple& x) : m_x(x.a14) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 15> : tuple_type { tuple_element(tuple& x) : m_x(x.a15) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 16> : tuple_type { tuple_element(tuple& x) : m_x(x.a16) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 17> : tuple_type { tuple_element(tuple& x) : m_x(x.a17) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 18> : tuple_type { tuple_element(tuple& x) : m_x(x.a18) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 19> : tuple_type { tuple_element(tuple& x) : m_x(x.a19) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 20> : tuple_type { tuple_element(tuple& x) : m_x(x.a20) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 21> : tuple_type { tuple_element(tuple& x) : m_x(x.a21) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 22> : tuple_type { tuple_element(tuple& x) : m_x(x.a22) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 23> : tuple_type { tuple_element(tuple& x) : m_x(x.a23) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 24> : tuple_type { tuple_element(tuple& x) : m_x(x.a24) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 25> : tuple_type { tuple_element(tuple& x) : m_x(x.a25) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 26> : tuple_type { tuple_element(tuple& x) : m_x(x.a26) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 9> : tuple_type { tuple_element(tuple& x) : m_x(x.a9) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 10> : tuple_type { tuple_element(tuple& x) : m_x(x.a10) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 11> : tuple_type { tuple_element(tuple& x) : m_x(x.a11) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 12> : tuple_type { tuple_element(tuple& x) : m_x(x.a12) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 13> : tuple_type { tuple_element(tuple& x) : m_x(x.a13) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 14> : tuple_type { tuple_element(tuple& x) : m_x(x.a14) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 15> : tuple_type { tuple_element(tuple& x) : m_x(x.a15) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 16> : tuple_type { tuple_element(tuple& x) : m_x(x.a16) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 17> : tuple_type { tuple_element(tuple& x) : m_x(x.a17) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 18> : tuple_type { tuple_element(tuple& x) : m_x(x.a18) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 19> : tuple_type { tuple_element(tuple& x) : m_x(x.a19) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 20> : tuple_type { tuple_element(tuple& x) : m_x(x.a20) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 21> : tuple_type { tuple_element(tuple& x) : m_x(x.a21) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 22> : tuple_type { tuple_element(tuple& x) : m_x(x.a22) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 23> : tuple_type { tuple_element(tuple& x) : m_x(x.a23) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 24> : tuple_type { tuple_element(tuple& x) : m_x(x.a24) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 25> : tuple_type { tuple_element(tuple& x) : m_x(x.a25) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 26> : tuple_type { tuple_element(tuple& x) : m_x(x.a26) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 27> : tuple_type { tuple_element(tuple& x) : m_x(x.a27) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 9> : tuple_type { tuple_element(tuple& x) : m_x(x.a9) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 10> : tuple_type { tuple_element(tuple& x) : m_x(x.a10) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 11> : tuple_type { tuple_element(tuple& x) : m_x(x.a11) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 12> : tuple_type { tuple_element(tuple& x) : m_x(x.a12) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 13> : tuple_type { tuple_element(tuple& x) : m_x(x.a13) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 14> : tuple_type { tuple_element(tuple& x) : m_x(x.a14) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 15> : tuple_type { tuple_element(tuple& x) : m_x(x.a15) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 16> : tuple_type { tuple_element(tuple& x) : m_x(x.a16) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 17> : tuple_type { tuple_element(tuple& x) : m_x(x.a17) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 18> : tuple_type { tuple_element(tuple& x) : m_x(x.a18) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 19> : tuple_type { tuple_element(tuple& x) : m_x(x.a19) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 20> : tuple_type { tuple_element(tuple& x) : m_x(x.a20) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 21> : tuple_type { tuple_element(tuple& x) : m_x(x.a21) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 22> : tuple_type { tuple_element(tuple& x) : m_x(x.a22) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 23> : tuple_type { tuple_element(tuple& x) : m_x(x.a23) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 24> : tuple_type { tuple_element(tuple& x) : m_x(x.a24) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 25> : tuple_type { tuple_element(tuple& x) : m_x(x.a25) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 26> : tuple_type { tuple_element(tuple& x) : m_x(x.a26) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 27> : tuple_type { tuple_element(tuple& x) : m_x(x.a27) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 28> : tuple_type { tuple_element(tuple& x) : m_x(x.a28) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 9> : tuple_type { tuple_element(tuple& x) : m_x(x.a9) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 10> : tuple_type { tuple_element(tuple& x) : m_x(x.a10) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 11> : tuple_type { tuple_element(tuple& x) : m_x(x.a11) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 12> : tuple_type { tuple_element(tuple& x) : m_x(x.a12) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 13> : tuple_type { tuple_element(tuple& x) : m_x(x.a13) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 14> : tuple_type { tuple_element(tuple& x) : m_x(x.a14) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 15> : tuple_type { tuple_element(tuple& x) : m_x(x.a15) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 16> : tuple_type { tuple_element(tuple& x) : m_x(x.a16) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 17> : tuple_type { tuple_element(tuple& x) : m_x(x.a17) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 18> : tuple_type { tuple_element(tuple& x) : m_x(x.a18) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 19> : tuple_type { tuple_element(tuple& x) : m_x(x.a19) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 20> : tuple_type { tuple_element(tuple& x) : m_x(x.a20) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 21> : tuple_type { tuple_element(tuple& x) : m_x(x.a21) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 22> : tuple_type { tuple_element(tuple& x) : m_x(x.a22) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 23> : tuple_type { tuple_element(tuple& x) : m_x(x.a23) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 24> : tuple_type { tuple_element(tuple& x) : m_x(x.a24) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 25> : tuple_type { tuple_element(tuple& x) : m_x(x.a25) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 26> : tuple_type { tuple_element(tuple& x) : m_x(x.a26) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 27> : tuple_type { tuple_element(tuple& x) : m_x(x.a27) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 28> : tuple_type { tuple_element(tuple& x) : m_x(x.a28) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 29> : tuple_type { tuple_element(tuple& x) : m_x(x.a29) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 9> : tuple_type { tuple_element(tuple& x) : m_x(x.a9) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 10> : tuple_type { tuple_element(tuple& x) : m_x(x.a10) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 11> : tuple_type { tuple_element(tuple& x) : m_x(x.a11) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 12> : tuple_type { tuple_element(tuple& x) : m_x(x.a12) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 13> : tuple_type { tuple_element(tuple& x) : m_x(x.a13) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 14> : tuple_type { tuple_element(tuple& x) : m_x(x.a14) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 15> : tuple_type { tuple_element(tuple& x) : m_x(x.a15) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 16> : tuple_type { tuple_element(tuple& x) : m_x(x.a16) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 17> : tuple_type { tuple_element(tuple& x) : m_x(x.a17) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 18> : tuple_type { tuple_element(tuple& x) : m_x(x.a18) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 19> : tuple_type { tuple_element(tuple& x) : m_x(x.a19) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 20> : tuple_type { tuple_element(tuple& x) : m_x(x.a20) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 21> : tuple_type { tuple_element(tuple& x) : m_x(x.a21) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 22> : tuple_type { tuple_element(tuple& x) : m_x(x.a22) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 23> : tuple_type { tuple_element(tuple& x) : m_x(x.a23) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 24> : tuple_type { tuple_element(tuple& x) : m_x(x.a24) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 25> : tuple_type { tuple_element(tuple& x) : m_x(x.a25) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 26> : tuple_type { tuple_element(tuple& x) : m_x(x.a26) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 27> : tuple_type { tuple_element(tuple& x) : m_x(x.a27) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 28> : tuple_type { tuple_element(tuple& x) : m_x(x.a28) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 29> : tuple_type { tuple_element(tuple& x) : m_x(x.a29) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 30> : tuple_type { tuple_element(tuple& x) : m_x(x.a30) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 0> : tuple_type { tuple_element(tuple& x) : m_x(x.a0) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 1> : tuple_type { tuple_element(tuple& x) : m_x(x.a1) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 2> : tuple_type { tuple_element(tuple& x) : m_x(x.a2) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 3> : tuple_type { tuple_element(tuple& x) : m_x(x.a3) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 4> : tuple_type { tuple_element(tuple& x) : m_x(x.a4) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 5> : tuple_type { tuple_element(tuple& x) : m_x(x.a5) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 6> : tuple_type { tuple_element(tuple& x) : m_x(x.a6) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 7> : tuple_type { tuple_element(tuple& x) : m_x(x.a7) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 8> : tuple_type { tuple_element(tuple& x) : m_x(x.a8) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 9> : tuple_type { tuple_element(tuple& x) : m_x(x.a9) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 10> : tuple_type { tuple_element(tuple& x) : m_x(x.a10) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 11> : tuple_type { tuple_element(tuple& x) : m_x(x.a11) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 12> : tuple_type { tuple_element(tuple& x) : m_x(x.a12) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 13> : tuple_type { tuple_element(tuple& x) : m_x(x.a13) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 14> : tuple_type { tuple_element(tuple& x) : m_x(x.a14) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 15> : tuple_type { tuple_element(tuple& x) : m_x(x.a15) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 16> : tuple_type { tuple_element(tuple& x) : m_x(x.a16) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 17> : tuple_type { tuple_element(tuple& x) : m_x(x.a17) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 18> : tuple_type { tuple_element(tuple& x) : m_x(x.a18) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 19> : tuple_type { tuple_element(tuple& x) : m_x(x.a19) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 20> : tuple_type { tuple_element(tuple& x) : m_x(x.a20) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 21> : tuple_type { tuple_element(tuple& x) : m_x(x.a21) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 22> : tuple_type { tuple_element(tuple& x) : m_x(x.a22) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 23> : tuple_type { tuple_element(tuple& x) : m_x(x.a23) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 24> : tuple_type { tuple_element(tuple& x) : m_x(x.a24) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 25> : tuple_type { tuple_element(tuple& x) : m_x(x.a25) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 26> : tuple_type { tuple_element(tuple& x) : m_x(x.a26) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 27> : tuple_type { tuple_element(tuple& x) : m_x(x.a27) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 28> : tuple_type { tuple_element(tuple& x) : m_x(x.a28) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 29> : tuple_type { tuple_element(tuple& x) : m_x(x.a29) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 30> : tuple_type { tuple_element(tuple& x) : m_x(x.a30) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct tuple_element, 31> : tuple_type { tuple_element(tuple& x) : m_x(x.a31) {} typename tuple_type::reference get() { return m_x; } typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 9> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a9) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 9> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a9) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 10> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a10) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 9> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a9) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 10> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a10) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 11> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a11) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 9> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a9) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 10> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a10) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 11> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a11) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 12> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a12) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 9> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a9) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 10> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a10) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 11> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a11) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 12> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a12) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 13> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a13) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 9> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a9) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 10> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a10) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 11> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a11) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 12> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a12) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 13> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a13) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 14> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a14) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 9> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a9) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 10> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a10) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 11> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a11) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 12> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a12) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 13> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a13) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 14> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a14) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 15> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a15) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 9> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a9) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 10> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a10) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 11> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a11) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 12> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a12) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 13> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a13) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 14> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a14) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 15> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a15) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 16> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a16) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 9> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a9) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 10> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a10) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 11> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a11) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 12> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a12) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 13> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a13) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 14> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a14) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 15> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a15) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 16> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a16) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 17> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a17) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 9> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a9) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 10> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a10) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 11> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a11) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 12> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a12) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 13> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a13) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 14> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a14) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 15> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a15) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 16> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a16) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 17> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a17) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 18> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a18) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 9> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a9) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 10> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a10) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 11> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a11) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 12> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a12) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 13> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a13) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 14> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a14) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 15> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a15) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 16> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a16) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 17> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a17) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 18> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a18) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 19> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a19) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 9> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a9) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 10> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a10) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 11> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a11) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 12> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a12) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 13> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a13) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 14> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a14) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 15> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a15) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 16> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a16) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 17> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a17) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 18> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a18) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 19> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a19) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 20> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a20) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 9> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a9) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 10> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a10) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 11> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a11) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 12> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a12) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 13> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a13) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 14> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a14) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 15> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a15) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 16> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a16) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 17> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a17) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 18> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a18) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 19> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a19) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 20> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a20) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 21> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a21) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 9> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a9) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 10> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a10) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 11> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a11) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 12> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a12) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 13> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a13) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 14> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a14) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 15> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a15) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 16> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a16) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 17> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a17) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 18> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a18) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 19> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a19) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 20> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a20) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 21> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a21) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 22> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a22) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 9> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a9) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 10> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a10) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 11> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a11) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 12> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a12) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 13> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a13) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 14> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a14) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 15> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a15) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 16> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a16) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 17> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a17) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 18> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a18) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 19> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a19) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 20> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a20) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 21> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a21) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 22> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a22) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 23> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a23) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 9> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a9) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 10> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a10) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 11> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a11) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 12> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a12) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 13> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a13) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 14> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a14) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 15> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a15) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 16> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a16) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 17> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a17) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 18> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a18) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 19> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a19) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 20> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a20) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 21> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a21) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 22> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a22) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 23> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a23) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 24> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a24) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 9> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a9) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 10> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a10) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 11> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a11) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 12> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a12) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 13> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a13) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 14> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a14) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 15> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a15) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 16> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a16) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 17> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a17) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 18> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a18) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 19> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a19) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 20> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a20) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 21> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a21) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 22> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a22) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 23> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a23) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 24> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a24) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 25> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a25) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 9> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a9) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 10> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a10) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 11> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a11) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 12> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a12) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 13> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a13) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 14> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a14) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 15> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a15) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 16> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a16) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 17> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a17) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 18> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a18) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 19> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a19) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 20> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a20) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 21> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a21) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 22> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a22) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 23> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a23) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 24> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a24) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 25> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a25) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 26> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a26) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 9> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a9) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 10> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a10) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 11> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a11) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 12> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a12) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 13> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a13) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 14> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a14) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 15> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a15) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 16> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a16) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 17> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a17) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 18> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a18) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 19> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a19) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 20> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a20) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 21> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a21) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 22> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a22) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 23> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a23) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 24> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a24) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 25> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a25) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 26> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a26) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 27> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a27) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 9> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a9) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 10> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a10) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 11> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a11) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 12> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a12) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 13> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a13) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 14> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a14) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 15> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a15) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 16> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a16) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 17> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a17) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 18> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a18) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 19> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a19) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 20> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a20) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 21> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a21) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 22> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a22) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 23> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a23) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 24> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a24) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 25> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a25) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 26> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a26) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 27> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a27) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 28> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a28) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 9> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a9) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 10> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a10) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 11> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a11) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 12> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a12) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 13> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a13) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 14> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a14) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 15> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a15) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 16> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a16) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 17> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a17) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 18> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a18) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 19> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a19) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 20> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a20) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 21> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a21) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 22> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a22) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 23> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a23) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 24> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a24) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 25> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a25) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 26> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a26) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 27> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a27) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 28> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a28) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 29> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a29) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 9> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a9) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 10> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a10) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 11> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a11) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 12> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a12) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 13> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a13) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 14> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a14) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 15> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a15) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 16> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a16) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 17> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a17) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 18> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a18) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 19> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a19) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 20> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a20) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 21> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a21) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 22> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a22) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 23> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a23) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 24> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a24) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 25> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a25) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 26> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a26) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 27> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a27) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 28> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a28) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 29> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a29) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 30> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a30) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 0> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a0) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 1> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a1) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 2> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a2) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 3> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a3) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 4> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a4) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 5> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a5) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 6> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a6) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 7> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a7) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 8> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a8) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 9> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a9) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 10> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a10) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 11> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a11) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 12> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a12) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 13> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a13) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 14> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a14) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 15> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a15) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 16> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a16) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 17> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a17) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 18> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a18) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 19> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a19) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 20> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a20) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 21> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a21) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 22> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a22) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 23> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a23) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 24> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a24) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 25> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a25) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 26> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a26) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 27> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a27) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 28> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a28) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 29> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a29) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 30> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a30) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; template struct const_tuple_element, 31> : tuple_type { const_tuple_element(const tuple& x) : m_x(x.a31) {} typename tuple_type::const_reference get() const { return m_x; } private: typename tuple_type::const_reference m_x; }; /// @endcond template <> struct tuple<> { tuple() {} tuple(msgpack::object const& o) { o.convert(*this); } typedef tuple<> value_type; }; /// @cond template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0) : a0(_a0) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } A0 a0; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1) : a0(_a0), a1(_a1) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } A0 a0; A1 a1; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2) : a0(_a0), a1(_a1), a2(_a2) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } A0 a0; A1 a1; A2 a2; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3) : a0(_a0), a1(_a1), a2(_a2), a3(_a3) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } A0 a0; A1 a1; A2 a2; A3 a3; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4) : a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } A0 a0; A1 a1; A2 a2; A3 a3; A4 a4; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5) : a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } A0 a0; A1 a1; A2 a2; A3 a3; A4 a4; A5 a5; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6) : a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } A0 a0; A1 a1; A2 a2; A3 a3; A4 a4; A5 a5; A6 a6; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7) : a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } A0 a0; A1 a1; A2 a2; A3 a3; A4 a4; A5 a5; A6 a6; A7 a7; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8) : a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } A0 a0; A1 a1; A2 a2; A3 a3; A4 a4; A5 a5; A6 a6; A7 a7; A8 a8; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8, typename tuple_type::transparent_reference _a9) : a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } A0 a0; A1 a1; A2 a2; A3 a3; A4 a4; A5 a5; A6 a6; A7 a7; A8 a8; A9 a9; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8, typename tuple_type::transparent_reference _a9, typename tuple_type::transparent_reference _a10) : a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } A0 a0; A1 a1; A2 a2; A3 a3; A4 a4; A5 a5; A6 a6; A7 a7; A8 a8; A9 a9; A10 a10; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8, typename tuple_type::transparent_reference _a9, typename tuple_type::transparent_reference _a10, typename tuple_type::transparent_reference _a11) : a0(_a0), a1(_a1), a2(_a2), a3(_a3), a4(_a4), a5(_a5), a6(_a6), a7(_a7), a8(_a8), a9(_a9), a10(_a10), a11(_a11) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } A0 a0; A1 a1; A2 a2; A3 a3; A4 a4; A5 a5; A6 a6; A7 a7; A8 a8; A9 a9; A10 a10; A11 a11; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8, typename tuple_type::transparent_reference _a9, typename tuple_type::transparent_reference _a10, typename tuple_type::transparent_reference _a11, typename tuple_type::transparent_reference _a12) : 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) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } 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; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8, typename tuple_type::transparent_reference _a9, typename tuple_type::transparent_reference _a10, typename tuple_type::transparent_reference _a11, typename tuple_type::transparent_reference _a12, typename tuple_type::transparent_reference _a13) : 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) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } 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; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8, typename tuple_type::transparent_reference _a9, typename tuple_type::transparent_reference _a10, typename tuple_type::transparent_reference _a11, typename tuple_type::transparent_reference _a12, typename tuple_type::transparent_reference _a13, typename tuple_type::transparent_reference _a14) : 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) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } 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; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8, typename tuple_type::transparent_reference _a9, typename tuple_type::transparent_reference _a10, typename tuple_type::transparent_reference _a11, typename tuple_type::transparent_reference _a12, typename tuple_type::transparent_reference _a13, typename tuple_type::transparent_reference _a14, typename tuple_type::transparent_reference _a15) : 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) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } 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; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8, typename tuple_type::transparent_reference _a9, typename tuple_type::transparent_reference _a10, typename tuple_type::transparent_reference _a11, typename tuple_type::transparent_reference _a12, typename tuple_type::transparent_reference _a13, typename tuple_type::transparent_reference _a14, typename tuple_type::transparent_reference _a15, typename tuple_type::transparent_reference _a16) : 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) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } 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; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8, typename tuple_type::transparent_reference _a9, typename tuple_type::transparent_reference _a10, typename tuple_type::transparent_reference _a11, typename tuple_type::transparent_reference _a12, typename tuple_type::transparent_reference _a13, typename tuple_type::transparent_reference _a14, typename tuple_type::transparent_reference _a15, typename tuple_type::transparent_reference _a16, typename tuple_type::transparent_reference _a17) : 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) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } 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; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8, typename tuple_type::transparent_reference _a9, typename tuple_type::transparent_reference _a10, typename tuple_type::transparent_reference _a11, typename tuple_type::transparent_reference _a12, typename tuple_type::transparent_reference _a13, typename tuple_type::transparent_reference _a14, typename tuple_type::transparent_reference _a15, typename tuple_type::transparent_reference _a16, typename tuple_type::transparent_reference _a17, typename tuple_type::transparent_reference _a18) : 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) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } 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; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8, typename tuple_type::transparent_reference _a9, typename tuple_type::transparent_reference _a10, typename tuple_type::transparent_reference _a11, typename tuple_type::transparent_reference _a12, typename tuple_type::transparent_reference _a13, typename tuple_type::transparent_reference _a14, typename tuple_type::transparent_reference _a15, typename tuple_type::transparent_reference _a16, typename tuple_type::transparent_reference _a17, typename tuple_type::transparent_reference _a18, typename tuple_type::transparent_reference _a19) : 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) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } 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; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8, typename tuple_type::transparent_reference _a9, typename tuple_type::transparent_reference _a10, typename tuple_type::transparent_reference _a11, typename tuple_type::transparent_reference _a12, typename tuple_type::transparent_reference _a13, typename tuple_type::transparent_reference _a14, typename tuple_type::transparent_reference _a15, typename tuple_type::transparent_reference _a16, typename tuple_type::transparent_reference _a17, typename tuple_type::transparent_reference _a18, typename tuple_type::transparent_reference _a19, typename tuple_type::transparent_reference _a20) : 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) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } 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; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8, typename tuple_type::transparent_reference _a9, typename tuple_type::transparent_reference _a10, typename tuple_type::transparent_reference _a11, typename tuple_type::transparent_reference _a12, typename tuple_type::transparent_reference _a13, typename tuple_type::transparent_reference _a14, typename tuple_type::transparent_reference _a15, typename tuple_type::transparent_reference _a16, typename tuple_type::transparent_reference _a17, typename tuple_type::transparent_reference _a18, typename tuple_type::transparent_reference _a19, typename tuple_type::transparent_reference _a20, typename tuple_type::transparent_reference _a21) : 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) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } 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; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8, typename tuple_type::transparent_reference _a9, typename tuple_type::transparent_reference _a10, typename tuple_type::transparent_reference _a11, typename tuple_type::transparent_reference _a12, typename tuple_type::transparent_reference _a13, typename tuple_type::transparent_reference _a14, typename tuple_type::transparent_reference _a15, typename tuple_type::transparent_reference _a16, typename tuple_type::transparent_reference _a17, typename tuple_type::transparent_reference _a18, typename tuple_type::transparent_reference _a19, typename tuple_type::transparent_reference _a20, typename tuple_type::transparent_reference _a21, typename tuple_type::transparent_reference _a22) : 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) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } 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; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8, typename tuple_type::transparent_reference _a9, typename tuple_type::transparent_reference _a10, typename tuple_type::transparent_reference _a11, typename tuple_type::transparent_reference _a12, typename tuple_type::transparent_reference _a13, typename tuple_type::transparent_reference _a14, typename tuple_type::transparent_reference _a15, typename tuple_type::transparent_reference _a16, typename tuple_type::transparent_reference _a17, typename tuple_type::transparent_reference _a18, typename tuple_type::transparent_reference _a19, typename tuple_type::transparent_reference _a20, typename tuple_type::transparent_reference _a21, typename tuple_type::transparent_reference _a22, typename tuple_type::transparent_reference _a23) : 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) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } 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; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8, typename tuple_type::transparent_reference _a9, typename tuple_type::transparent_reference _a10, typename tuple_type::transparent_reference _a11, typename tuple_type::transparent_reference _a12, typename tuple_type::transparent_reference _a13, typename tuple_type::transparent_reference _a14, typename tuple_type::transparent_reference _a15, typename tuple_type::transparent_reference _a16, typename tuple_type::transparent_reference _a17, typename tuple_type::transparent_reference _a18, typename tuple_type::transparent_reference _a19, typename tuple_type::transparent_reference _a20, typename tuple_type::transparent_reference _a21, typename tuple_type::transparent_reference _a22, typename tuple_type::transparent_reference _a23, typename tuple_type::transparent_reference _a24) : 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) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } 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; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8, typename tuple_type::transparent_reference _a9, typename tuple_type::transparent_reference _a10, typename tuple_type::transparent_reference _a11, typename tuple_type::transparent_reference _a12, typename tuple_type::transparent_reference _a13, typename tuple_type::transparent_reference _a14, typename tuple_type::transparent_reference _a15, typename tuple_type::transparent_reference _a16, typename tuple_type::transparent_reference _a17, typename tuple_type::transparent_reference _a18, typename tuple_type::transparent_reference _a19, typename tuple_type::transparent_reference _a20, typename tuple_type::transparent_reference _a21, typename tuple_type::transparent_reference _a22, typename tuple_type::transparent_reference _a23, typename tuple_type::transparent_reference _a24, typename tuple_type::transparent_reference _a25) : 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) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } 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; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8, typename tuple_type::transparent_reference _a9, typename tuple_type::transparent_reference _a10, typename tuple_type::transparent_reference _a11, typename tuple_type::transparent_reference _a12, typename tuple_type::transparent_reference _a13, typename tuple_type::transparent_reference _a14, typename tuple_type::transparent_reference _a15, typename tuple_type::transparent_reference _a16, typename tuple_type::transparent_reference _a17, typename tuple_type::transparent_reference _a18, typename tuple_type::transparent_reference _a19, typename tuple_type::transparent_reference _a20, typename tuple_type::transparent_reference _a21, typename tuple_type::transparent_reference _a22, typename tuple_type::transparent_reference _a23, typename tuple_type::transparent_reference _a24, typename tuple_type::transparent_reference _a25, typename tuple_type::transparent_reference _a26) : 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) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } 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; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8, typename tuple_type::transparent_reference _a9, typename tuple_type::transparent_reference _a10, typename tuple_type::transparent_reference _a11, typename tuple_type::transparent_reference _a12, typename tuple_type::transparent_reference _a13, typename tuple_type::transparent_reference _a14, typename tuple_type::transparent_reference _a15, typename tuple_type::transparent_reference _a16, typename tuple_type::transparent_reference _a17, typename tuple_type::transparent_reference _a18, typename tuple_type::transparent_reference _a19, typename tuple_type::transparent_reference _a20, typename tuple_type::transparent_reference _a21, typename tuple_type::transparent_reference _a22, typename tuple_type::transparent_reference _a23, typename tuple_type::transparent_reference _a24, typename tuple_type::transparent_reference _a25, typename tuple_type::transparent_reference _a26, typename tuple_type::transparent_reference _a27) : 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) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } 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; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8, typename tuple_type::transparent_reference _a9, typename tuple_type::transparent_reference _a10, typename tuple_type::transparent_reference _a11, typename tuple_type::transparent_reference _a12, typename tuple_type::transparent_reference _a13, typename tuple_type::transparent_reference _a14, typename tuple_type::transparent_reference _a15, typename tuple_type::transparent_reference _a16, typename tuple_type::transparent_reference _a17, typename tuple_type::transparent_reference _a18, typename tuple_type::transparent_reference _a19, typename tuple_type::transparent_reference _a20, typename tuple_type::transparent_reference _a21, typename tuple_type::transparent_reference _a22, typename tuple_type::transparent_reference _a23, typename tuple_type::transparent_reference _a24, typename tuple_type::transparent_reference _a25, typename tuple_type::transparent_reference _a26, typename tuple_type::transparent_reference _a27, typename tuple_type::transparent_reference _a28) : 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) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } 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; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8, typename tuple_type::transparent_reference _a9, typename tuple_type::transparent_reference _a10, typename tuple_type::transparent_reference _a11, typename tuple_type::transparent_reference _a12, typename tuple_type::transparent_reference _a13, typename tuple_type::transparent_reference _a14, typename tuple_type::transparent_reference _a15, typename tuple_type::transparent_reference _a16, typename tuple_type::transparent_reference _a17, typename tuple_type::transparent_reference _a18, typename tuple_type::transparent_reference _a19, typename tuple_type::transparent_reference _a20, typename tuple_type::transparent_reference _a21, typename tuple_type::transparent_reference _a22, typename tuple_type::transparent_reference _a23, typename tuple_type::transparent_reference _a24, typename tuple_type::transparent_reference _a25, typename tuple_type::transparent_reference _a26, typename tuple_type::transparent_reference _a27, typename tuple_type::transparent_reference _a28, typename tuple_type::transparent_reference _a29) : 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) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } 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; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8, typename tuple_type::transparent_reference _a9, typename tuple_type::transparent_reference _a10, typename tuple_type::transparent_reference _a11, typename tuple_type::transparent_reference _a12, typename tuple_type::transparent_reference _a13, typename tuple_type::transparent_reference _a14, typename tuple_type::transparent_reference _a15, typename tuple_type::transparent_reference _a16, typename tuple_type::transparent_reference _a17, typename tuple_type::transparent_reference _a18, typename tuple_type::transparent_reference _a19, typename tuple_type::transparent_reference _a20, typename tuple_type::transparent_reference _a21, typename tuple_type::transparent_reference _a22, typename tuple_type::transparent_reference _a23, typename tuple_type::transparent_reference _a24, typename tuple_type::transparent_reference _a25, typename tuple_type::transparent_reference _a26, typename tuple_type::transparent_reference _a27, typename tuple_type::transparent_reference _a28, typename tuple_type::transparent_reference _a29, typename tuple_type::transparent_reference _a30) : 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) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } 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; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } template struct tuple { typedef tuple value_type; tuple() {} tuple(typename tuple_type::transparent_reference _a0, typename tuple_type::transparent_reference _a1, typename tuple_type::transparent_reference _a2, typename tuple_type::transparent_reference _a3, typename tuple_type::transparent_reference _a4, typename tuple_type::transparent_reference _a5, typename tuple_type::transparent_reference _a6, typename tuple_type::transparent_reference _a7, typename tuple_type::transparent_reference _a8, typename tuple_type::transparent_reference _a9, typename tuple_type::transparent_reference _a10, typename tuple_type::transparent_reference _a11, typename tuple_type::transparent_reference _a12, typename tuple_type::transparent_reference _a13, typename tuple_type::transparent_reference _a14, typename tuple_type::transparent_reference _a15, typename tuple_type::transparent_reference _a16, typename tuple_type::transparent_reference _a17, typename tuple_type::transparent_reference _a18, typename tuple_type::transparent_reference _a19, typename tuple_type::transparent_reference _a20, typename tuple_type::transparent_reference _a21, typename tuple_type::transparent_reference _a22, typename tuple_type::transparent_reference _a23, typename tuple_type::transparent_reference _a24, typename tuple_type::transparent_reference _a25, typename tuple_type::transparent_reference _a26, typename tuple_type::transparent_reference _a27, typename tuple_type::transparent_reference _a28, typename tuple_type::transparent_reference _a29, typename tuple_type::transparent_reference _a30, typename tuple_type::transparent_reference _a31) : 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) {} tuple(msgpack::object const& o) { o.convert(*this); } template typename tuple_element::reference get() { return tuple_element(*this).get(); } template typename const_tuple_element::const_reference get() const { return const_tuple_element(*this).get(); } 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; }; template inline typename type::tuple_element, N>::reference get(type::tuple& t) { return t.template get(); } template inline typename type::const_tuple_element, N>::const_reference get(type::tuple const& t) { return t.template get(); } /// @endcond inline tuple<> make_tuple() { return tuple<>(); } /// @cond template inline tuple make_tuple(typename tuple_type::transparent_reference a0) { return tuple(a0); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1) { return tuple(a0, a1); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2) { return tuple(a0, a1, a2); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3) { return tuple(a0, a1, a2, a3); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4) { return tuple(a0, a1, a2, a3, a4); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5) { return tuple(a0, a1, a2, a3, a4, a5); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6) { return tuple(a0, a1, a2, a3, a4, a5, a6); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7) { return tuple(a0, a1, a2, a3, a4, a5, a6, a7); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8) { return tuple(a0, a1, a2, a3, a4, a5, a6, a7, a8); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8, typename tuple_type::transparent_reference a9) { return tuple(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8, typename tuple_type::transparent_reference a9, typename tuple_type::transparent_reference a10) { return tuple(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8, typename tuple_type::transparent_reference a9, typename tuple_type::transparent_reference a10, typename tuple_type::transparent_reference a11) { return tuple(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8, typename tuple_type::transparent_reference a9, typename tuple_type::transparent_reference a10, typename tuple_type::transparent_reference a11, typename tuple_type::transparent_reference a12) { return tuple(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8, typename tuple_type::transparent_reference a9, typename tuple_type::transparent_reference a10, typename tuple_type::transparent_reference a11, typename tuple_type::transparent_reference a12, typename tuple_type::transparent_reference a13) { return tuple(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8, typename tuple_type::transparent_reference a9, typename tuple_type::transparent_reference a10, typename tuple_type::transparent_reference a11, typename tuple_type::transparent_reference a12, typename tuple_type::transparent_reference a13, typename tuple_type::transparent_reference a14) { return tuple(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8, typename tuple_type::transparent_reference a9, typename tuple_type::transparent_reference a10, typename tuple_type::transparent_reference a11, typename tuple_type::transparent_reference a12, typename tuple_type::transparent_reference a13, typename tuple_type::transparent_reference a14, typename tuple_type::transparent_reference a15) { return tuple(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8, typename tuple_type::transparent_reference a9, typename tuple_type::transparent_reference a10, typename tuple_type::transparent_reference a11, typename tuple_type::transparent_reference a12, typename tuple_type::transparent_reference a13, typename tuple_type::transparent_reference a14, typename tuple_type::transparent_reference a15, typename tuple_type::transparent_reference a16) { return tuple(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8, typename tuple_type::transparent_reference a9, typename tuple_type::transparent_reference a10, typename tuple_type::transparent_reference a11, typename tuple_type::transparent_reference a12, typename tuple_type::transparent_reference a13, typename tuple_type::transparent_reference a14, typename tuple_type::transparent_reference a15, typename tuple_type::transparent_reference a16, typename tuple_type::transparent_reference a17) { return tuple(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8, typename tuple_type::transparent_reference a9, typename tuple_type::transparent_reference a10, typename tuple_type::transparent_reference a11, typename tuple_type::transparent_reference a12, typename tuple_type::transparent_reference a13, typename tuple_type::transparent_reference a14, typename tuple_type::transparent_reference a15, typename tuple_type::transparent_reference a16, typename tuple_type::transparent_reference a17, typename tuple_type::transparent_reference a18) { return tuple(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8, typename tuple_type::transparent_reference a9, typename tuple_type::transparent_reference a10, typename tuple_type::transparent_reference a11, typename tuple_type::transparent_reference a12, typename tuple_type::transparent_reference a13, typename tuple_type::transparent_reference a14, typename tuple_type::transparent_reference a15, typename tuple_type::transparent_reference a16, typename tuple_type::transparent_reference a17, typename tuple_type::transparent_reference a18, typename tuple_type::transparent_reference a19) { return tuple(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8, typename tuple_type::transparent_reference a9, typename tuple_type::transparent_reference a10, typename tuple_type::transparent_reference a11, typename tuple_type::transparent_reference a12, typename tuple_type::transparent_reference a13, typename tuple_type::transparent_reference a14, typename tuple_type::transparent_reference a15, typename tuple_type::transparent_reference a16, typename tuple_type::transparent_reference a17, typename tuple_type::transparent_reference a18, typename tuple_type::transparent_reference a19, typename tuple_type::transparent_reference a20) { return tuple(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8, typename tuple_type::transparent_reference a9, typename tuple_type::transparent_reference a10, typename tuple_type::transparent_reference a11, typename tuple_type::transparent_reference a12, typename tuple_type::transparent_reference a13, typename tuple_type::transparent_reference a14, typename tuple_type::transparent_reference a15, typename tuple_type::transparent_reference a16, typename tuple_type::transparent_reference a17, typename tuple_type::transparent_reference a18, typename tuple_type::transparent_reference a19, typename tuple_type::transparent_reference a20, typename tuple_type::transparent_reference a21) { return tuple(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8, typename tuple_type::transparent_reference a9, typename tuple_type::transparent_reference a10, typename tuple_type::transparent_reference a11, typename tuple_type::transparent_reference a12, typename tuple_type::transparent_reference a13, typename tuple_type::transparent_reference a14, typename tuple_type::transparent_reference a15, typename tuple_type::transparent_reference a16, typename tuple_type::transparent_reference a17, typename tuple_type::transparent_reference a18, typename tuple_type::transparent_reference a19, typename tuple_type::transparent_reference a20, typename tuple_type::transparent_reference a21, typename tuple_type::transparent_reference a22) { 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); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8, typename tuple_type::transparent_reference a9, typename tuple_type::transparent_reference a10, typename tuple_type::transparent_reference a11, typename tuple_type::transparent_reference a12, typename tuple_type::transparent_reference a13, typename tuple_type::transparent_reference a14, typename tuple_type::transparent_reference a15, typename tuple_type::transparent_reference a16, typename tuple_type::transparent_reference a17, typename tuple_type::transparent_reference a18, typename tuple_type::transparent_reference a19, typename tuple_type::transparent_reference a20, typename tuple_type::transparent_reference a21, typename tuple_type::transparent_reference a22, typename tuple_type::transparent_reference a23) { 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); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8, typename tuple_type::transparent_reference a9, typename tuple_type::transparent_reference a10, typename tuple_type::transparent_reference a11, typename tuple_type::transparent_reference a12, typename tuple_type::transparent_reference a13, typename tuple_type::transparent_reference a14, typename tuple_type::transparent_reference a15, typename tuple_type::transparent_reference a16, typename tuple_type::transparent_reference a17, typename tuple_type::transparent_reference a18, typename tuple_type::transparent_reference a19, typename tuple_type::transparent_reference a20, typename tuple_type::transparent_reference a21, typename tuple_type::transparent_reference a22, typename tuple_type::transparent_reference a23, typename tuple_type::transparent_reference a24) { 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); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8, typename tuple_type::transparent_reference a9, typename tuple_type::transparent_reference a10, typename tuple_type::transparent_reference a11, typename tuple_type::transparent_reference a12, typename tuple_type::transparent_reference a13, typename tuple_type::transparent_reference a14, typename tuple_type::transparent_reference a15, typename tuple_type::transparent_reference a16, typename tuple_type::transparent_reference a17, typename tuple_type::transparent_reference a18, typename tuple_type::transparent_reference a19, typename tuple_type::transparent_reference a20, typename tuple_type::transparent_reference a21, typename tuple_type::transparent_reference a22, typename tuple_type::transparent_reference a23, typename tuple_type::transparent_reference a24, typename tuple_type::transparent_reference a25) { 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); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8, typename tuple_type::transparent_reference a9, typename tuple_type::transparent_reference a10, typename tuple_type::transparent_reference a11, typename tuple_type::transparent_reference a12, typename tuple_type::transparent_reference a13, typename tuple_type::transparent_reference a14, typename tuple_type::transparent_reference a15, typename tuple_type::transparent_reference a16, typename tuple_type::transparent_reference a17, typename tuple_type::transparent_reference a18, typename tuple_type::transparent_reference a19, typename tuple_type::transparent_reference a20, typename tuple_type::transparent_reference a21, typename tuple_type::transparent_reference a22, typename tuple_type::transparent_reference a23, typename tuple_type::transparent_reference a24, typename tuple_type::transparent_reference a25, typename tuple_type::transparent_reference a26) { 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); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8, typename tuple_type::transparent_reference a9, typename tuple_type::transparent_reference a10, typename tuple_type::transparent_reference a11, typename tuple_type::transparent_reference a12, typename tuple_type::transparent_reference a13, typename tuple_type::transparent_reference a14, typename tuple_type::transparent_reference a15, typename tuple_type::transparent_reference a16, typename tuple_type::transparent_reference a17, typename tuple_type::transparent_reference a18, typename tuple_type::transparent_reference a19, typename tuple_type::transparent_reference a20, typename tuple_type::transparent_reference a21, typename tuple_type::transparent_reference a22, typename tuple_type::transparent_reference a23, typename tuple_type::transparent_reference a24, typename tuple_type::transparent_reference a25, typename tuple_type::transparent_reference a26, typename tuple_type::transparent_reference a27) { 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); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8, typename tuple_type::transparent_reference a9, typename tuple_type::transparent_reference a10, typename tuple_type::transparent_reference a11, typename tuple_type::transparent_reference a12, typename tuple_type::transparent_reference a13, typename tuple_type::transparent_reference a14, typename tuple_type::transparent_reference a15, typename tuple_type::transparent_reference a16, typename tuple_type::transparent_reference a17, typename tuple_type::transparent_reference a18, typename tuple_type::transparent_reference a19, typename tuple_type::transparent_reference a20, typename tuple_type::transparent_reference a21, typename tuple_type::transparent_reference a22, typename tuple_type::transparent_reference a23, typename tuple_type::transparent_reference a24, typename tuple_type::transparent_reference a25, typename tuple_type::transparent_reference a26, typename tuple_type::transparent_reference a27, typename tuple_type::transparent_reference a28) { 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); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8, typename tuple_type::transparent_reference a9, typename tuple_type::transparent_reference a10, typename tuple_type::transparent_reference a11, typename tuple_type::transparent_reference a12, typename tuple_type::transparent_reference a13, typename tuple_type::transparent_reference a14, typename tuple_type::transparent_reference a15, typename tuple_type::transparent_reference a16, typename tuple_type::transparent_reference a17, typename tuple_type::transparent_reference a18, typename tuple_type::transparent_reference a19, typename tuple_type::transparent_reference a20, typename tuple_type::transparent_reference a21, typename tuple_type::transparent_reference a22, typename tuple_type::transparent_reference a23, typename tuple_type::transparent_reference a24, typename tuple_type::transparent_reference a25, typename tuple_type::transparent_reference a26, typename tuple_type::transparent_reference a27, typename tuple_type::transparent_reference a28, typename tuple_type::transparent_reference a29) { 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); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8, typename tuple_type::transparent_reference a9, typename tuple_type::transparent_reference a10, typename tuple_type::transparent_reference a11, typename tuple_type::transparent_reference a12, typename tuple_type::transparent_reference a13, typename tuple_type::transparent_reference a14, typename tuple_type::transparent_reference a15, typename tuple_type::transparent_reference a16, typename tuple_type::transparent_reference a17, typename tuple_type::transparent_reference a18, typename tuple_type::transparent_reference a19, typename tuple_type::transparent_reference a20, typename tuple_type::transparent_reference a21, typename tuple_type::transparent_reference a22, typename tuple_type::transparent_reference a23, typename tuple_type::transparent_reference a24, typename tuple_type::transparent_reference a25, typename tuple_type::transparent_reference a26, typename tuple_type::transparent_reference a27, typename tuple_type::transparent_reference a28, typename tuple_type::transparent_reference a29, typename tuple_type::transparent_reference a30) { 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); } template inline tuple make_tuple(typename tuple_type::transparent_reference a0, typename tuple_type::transparent_reference a1, typename tuple_type::transparent_reference a2, typename tuple_type::transparent_reference a3, typename tuple_type::transparent_reference a4, typename tuple_type::transparent_reference a5, typename tuple_type::transparent_reference a6, typename tuple_type::transparent_reference a7, typename tuple_type::transparent_reference a8, typename tuple_type::transparent_reference a9, typename tuple_type::transparent_reference a10, typename tuple_type::transparent_reference a11, typename tuple_type::transparent_reference a12, typename tuple_type::transparent_reference a13, typename tuple_type::transparent_reference a14, typename tuple_type::transparent_reference a15, typename tuple_type::transparent_reference a16, typename tuple_type::transparent_reference a17, typename tuple_type::transparent_reference a18, typename tuple_type::transparent_reference a19, typename tuple_type::transparent_reference a20, typename tuple_type::transparent_reference a21, typename tuple_type::transparent_reference a22, typename tuple_type::transparent_reference a23, typename tuple_type::transparent_reference a24, typename tuple_type::transparent_reference a25, typename tuple_type::transparent_reference a26, typename tuple_type::transparent_reference a27, typename tuple_type::transparent_reference a28, typename tuple_type::transparent_reference a29, typename tuple_type::transparent_reference a30, typename tuple_type::transparent_reference a31) { 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); } /// @endcond } // namespace type namespace adaptor { template <> struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple<>&) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } return o; } }; /// @cond template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 1) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 2) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 3) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 4) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 5) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 6) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 7) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 8) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 9) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 10) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[9].msgpack::object::convert::type>(v.template get<9>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 11) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[9].msgpack::object::convert::type>(v.template get<9>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[10].msgpack::object::convert::type>(v.template get<10>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 12) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[9].msgpack::object::convert::type>(v.template get<9>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[10].msgpack::object::convert::type>(v.template get<10>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[11].msgpack::object::convert::type>(v.template get<11>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 13) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[9].msgpack::object::convert::type>(v.template get<9>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[10].msgpack::object::convert::type>(v.template get<10>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[11].msgpack::object::convert::type>(v.template get<11>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[12].msgpack::object::convert::type>(v.template get<12>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 14) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[9].msgpack::object::convert::type>(v.template get<9>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[10].msgpack::object::convert::type>(v.template get<10>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[11].msgpack::object::convert::type>(v.template get<11>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[12].msgpack::object::convert::type>(v.template get<12>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[13].msgpack::object::convert::type>(v.template get<13>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 15) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[9].msgpack::object::convert::type>(v.template get<9>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[10].msgpack::object::convert::type>(v.template get<10>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[11].msgpack::object::convert::type>(v.template get<11>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[12].msgpack::object::convert::type>(v.template get<12>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[13].msgpack::object::convert::type>(v.template get<13>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[14].msgpack::object::convert::type>(v.template get<14>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 16) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[9].msgpack::object::convert::type>(v.template get<9>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[10].msgpack::object::convert::type>(v.template get<10>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[11].msgpack::object::convert::type>(v.template get<11>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[12].msgpack::object::convert::type>(v.template get<12>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[13].msgpack::object::convert::type>(v.template get<13>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[14].msgpack::object::convert::type>(v.template get<14>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[15].msgpack::object::convert::type>(v.template get<15>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 17) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[9].msgpack::object::convert::type>(v.template get<9>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[10].msgpack::object::convert::type>(v.template get<10>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[11].msgpack::object::convert::type>(v.template get<11>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[12].msgpack::object::convert::type>(v.template get<12>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[13].msgpack::object::convert::type>(v.template get<13>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[14].msgpack::object::convert::type>(v.template get<14>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[15].msgpack::object::convert::type>(v.template get<15>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[16].msgpack::object::convert::type>(v.template get<16>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 18) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[9].msgpack::object::convert::type>(v.template get<9>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[10].msgpack::object::convert::type>(v.template get<10>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[11].msgpack::object::convert::type>(v.template get<11>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[12].msgpack::object::convert::type>(v.template get<12>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[13].msgpack::object::convert::type>(v.template get<13>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[14].msgpack::object::convert::type>(v.template get<14>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[15].msgpack::object::convert::type>(v.template get<15>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[16].msgpack::object::convert::type>(v.template get<16>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[17].msgpack::object::convert::type>(v.template get<17>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 19) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[9].msgpack::object::convert::type>(v.template get<9>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[10].msgpack::object::convert::type>(v.template get<10>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[11].msgpack::object::convert::type>(v.template get<11>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[12].msgpack::object::convert::type>(v.template get<12>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[13].msgpack::object::convert::type>(v.template get<13>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[14].msgpack::object::convert::type>(v.template get<14>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[15].msgpack::object::convert::type>(v.template get<15>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[16].msgpack::object::convert::type>(v.template get<16>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[17].msgpack::object::convert::type>(v.template get<17>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[18].msgpack::object::convert::type>(v.template get<18>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 20) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[9].msgpack::object::convert::type>(v.template get<9>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[10].msgpack::object::convert::type>(v.template get<10>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[11].msgpack::object::convert::type>(v.template get<11>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[12].msgpack::object::convert::type>(v.template get<12>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[13].msgpack::object::convert::type>(v.template get<13>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[14].msgpack::object::convert::type>(v.template get<14>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[15].msgpack::object::convert::type>(v.template get<15>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[16].msgpack::object::convert::type>(v.template get<16>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[17].msgpack::object::convert::type>(v.template get<17>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[18].msgpack::object::convert::type>(v.template get<18>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[19].msgpack::object::convert::type>(v.template get<19>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 21) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[9].msgpack::object::convert::type>(v.template get<9>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[10].msgpack::object::convert::type>(v.template get<10>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[11].msgpack::object::convert::type>(v.template get<11>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[12].msgpack::object::convert::type>(v.template get<12>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[13].msgpack::object::convert::type>(v.template get<13>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[14].msgpack::object::convert::type>(v.template get<14>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[15].msgpack::object::convert::type>(v.template get<15>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[16].msgpack::object::convert::type>(v.template get<16>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[17].msgpack::object::convert::type>(v.template get<17>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[18].msgpack::object::convert::type>(v.template get<18>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[19].msgpack::object::convert::type>(v.template get<19>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[20].msgpack::object::convert::type>(v.template get<20>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 22) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[9].msgpack::object::convert::type>(v.template get<9>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[10].msgpack::object::convert::type>(v.template get<10>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[11].msgpack::object::convert::type>(v.template get<11>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[12].msgpack::object::convert::type>(v.template get<12>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[13].msgpack::object::convert::type>(v.template get<13>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[14].msgpack::object::convert::type>(v.template get<14>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[15].msgpack::object::convert::type>(v.template get<15>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[16].msgpack::object::convert::type>(v.template get<16>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[17].msgpack::object::convert::type>(v.template get<17>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[18].msgpack::object::convert::type>(v.template get<18>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[19].msgpack::object::convert::type>(v.template get<19>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[20].msgpack::object::convert::type>(v.template get<20>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[21].msgpack::object::convert::type>(v.template get<21>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 23) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[9].msgpack::object::convert::type>(v.template get<9>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[10].msgpack::object::convert::type>(v.template get<10>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[11].msgpack::object::convert::type>(v.template get<11>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[12].msgpack::object::convert::type>(v.template get<12>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[13].msgpack::object::convert::type>(v.template get<13>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[14].msgpack::object::convert::type>(v.template get<14>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[15].msgpack::object::convert::type>(v.template get<15>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[16].msgpack::object::convert::type>(v.template get<16>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[17].msgpack::object::convert::type>(v.template get<17>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[18].msgpack::object::convert::type>(v.template get<18>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[19].msgpack::object::convert::type>(v.template get<19>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[20].msgpack::object::convert::type>(v.template get<20>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[21].msgpack::object::convert::type>(v.template get<21>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[22].msgpack::object::convert::type>(v.template get<22>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 24) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[9].msgpack::object::convert::type>(v.template get<9>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[10].msgpack::object::convert::type>(v.template get<10>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[11].msgpack::object::convert::type>(v.template get<11>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[12].msgpack::object::convert::type>(v.template get<12>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[13].msgpack::object::convert::type>(v.template get<13>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[14].msgpack::object::convert::type>(v.template get<14>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[15].msgpack::object::convert::type>(v.template get<15>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[16].msgpack::object::convert::type>(v.template get<16>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[17].msgpack::object::convert::type>(v.template get<17>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[18].msgpack::object::convert::type>(v.template get<18>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[19].msgpack::object::convert::type>(v.template get<19>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[20].msgpack::object::convert::type>(v.template get<20>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[21].msgpack::object::convert::type>(v.template get<21>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[22].msgpack::object::convert::type>(v.template get<22>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[23].msgpack::object::convert::type>(v.template get<23>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 25) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[9].msgpack::object::convert::type>(v.template get<9>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[10].msgpack::object::convert::type>(v.template get<10>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[11].msgpack::object::convert::type>(v.template get<11>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[12].msgpack::object::convert::type>(v.template get<12>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[13].msgpack::object::convert::type>(v.template get<13>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[14].msgpack::object::convert::type>(v.template get<14>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[15].msgpack::object::convert::type>(v.template get<15>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[16].msgpack::object::convert::type>(v.template get<16>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[17].msgpack::object::convert::type>(v.template get<17>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[18].msgpack::object::convert::type>(v.template get<18>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[19].msgpack::object::convert::type>(v.template get<19>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[20].msgpack::object::convert::type>(v.template get<20>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[21].msgpack::object::convert::type>(v.template get<21>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[22].msgpack::object::convert::type>(v.template get<22>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[23].msgpack::object::convert::type>(v.template get<23>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[24].msgpack::object::convert::type>(v.template get<24>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 26) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[9].msgpack::object::convert::type>(v.template get<9>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[10].msgpack::object::convert::type>(v.template get<10>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[11].msgpack::object::convert::type>(v.template get<11>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[12].msgpack::object::convert::type>(v.template get<12>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[13].msgpack::object::convert::type>(v.template get<13>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[14].msgpack::object::convert::type>(v.template get<14>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[15].msgpack::object::convert::type>(v.template get<15>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[16].msgpack::object::convert::type>(v.template get<16>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[17].msgpack::object::convert::type>(v.template get<17>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[18].msgpack::object::convert::type>(v.template get<18>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[19].msgpack::object::convert::type>(v.template get<19>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[20].msgpack::object::convert::type>(v.template get<20>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[21].msgpack::object::convert::type>(v.template get<21>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[22].msgpack::object::convert::type>(v.template get<22>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[23].msgpack::object::convert::type>(v.template get<23>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[24].msgpack::object::convert::type>(v.template get<24>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[25].msgpack::object::convert::type>(v.template get<25>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 27) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[9].msgpack::object::convert::type>(v.template get<9>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[10].msgpack::object::convert::type>(v.template get<10>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[11].msgpack::object::convert::type>(v.template get<11>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[12].msgpack::object::convert::type>(v.template get<12>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[13].msgpack::object::convert::type>(v.template get<13>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[14].msgpack::object::convert::type>(v.template get<14>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[15].msgpack::object::convert::type>(v.template get<15>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[16].msgpack::object::convert::type>(v.template get<16>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[17].msgpack::object::convert::type>(v.template get<17>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[18].msgpack::object::convert::type>(v.template get<18>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[19].msgpack::object::convert::type>(v.template get<19>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[20].msgpack::object::convert::type>(v.template get<20>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[21].msgpack::object::convert::type>(v.template get<21>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[22].msgpack::object::convert::type>(v.template get<22>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[23].msgpack::object::convert::type>(v.template get<23>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[24].msgpack::object::convert::type>(v.template get<24>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[25].msgpack::object::convert::type>(v.template get<25>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[26].msgpack::object::convert::type>(v.template get<26>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 28) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[9].msgpack::object::convert::type>(v.template get<9>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[10].msgpack::object::convert::type>(v.template get<10>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[11].msgpack::object::convert::type>(v.template get<11>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[12].msgpack::object::convert::type>(v.template get<12>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[13].msgpack::object::convert::type>(v.template get<13>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[14].msgpack::object::convert::type>(v.template get<14>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[15].msgpack::object::convert::type>(v.template get<15>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[16].msgpack::object::convert::type>(v.template get<16>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[17].msgpack::object::convert::type>(v.template get<17>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[18].msgpack::object::convert::type>(v.template get<18>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[19].msgpack::object::convert::type>(v.template get<19>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[20].msgpack::object::convert::type>(v.template get<20>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[21].msgpack::object::convert::type>(v.template get<21>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[22].msgpack::object::convert::type>(v.template get<22>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[23].msgpack::object::convert::type>(v.template get<23>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[24].msgpack::object::convert::type>(v.template get<24>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[25].msgpack::object::convert::type>(v.template get<25>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[26].msgpack::object::convert::type>(v.template get<26>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[27].msgpack::object::convert::type>(v.template get<27>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 29) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[9].msgpack::object::convert::type>(v.template get<9>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[10].msgpack::object::convert::type>(v.template get<10>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[11].msgpack::object::convert::type>(v.template get<11>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[12].msgpack::object::convert::type>(v.template get<12>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[13].msgpack::object::convert::type>(v.template get<13>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[14].msgpack::object::convert::type>(v.template get<14>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[15].msgpack::object::convert::type>(v.template get<15>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[16].msgpack::object::convert::type>(v.template get<16>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[17].msgpack::object::convert::type>(v.template get<17>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[18].msgpack::object::convert::type>(v.template get<18>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[19].msgpack::object::convert::type>(v.template get<19>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[20].msgpack::object::convert::type>(v.template get<20>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[21].msgpack::object::convert::type>(v.template get<21>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[22].msgpack::object::convert::type>(v.template get<22>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[23].msgpack::object::convert::type>(v.template get<23>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[24].msgpack::object::convert::type>(v.template get<24>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[25].msgpack::object::convert::type>(v.template get<25>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[26].msgpack::object::convert::type>(v.template get<26>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[27].msgpack::object::convert::type>(v.template get<27>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[28].msgpack::object::convert::type>(v.template get<28>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 30) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[9].msgpack::object::convert::type>(v.template get<9>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[10].msgpack::object::convert::type>(v.template get<10>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[11].msgpack::object::convert::type>(v.template get<11>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[12].msgpack::object::convert::type>(v.template get<12>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[13].msgpack::object::convert::type>(v.template get<13>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[14].msgpack::object::convert::type>(v.template get<14>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[15].msgpack::object::convert::type>(v.template get<15>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[16].msgpack::object::convert::type>(v.template get<16>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[17].msgpack::object::convert::type>(v.template get<17>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[18].msgpack::object::convert::type>(v.template get<18>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[19].msgpack::object::convert::type>(v.template get<19>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[20].msgpack::object::convert::type>(v.template get<20>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[21].msgpack::object::convert::type>(v.template get<21>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[22].msgpack::object::convert::type>(v.template get<22>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[23].msgpack::object::convert::type>(v.template get<23>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[24].msgpack::object::convert::type>(v.template get<24>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[25].msgpack::object::convert::type>(v.template get<25>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[26].msgpack::object::convert::type>(v.template get<26>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[27].msgpack::object::convert::type>(v.template get<27>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[28].msgpack::object::convert::type>(v.template get<28>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[29].msgpack::object::convert::type>(v.template get<29>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 31) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[9].msgpack::object::convert::type>(v.template get<9>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[10].msgpack::object::convert::type>(v.template get<10>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[11].msgpack::object::convert::type>(v.template get<11>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[12].msgpack::object::convert::type>(v.template get<12>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[13].msgpack::object::convert::type>(v.template get<13>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[14].msgpack::object::convert::type>(v.template get<14>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[15].msgpack::object::convert::type>(v.template get<15>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[16].msgpack::object::convert::type>(v.template get<16>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[17].msgpack::object::convert::type>(v.template get<17>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[18].msgpack::object::convert::type>(v.template get<18>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[19].msgpack::object::convert::type>(v.template get<19>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[20].msgpack::object::convert::type>(v.template get<20>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[21].msgpack::object::convert::type>(v.template get<21>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[22].msgpack::object::convert::type>(v.template get<22>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[23].msgpack::object::convert::type>(v.template get<23>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[24].msgpack::object::convert::type>(v.template get<24>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[25].msgpack::object::convert::type>(v.template get<25>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[26].msgpack::object::convert::type>(v.template get<26>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[27].msgpack::object::convert::type>(v.template get<27>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[28].msgpack::object::convert::type>(v.template get<28>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[29].msgpack::object::convert::type>(v.template get<29>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[30].msgpack::object::convert::type>(v.template get<30>()); return o; } }; template struct convert > { msgpack::object const& operator()( msgpack::object const& o, type::tuple& v) const { if(o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); } if(o.via.array.size < 32) { throw msgpack::type_error(); } // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[0].msgpack::object::convert::type>(v.template get<0>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[1].msgpack::object::convert::type>(v.template get<1>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[2].msgpack::object::convert::type>(v.template get<2>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[3].msgpack::object::convert::type>(v.template get<3>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[4].msgpack::object::convert::type>(v.template get<4>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[5].msgpack::object::convert::type>(v.template get<5>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[6].msgpack::object::convert::type>(v.template get<6>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[7].msgpack::object::convert::type>(v.template get<7>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[8].msgpack::object::convert::type>(v.template get<8>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[9].msgpack::object::convert::type>(v.template get<9>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[10].msgpack::object::convert::type>(v.template get<10>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[11].msgpack::object::convert::type>(v.template get<11>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[12].msgpack::object::convert::type>(v.template get<12>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[13].msgpack::object::convert::type>(v.template get<13>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[14].msgpack::object::convert::type>(v.template get<14>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[15].msgpack::object::convert::type>(v.template get<15>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[16].msgpack::object::convert::type>(v.template get<16>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[17].msgpack::object::convert::type>(v.template get<17>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[18].msgpack::object::convert::type>(v.template get<18>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[19].msgpack::object::convert::type>(v.template get<19>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[20].msgpack::object::convert::type>(v.template get<20>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[21].msgpack::object::convert::type>(v.template get<21>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[22].msgpack::object::convert::type>(v.template get<22>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[23].msgpack::object::convert::type>(v.template get<23>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[24].msgpack::object::convert::type>(v.template get<24>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[25].msgpack::object::convert::type>(v.template get<25>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[26].msgpack::object::convert::type>(v.template get<26>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[27].msgpack::object::convert::type>(v.template get<27>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[28].msgpack::object::convert::type>(v.template get<28>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[29].msgpack::object::convert::type>(v.template get<29>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[30].msgpack::object::convert::type>(v.template get<30>()); // In order to avoid clang++'s invalid warning, msgpack::object:: has been added. o.via.array.ptr[31].msgpack::object::convert::type>(v.template get<31>()); return o; } }; /// @endcond template <> struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple<>&) const { o.pack_array(0); return o; } }; /// @cond template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(1); o.pack(v.template get<0>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(2); o.pack(v.template get<0>()); o.pack(v.template get<1>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(3); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(4); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(5); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(6); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(7); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(8); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(9); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(10); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); o.pack(v.template get<9>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(11); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); o.pack(v.template get<9>()); o.pack(v.template get<10>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(12); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); o.pack(v.template get<9>()); o.pack(v.template get<10>()); o.pack(v.template get<11>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(13); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); o.pack(v.template get<9>()); o.pack(v.template get<10>()); o.pack(v.template get<11>()); o.pack(v.template get<12>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(14); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); o.pack(v.template get<9>()); o.pack(v.template get<10>()); o.pack(v.template get<11>()); o.pack(v.template get<12>()); o.pack(v.template get<13>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(15); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); o.pack(v.template get<9>()); o.pack(v.template get<10>()); o.pack(v.template get<11>()); o.pack(v.template get<12>()); o.pack(v.template get<13>()); o.pack(v.template get<14>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(16); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); o.pack(v.template get<9>()); o.pack(v.template get<10>()); o.pack(v.template get<11>()); o.pack(v.template get<12>()); o.pack(v.template get<13>()); o.pack(v.template get<14>()); o.pack(v.template get<15>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(17); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); o.pack(v.template get<9>()); o.pack(v.template get<10>()); o.pack(v.template get<11>()); o.pack(v.template get<12>()); o.pack(v.template get<13>()); o.pack(v.template get<14>()); o.pack(v.template get<15>()); o.pack(v.template get<16>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(18); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); o.pack(v.template get<9>()); o.pack(v.template get<10>()); o.pack(v.template get<11>()); o.pack(v.template get<12>()); o.pack(v.template get<13>()); o.pack(v.template get<14>()); o.pack(v.template get<15>()); o.pack(v.template get<16>()); o.pack(v.template get<17>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(19); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); o.pack(v.template get<9>()); o.pack(v.template get<10>()); o.pack(v.template get<11>()); o.pack(v.template get<12>()); o.pack(v.template get<13>()); o.pack(v.template get<14>()); o.pack(v.template get<15>()); o.pack(v.template get<16>()); o.pack(v.template get<17>()); o.pack(v.template get<18>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(20); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); o.pack(v.template get<9>()); o.pack(v.template get<10>()); o.pack(v.template get<11>()); o.pack(v.template get<12>()); o.pack(v.template get<13>()); o.pack(v.template get<14>()); o.pack(v.template get<15>()); o.pack(v.template get<16>()); o.pack(v.template get<17>()); o.pack(v.template get<18>()); o.pack(v.template get<19>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(21); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); o.pack(v.template get<9>()); o.pack(v.template get<10>()); o.pack(v.template get<11>()); o.pack(v.template get<12>()); o.pack(v.template get<13>()); o.pack(v.template get<14>()); o.pack(v.template get<15>()); o.pack(v.template get<16>()); o.pack(v.template get<17>()); o.pack(v.template get<18>()); o.pack(v.template get<19>()); o.pack(v.template get<20>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(22); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); o.pack(v.template get<9>()); o.pack(v.template get<10>()); o.pack(v.template get<11>()); o.pack(v.template get<12>()); o.pack(v.template get<13>()); o.pack(v.template get<14>()); o.pack(v.template get<15>()); o.pack(v.template get<16>()); o.pack(v.template get<17>()); o.pack(v.template get<18>()); o.pack(v.template get<19>()); o.pack(v.template get<20>()); o.pack(v.template get<21>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(23); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); o.pack(v.template get<9>()); o.pack(v.template get<10>()); o.pack(v.template get<11>()); o.pack(v.template get<12>()); o.pack(v.template get<13>()); o.pack(v.template get<14>()); o.pack(v.template get<15>()); o.pack(v.template get<16>()); o.pack(v.template get<17>()); o.pack(v.template get<18>()); o.pack(v.template get<19>()); o.pack(v.template get<20>()); o.pack(v.template get<21>()); o.pack(v.template get<22>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(24); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); o.pack(v.template get<9>()); o.pack(v.template get<10>()); o.pack(v.template get<11>()); o.pack(v.template get<12>()); o.pack(v.template get<13>()); o.pack(v.template get<14>()); o.pack(v.template get<15>()); o.pack(v.template get<16>()); o.pack(v.template get<17>()); o.pack(v.template get<18>()); o.pack(v.template get<19>()); o.pack(v.template get<20>()); o.pack(v.template get<21>()); o.pack(v.template get<22>()); o.pack(v.template get<23>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(25); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); o.pack(v.template get<9>()); o.pack(v.template get<10>()); o.pack(v.template get<11>()); o.pack(v.template get<12>()); o.pack(v.template get<13>()); o.pack(v.template get<14>()); o.pack(v.template get<15>()); o.pack(v.template get<16>()); o.pack(v.template get<17>()); o.pack(v.template get<18>()); o.pack(v.template get<19>()); o.pack(v.template get<20>()); o.pack(v.template get<21>()); o.pack(v.template get<22>()); o.pack(v.template get<23>()); o.pack(v.template get<24>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(26); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); o.pack(v.template get<9>()); o.pack(v.template get<10>()); o.pack(v.template get<11>()); o.pack(v.template get<12>()); o.pack(v.template get<13>()); o.pack(v.template get<14>()); o.pack(v.template get<15>()); o.pack(v.template get<16>()); o.pack(v.template get<17>()); o.pack(v.template get<18>()); o.pack(v.template get<19>()); o.pack(v.template get<20>()); o.pack(v.template get<21>()); o.pack(v.template get<22>()); o.pack(v.template get<23>()); o.pack(v.template get<24>()); o.pack(v.template get<25>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(27); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); o.pack(v.template get<9>()); o.pack(v.template get<10>()); o.pack(v.template get<11>()); o.pack(v.template get<12>()); o.pack(v.template get<13>()); o.pack(v.template get<14>()); o.pack(v.template get<15>()); o.pack(v.template get<16>()); o.pack(v.template get<17>()); o.pack(v.template get<18>()); o.pack(v.template get<19>()); o.pack(v.template get<20>()); o.pack(v.template get<21>()); o.pack(v.template get<22>()); o.pack(v.template get<23>()); o.pack(v.template get<24>()); o.pack(v.template get<25>()); o.pack(v.template get<26>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(28); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); o.pack(v.template get<9>()); o.pack(v.template get<10>()); o.pack(v.template get<11>()); o.pack(v.template get<12>()); o.pack(v.template get<13>()); o.pack(v.template get<14>()); o.pack(v.template get<15>()); o.pack(v.template get<16>()); o.pack(v.template get<17>()); o.pack(v.template get<18>()); o.pack(v.template get<19>()); o.pack(v.template get<20>()); o.pack(v.template get<21>()); o.pack(v.template get<22>()); o.pack(v.template get<23>()); o.pack(v.template get<24>()); o.pack(v.template get<25>()); o.pack(v.template get<26>()); o.pack(v.template get<27>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(29); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); o.pack(v.template get<9>()); o.pack(v.template get<10>()); o.pack(v.template get<11>()); o.pack(v.template get<12>()); o.pack(v.template get<13>()); o.pack(v.template get<14>()); o.pack(v.template get<15>()); o.pack(v.template get<16>()); o.pack(v.template get<17>()); o.pack(v.template get<18>()); o.pack(v.template get<19>()); o.pack(v.template get<20>()); o.pack(v.template get<21>()); o.pack(v.template get<22>()); o.pack(v.template get<23>()); o.pack(v.template get<24>()); o.pack(v.template get<25>()); o.pack(v.template get<26>()); o.pack(v.template get<27>()); o.pack(v.template get<28>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(30); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); o.pack(v.template get<9>()); o.pack(v.template get<10>()); o.pack(v.template get<11>()); o.pack(v.template get<12>()); o.pack(v.template get<13>()); o.pack(v.template get<14>()); o.pack(v.template get<15>()); o.pack(v.template get<16>()); o.pack(v.template get<17>()); o.pack(v.template get<18>()); o.pack(v.template get<19>()); o.pack(v.template get<20>()); o.pack(v.template get<21>()); o.pack(v.template get<22>()); o.pack(v.template get<23>()); o.pack(v.template get<24>()); o.pack(v.template get<25>()); o.pack(v.template get<26>()); o.pack(v.template get<27>()); o.pack(v.template get<28>()); o.pack(v.template get<29>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(31); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); o.pack(v.template get<9>()); o.pack(v.template get<10>()); o.pack(v.template get<11>()); o.pack(v.template get<12>()); o.pack(v.template get<13>()); o.pack(v.template get<14>()); o.pack(v.template get<15>()); o.pack(v.template get<16>()); o.pack(v.template get<17>()); o.pack(v.template get<18>()); o.pack(v.template get<19>()); o.pack(v.template get<20>()); o.pack(v.template get<21>()); o.pack(v.template get<22>()); o.pack(v.template get<23>()); o.pack(v.template get<24>()); o.pack(v.template get<25>()); o.pack(v.template get<26>()); o.pack(v.template get<27>()); o.pack(v.template get<28>()); o.pack(v.template get<29>()); o.pack(v.template get<30>()); return o; } }; template struct pack > { template msgpack::packer& operator()( msgpack::packer& o, const type::tuple& v) const { o.pack_array(32); o.pack(v.template get<0>()); o.pack(v.template get<1>()); o.pack(v.template get<2>()); o.pack(v.template get<3>()); o.pack(v.template get<4>()); o.pack(v.template get<5>()); o.pack(v.template get<6>()); o.pack(v.template get<7>()); o.pack(v.template get<8>()); o.pack(v.template get<9>()); o.pack(v.template get<10>()); o.pack(v.template get<11>()); o.pack(v.template get<12>()); o.pack(v.template get<13>()); o.pack(v.template get<14>()); o.pack(v.template get<15>()); o.pack(v.template get<16>()); o.pack(v.template get<17>()); o.pack(v.template get<18>()); o.pack(v.template get<19>()); o.pack(v.template get<20>()); o.pack(v.template get<21>()); o.pack(v.template get<22>()); o.pack(v.template get<23>()); o.pack(v.template get<24>()); o.pack(v.template get<25>()); o.pack(v.template get<26>()); o.pack(v.template get<27>()); o.pack(v.template get<28>()); o.pack(v.template get<29>()); o.pack(v.template get<30>()); o.pack(v.template get<31>()); return o; } }; /// @endcond template <> struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple<>&) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = nullptr; o.via.array.size = 0; } }; /// @cond template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*1)); o.via.array.size = 1; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*2)); o.via.array.size = 2; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*3)); o.via.array.size = 3; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*4)); o.via.array.size = 4; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*5)); o.via.array.size = 5; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*6)); o.via.array.size = 6; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*7)); o.via.array.size = 7; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*8)); o.via.array.size = 8; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*9)); o.via.array.size = 9; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*10)); o.via.array.size = 10; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*11)); o.via.array.size = 11; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone); o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*12)); o.via.array.size = 12; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone); o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone); o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*13)); o.via.array.size = 13; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone); o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone); o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone); o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*14)); o.via.array.size = 14; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone); o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone); o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone); o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone); o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*15)); o.via.array.size = 15; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone); o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone); o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone); o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone); o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone); o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*16)); o.via.array.size = 16; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone); o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone); o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone); o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone); o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone); o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone); o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*17)); o.via.array.size = 17; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone); o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone); o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone); o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone); o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone); o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone); o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone); o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*18)); o.via.array.size = 18; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone); o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone); o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone); o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone); o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone); o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone); o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone); o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone); o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*19)); o.via.array.size = 19; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone); o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone); o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone); o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone); o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone); o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone); o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone); o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone); o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone); o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*20)); o.via.array.size = 20; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone); o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone); o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone); o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone); o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone); o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone); o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone); o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone); o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone); o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone); o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*21)); o.via.array.size = 21; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone); o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone); o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone); o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone); o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone); o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone); o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone); o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone); o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone); o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone); o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone); o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*22)); o.via.array.size = 22; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone); o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone); o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone); o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone); o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone); o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone); o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone); o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone); o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone); o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone); o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone); o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone); o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*23)); o.via.array.size = 23; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone); o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone); o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone); o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone); o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone); o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone); o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone); o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone); o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone); o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone); o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone); o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone); o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone); o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*24)); o.via.array.size = 24; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone); o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone); o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone); o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone); o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone); o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone); o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone); o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone); o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone); o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone); o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone); o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone); o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone); o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone); o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*25)); o.via.array.size = 25; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone); o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone); o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone); o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone); o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone); o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone); o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone); o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone); o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone); o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone); o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone); o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone); o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone); o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone); o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone); o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*26)); o.via.array.size = 26; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone); o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone); o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone); o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone); o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone); o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone); o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone); o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone); o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone); o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone); o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone); o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone); o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone); o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone); o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone); o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone); o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*27)); o.via.array.size = 27; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone); o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone); o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone); o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone); o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone); o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone); o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone); o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone); o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone); o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone); o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone); o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone); o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone); o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone); o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone); o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone); o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone); o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*28)); o.via.array.size = 28; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone); o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone); o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone); o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone); o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone); o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone); o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone); o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone); o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone); o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone); o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone); o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone); o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone); o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone); o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone); o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone); o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone); o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone); o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*29)); o.via.array.size = 29; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone); o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone); o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone); o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone); o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone); o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone); o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone); o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone); o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone); o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone); o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone); o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone); o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone); o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone); o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone); o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone); o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone); o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone); o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone); o.via.array.ptr[28] = msgpack::object(v.template get<28>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*30)); o.via.array.size = 30; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone); o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone); o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone); o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone); o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone); o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone); o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone); o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone); o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone); o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone); o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone); o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone); o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone); o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone); o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone); o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone); o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone); o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone); o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone); o.via.array.ptr[28] = msgpack::object(v.template get<28>(), o.zone); o.via.array.ptr[29] = msgpack::object(v.template get<29>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*31)); o.via.array.size = 31; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone); o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone); o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone); o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone); o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone); o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone); o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone); o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone); o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone); o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone); o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone); o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone); o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone); o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone); o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone); o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone); o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone); o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone); o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone); o.via.array.ptr[28] = msgpack::object(v.template get<28>(), o.zone); o.via.array.ptr[29] = msgpack::object(v.template get<29>(), o.zone); o.via.array.ptr[30] = msgpack::object(v.template get<30>(), o.zone); } }; template struct object_with_zone > { void operator()( msgpack::object::with_zone& o, const type::tuple& v) const { o.type = msgpack::type::ARRAY; o.via.array.ptr = static_cast(o.zone.allocate_align(sizeof(msgpack::object)*32)); o.via.array.size = 32; o.via.array.ptr[0] = msgpack::object(v.template get<0>(), o.zone); o.via.array.ptr[1] = msgpack::object(v.template get<1>(), o.zone); o.via.array.ptr[2] = msgpack::object(v.template get<2>(), o.zone); o.via.array.ptr[3] = msgpack::object(v.template get<3>(), o.zone); o.via.array.ptr[4] = msgpack::object(v.template get<4>(), o.zone); o.via.array.ptr[5] = msgpack::object(v.template get<5>(), o.zone); o.via.array.ptr[6] = msgpack::object(v.template get<6>(), o.zone); o.via.array.ptr[7] = msgpack::object(v.template get<7>(), o.zone); o.via.array.ptr[8] = msgpack::object(v.template get<8>(), o.zone); o.via.array.ptr[9] = msgpack::object(v.template get<9>(), o.zone); o.via.array.ptr[10] = msgpack::object(v.template get<10>(), o.zone); o.via.array.ptr[11] = msgpack::object(v.template get<11>(), o.zone); o.via.array.ptr[12] = msgpack::object(v.template get<12>(), o.zone); o.via.array.ptr[13] = msgpack::object(v.template get<13>(), o.zone); o.via.array.ptr[14] = msgpack::object(v.template get<14>(), o.zone); o.via.array.ptr[15] = msgpack::object(v.template get<15>(), o.zone); o.via.array.ptr[16] = msgpack::object(v.template get<16>(), o.zone); o.via.array.ptr[17] = msgpack::object(v.template get<17>(), o.zone); o.via.array.ptr[18] = msgpack::object(v.template get<18>(), o.zone); o.via.array.ptr[19] = msgpack::object(v.template get<19>(), o.zone); o.via.array.ptr[20] = msgpack::object(v.template get<20>(), o.zone); o.via.array.ptr[21] = msgpack::object(v.template get<21>(), o.zone); o.via.array.ptr[22] = msgpack::object(v.template get<22>(), o.zone); o.via.array.ptr[23] = msgpack::object(v.template get<23>(), o.zone); o.via.array.ptr[24] = msgpack::object(v.template get<24>(), o.zone); o.via.array.ptr[25] = msgpack::object(v.template get<25>(), o.zone); o.via.array.ptr[26] = msgpack::object(v.template get<26>(), o.zone); o.via.array.ptr[27] = msgpack::object(v.template get<27>(), o.zone); o.via.array.ptr[28] = msgpack::object(v.template get<28>(), o.zone); o.via.array.ptr[29] = msgpack::object(v.template get<29>(), o.zone); o.via.array.ptr[30] = msgpack::object(v.template get<30>(), o.zone); o.via.array.ptr[31] = msgpack::object(v.template get<31>(), o.zone); } }; /// @endcond } // namespace adaptor /// @cond } // MSGPACK_API_VERSION_NAMESPACE(v1) /// @endcond } // namespace msgpack #endif // MSGPACK_CPP03_MSGPACK_TUPLE_HPP