// // Tuple.h // // Library: Foundation // Package: Core // Module: Tuple // // Definition of the Tuple class. // // Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. // and Contributors. // // SPDX-License-Identifier: BSL-1.0 // #ifndef Foundation_Tuple_INCLUDED #define Foundation_Tuple_INCLUDED #include "Poco/Foundation.h" #include "Poco/TypeList.h" namespace Poco { # define POCO_TYPEWRAPPER_DEFAULTVALUE(T) typename TypeWrapper::TYPE() template < class T0, class T1 = NullTypeList, class T2 = NullTypeList, class T3 = NullTypeList, class T4 = NullTypeList, class T5 = NullTypeList, class T6 = NullTypeList, class T7 = NullTypeList, class T8 = NullTypeList, class T9 = NullTypeList, class T10 = NullTypeList, class T11 = NullTypeList, class T12 = NullTypeList, class T13 = NullTypeList, class T14 = NullTypeList, class T15 = NullTypeList, class T16 = NullTypeList, class T17 = NullTypeList, class T18 = NullTypeList, class T19 = NullTypeList> struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple() : _data() { } Tuple( typename TypeWrapper::CONSTTYPE & t0, typename TypeWrapper::CONSTTYPE & t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE & t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE & t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE & t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE & t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE & t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE & t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE & t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8), typename TypeWrapper::CONSTTYPE & t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9), typename TypeWrapper::CONSTTYPE & t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10), typename TypeWrapper::CONSTTYPE & t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11), typename TypeWrapper::CONSTTYPE & t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12), typename TypeWrapper::CONSTTYPE & t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13), typename TypeWrapper::CONSTTYPE & t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14), typename TypeWrapper::CONSTTYPE & t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15), typename TypeWrapper::CONSTTYPE & t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16), typename TypeWrapper::CONSTTYPE & t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17), typename TypeWrapper::CONSTTYPE & t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18), typename TypeWrapper::CONSTTYPE & t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19)) : _data( t0, typename TypeListType::HeadType( t1, typename TypeListType::HeadType( t2, typename TypeListType::HeadType( t3, typename TypeListType::HeadType( t4, typename TypeListType::HeadType( t5, typename TypeListType::HeadType( t6, typename TypeListType::HeadType( t7, typename TypeListType::HeadType( t8, typename TypeListType::HeadType( t9, typename TypeListType::HeadType( t10, typename TypeListType::HeadType( t11, typename TypeListType::HeadType( t12, typename TypeListType::HeadType( t13, typename TypeListType::HeadType( t14, typename TypeListType::HeadType( t15, typename TypeListType::HeadType( t16, typename TypeListType::HeadType( t17, typename TypeListType::HeadType( t18, typename TypeListType::HeadType( t19, NullTypeList())))))))))))))))))))) { } template typename TypeGetter::ConstHeadType & get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType & get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType & val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator==(const Tuple & other) const { return _data == other._data; } bool operator!=(const Tuple & other) const { return !(_data == other._data); } bool operator<(const Tuple & other) const { return _data < other._data; } private: Type _data; }; template < class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18> struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple() : _data() { } Tuple( typename TypeWrapper::CONSTTYPE & t0, typename TypeWrapper::CONSTTYPE & t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE & t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE & t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE & t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE & t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE & t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE & t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE & t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8), typename TypeWrapper::CONSTTYPE & t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9), typename TypeWrapper::CONSTTYPE & t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10), typename TypeWrapper::CONSTTYPE & t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11), typename TypeWrapper::CONSTTYPE & t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12), typename TypeWrapper::CONSTTYPE & t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13), typename TypeWrapper::CONSTTYPE & t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14), typename TypeWrapper::CONSTTYPE & t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15), typename TypeWrapper::CONSTTYPE & t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16), typename TypeWrapper::CONSTTYPE & t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17), typename TypeWrapper::CONSTTYPE & t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18)) : _data( t0, typename TypeListType::HeadType( t1, typename TypeListType::HeadType( t2, typename TypeListType::HeadType( t3, typename TypeListType::HeadType( t4, typename TypeListType::HeadType( t5, typename TypeListType::HeadType( t6, typename TypeListType::HeadType( t7, typename TypeListType::HeadType( t8, typename TypeListType::HeadType( t9, typename TypeListType::HeadType( t10, typename TypeListType::HeadType( t11, typename TypeListType::HeadType( t12, typename TypeListType::HeadType( t13, typename TypeListType::HeadType( t14, typename TypeListType::HeadType( t15, typename TypeListType::HeadType( t16, typename TypeListType::HeadType( t17, typename TypeListType::HeadType( t18, NullTypeList()))))))))))))))))))) { } template typename TypeGetter::ConstHeadType & get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType & get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType & val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator==(const Tuple & other) const { return _data == other._data; } bool operator!=(const Tuple & other) const { return !(_data == other._data); } bool operator<(const Tuple & other) const { return _data < other._data; } private: Type _data; }; template < class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17> struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple() : _data() { } Tuple( typename TypeWrapper::CONSTTYPE & t0, typename TypeWrapper::CONSTTYPE & t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE & t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE & t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE & t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE & t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE & t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE & t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE & t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8), typename TypeWrapper::CONSTTYPE & t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9), typename TypeWrapper::CONSTTYPE & t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10), typename TypeWrapper::CONSTTYPE & t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11), typename TypeWrapper::CONSTTYPE & t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12), typename TypeWrapper::CONSTTYPE & t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13), typename TypeWrapper::CONSTTYPE & t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14), typename TypeWrapper::CONSTTYPE & t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15), typename TypeWrapper::CONSTTYPE & t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16), typename TypeWrapper::CONSTTYPE & t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17)) : _data( t0, typename TypeListType::HeadType( t1, typename TypeListType::HeadType( t2, typename TypeListType::HeadType( t3, typename TypeListType::HeadType( t4, typename TypeListType::HeadType( t5, typename TypeListType::HeadType( t6, typename TypeListType::HeadType( t7, typename TypeListType::HeadType( t8, typename TypeListType::HeadType( t9, typename TypeListType::HeadType( t10, typename TypeListType::HeadType( t11, typename TypeListType::HeadType( t12, typename TypeListType::HeadType( t13, typename TypeListType::HeadType( t14, typename TypeListType::HeadType( t15, typename TypeListType::HeadType( t16, typename TypeListType::HeadType( t17, NullTypeList())))))))))))))))))) { } template typename TypeGetter::ConstHeadType & get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType & get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType & val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator==(const Tuple & other) const { return _data == other._data; } bool operator!=(const Tuple & other) const { return !(_data == other._data); } bool operator<(const Tuple & other) const { return _data < other._data; } private: Type _data; }; template < class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16> struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple() : _data() { } Tuple( typename TypeWrapper::CONSTTYPE & t0, typename TypeWrapper::CONSTTYPE & t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE & t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE & t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE & t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE & t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE & t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE & t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE & t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8), typename TypeWrapper::CONSTTYPE & t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9), typename TypeWrapper::CONSTTYPE & t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10), typename TypeWrapper::CONSTTYPE & t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11), typename TypeWrapper::CONSTTYPE & t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12), typename TypeWrapper::CONSTTYPE & t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13), typename TypeWrapper::CONSTTYPE & t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14), typename TypeWrapper::CONSTTYPE & t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15), typename TypeWrapper::CONSTTYPE & t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16)) : _data( t0, typename TypeListType::HeadType( t1, typename TypeListType::HeadType( t2, typename TypeListType::HeadType( t3, typename TypeListType::HeadType( t4, typename TypeListType::HeadType( t5, typename TypeListType::HeadType( t6, typename TypeListType::HeadType( t7, typename TypeListType::HeadType( t8, typename TypeListType::HeadType( t9, typename TypeListType::HeadType( t10, typename TypeListType::HeadType( t11, typename TypeListType::HeadType( t12, typename TypeListType::HeadType( t13, typename TypeListType::HeadType( t14, typename TypeListType::HeadType( t15, typename TypeListType::HeadType( t16, NullTypeList()))))))))))))))))) { } template typename TypeGetter::ConstHeadType & get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType & get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType & val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator==(const Tuple & other) const { return _data == other._data; } bool operator!=(const Tuple & other) const { return !(_data == other._data); } bool operator<(const Tuple & other) const { return _data < other._data; } private: Type _data; }; template < class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15> struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple() : _data() { } Tuple( typename TypeWrapper::CONSTTYPE & t0, typename TypeWrapper::CONSTTYPE & t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE & t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE & t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE & t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE & t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE & t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE & t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE & t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8), typename TypeWrapper::CONSTTYPE & t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9), typename TypeWrapper::CONSTTYPE & t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10), typename TypeWrapper::CONSTTYPE & t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11), typename TypeWrapper::CONSTTYPE & t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12), typename TypeWrapper::CONSTTYPE & t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13), typename TypeWrapper::CONSTTYPE & t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14), typename TypeWrapper::CONSTTYPE & t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15)) : _data( t0, typename TypeListType::HeadType( t1, typename TypeListType::HeadType( t2, typename TypeListType::HeadType( t3, typename TypeListType::HeadType( t4, typename TypeListType::HeadType( t5, typename TypeListType::HeadType( t6, typename TypeListType::HeadType( t7, typename TypeListType::HeadType( t8, typename TypeListType::HeadType( t9, typename TypeListType::HeadType( t10, typename TypeListType::HeadType( t11, typename TypeListType::HeadType( t12, typename TypeListType::HeadType( t13, typename TypeListType::HeadType( t14, typename TypeListType::HeadType(t15, NullTypeList())))))))))))))))) { } template typename TypeGetter::ConstHeadType & get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType & get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType & val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator==(const Tuple & other) const { return _data == other._data; } bool operator!=(const Tuple & other) const { return !(_data == other._data); } bool operator<(const Tuple & other) const { return _data < other._data; } private: Type _data; }; template < class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14> struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple() : _data() { } Tuple( typename TypeWrapper::CONSTTYPE & t0, typename TypeWrapper::CONSTTYPE & t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE & t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE & t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE & t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE & t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE & t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE & t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE & t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8), typename TypeWrapper::CONSTTYPE & t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9), typename TypeWrapper::CONSTTYPE & t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10), typename TypeWrapper::CONSTTYPE & t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11), typename TypeWrapper::CONSTTYPE & t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12), typename TypeWrapper::CONSTTYPE & t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13), typename TypeWrapper::CONSTTYPE & t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14)) : _data( t0, typename TypeListType::HeadType( t1, typename TypeListType::HeadType( t2, typename TypeListType::HeadType( t3, typename TypeListType::HeadType( t4, typename TypeListType::HeadType( t5, typename TypeListType::HeadType( t6, typename TypeListType::HeadType( t7, typename TypeListType::HeadType( t8, typename TypeListType::HeadType( t9, typename TypeListType::HeadType( t10, typename TypeListType::HeadType( t11, typename TypeListType::HeadType( t12, typename TypeListType::HeadType( t13, typename TypeListType::HeadType(t14, NullTypeList()))))))))))))))) { } template typename TypeGetter::ConstHeadType & get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType & get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType & val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator==(const Tuple & other) const { return _data == other._data; } bool operator!=(const Tuple & other) const { return !(_data == other._data); } bool operator<(const Tuple & other) const { return _data < other._data; } private: Type _data; }; template < class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13> struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple() : _data() { } Tuple( typename TypeWrapper::CONSTTYPE & t0, typename TypeWrapper::CONSTTYPE & t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE & t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE & t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE & t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE & t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE & t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE & t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE & t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8), typename TypeWrapper::CONSTTYPE & t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9), typename TypeWrapper::CONSTTYPE & t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10), typename TypeWrapper::CONSTTYPE & t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11), typename TypeWrapper::CONSTTYPE & t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12), typename TypeWrapper::CONSTTYPE & t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13)) : _data( t0, typename TypeListType::HeadType( t1, typename TypeListType::HeadType( t2, typename TypeListType::HeadType( t3, typename TypeListType::HeadType( t4, typename TypeListType::HeadType( t5, typename TypeListType::HeadType( t6, typename TypeListType::HeadType( t7, typename TypeListType::HeadType( t8, typename TypeListType::HeadType( t9, typename TypeListType::HeadType( t10, typename TypeListType::HeadType( t11, typename TypeListType::HeadType( t12, typename TypeListType::HeadType(t13, NullTypeList())))))))))))))) { } template typename TypeGetter::ConstHeadType & get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType & get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType & val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator==(const Tuple & other) const { return _data == other._data; } bool operator!=(const Tuple & other) const { return !(_data == other._data); } bool operator<(const Tuple & other) const { return _data < other._data; } private: Type _data; }; template < class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12> struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple() : _data() { } Tuple( typename TypeWrapper::CONSTTYPE & t0, typename TypeWrapper::CONSTTYPE & t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE & t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE & t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE & t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE & t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE & t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE & t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE & t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8), typename TypeWrapper::CONSTTYPE & t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9), typename TypeWrapper::CONSTTYPE & t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10), typename TypeWrapper::CONSTTYPE & t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11), typename TypeWrapper::CONSTTYPE & t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12)) : _data( t0, typename TypeListType::HeadType( t1, typename TypeListType::HeadType( t2, typename TypeListType::HeadType( t3, typename TypeListType::HeadType( t4, typename TypeListType::HeadType( t5, typename TypeListType::HeadType( t6, typename TypeListType::HeadType( t7, typename TypeListType::HeadType( t8, typename TypeListType::HeadType( t9, typename TypeListType::HeadType( t10, typename TypeListType::HeadType( t11, typename TypeListType::HeadType(t12, NullTypeList()))))))))))))) { } template typename TypeGetter::ConstHeadType & get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType & get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType & val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator==(const Tuple & other) const { return _data == other._data; } bool operator!=(const Tuple & other) const { return !(_data == other._data); } bool operator<(const Tuple & other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple() : _data() { } Tuple( typename TypeWrapper::CONSTTYPE & t0, typename TypeWrapper::CONSTTYPE & t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE & t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE & t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE & t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE & t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE & t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE & t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE & t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8), typename TypeWrapper::CONSTTYPE & t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9), typename TypeWrapper::CONSTTYPE & t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10), typename TypeWrapper::CONSTTYPE & t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11)) : _data( t0, typename TypeListType::HeadType( t1, typename TypeListType::HeadType( t2, typename TypeListType::HeadType( t3, typename TypeListType::HeadType( t4, typename TypeListType::HeadType( t5, typename TypeListType::HeadType( t6, typename TypeListType::HeadType( t7, typename TypeListType::HeadType( t8, typename TypeListType::HeadType( t9, typename TypeListType::HeadType( t10, typename TypeListType::HeadType(t11, NullTypeList())))))))))))) { } template typename TypeGetter::ConstHeadType & get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType & get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType & val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator==(const Tuple & other) const { return _data == other._data; } bool operator!=(const Tuple & other) const { return !(_data == other._data); } bool operator<(const Tuple & other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple() : _data() { } Tuple( typename TypeWrapper::CONSTTYPE & t0, typename TypeWrapper::CONSTTYPE & t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE & t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE & t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE & t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE & t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE & t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE & t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE & t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8), typename TypeWrapper::CONSTTYPE & t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9), typename TypeWrapper::CONSTTYPE & t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10)) : _data( t0, typename TypeListType::HeadType( t1, typename TypeListType::HeadType( t2, typename TypeListType::HeadType( t3, typename TypeListType::HeadType( t4, typename TypeListType::HeadType( t5, typename TypeListType::HeadType( t6, typename TypeListType::HeadType( t7, typename TypeListType::HeadType( t8, typename TypeListType::HeadType( t9, typename TypeListType::HeadType(t10, NullTypeList()))))))))))) { } template typename TypeGetter::ConstHeadType & get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType & get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType & val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator==(const Tuple & other) const { return _data == other._data; } bool operator!=(const Tuple & other) const { return !(_data == other._data); } bool operator<(const Tuple & other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple() : _data() { } Tuple( typename TypeWrapper::CONSTTYPE & t0, typename TypeWrapper::CONSTTYPE & t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE & t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE & t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE & t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE & t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE & t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE & t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE & t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8), typename TypeWrapper::CONSTTYPE & t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9)) : _data( t0, typename TypeListType::HeadType( t1, typename TypeListType::HeadType( t2, typename TypeListType::HeadType( t3, typename TypeListType::HeadType( t4, typename TypeListType::HeadType( t5, typename TypeListType::HeadType( t6, typename TypeListType::HeadType( t7, typename TypeListType::HeadType( t8, typename TypeListType::HeadType(t9, NullTypeList())))))))))) { } template typename TypeGetter::ConstHeadType & get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType & get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType & val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator==(const Tuple & other) const { return _data == other._data; } bool operator!=(const Tuple & other) const { return !(_data == other._data); } bool operator<(const Tuple & other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple() : _data() { } Tuple( typename TypeWrapper::CONSTTYPE & t0, typename TypeWrapper::CONSTTYPE & t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE & t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE & t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE & t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE & t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE & t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE & t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7), typename TypeWrapper::CONSTTYPE & t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8)) : _data( t0, typename TypeListType::HeadType( t1, typename TypeListType::HeadType( t2, typename TypeListType::HeadType( t3, typename TypeListType::HeadType( t4, typename TypeListType::HeadType( t5, typename TypeListType::HeadType( t6, typename TypeListType::HeadType( t7, typename TypeListType::HeadType(t8, NullTypeList()))))))))) { } template typename TypeGetter::ConstHeadType & get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType & get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType & val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator==(const Tuple & other) const { return _data == other._data; } bool operator!=(const Tuple & other) const { return !(_data == other._data); } bool operator<(const Tuple & other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple() : _data() { } Tuple( typename TypeWrapper::CONSTTYPE & t0, typename TypeWrapper::CONSTTYPE & t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE & t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE & t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE & t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE & t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE & t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6), typename TypeWrapper::CONSTTYPE & t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7)) : _data( t0, typename TypeListType::HeadType( t1, typename TypeListType::HeadType( t2, typename TypeListType::HeadType( t3, typename TypeListType::HeadType( t4, typename TypeListType::HeadType( t5, typename TypeListType::HeadType(t6, typename TypeListType::HeadType(t7, NullTypeList())))))))) { } template typename TypeGetter::ConstHeadType & get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType & get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType & val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator==(const Tuple & other) const { return _data == other._data; } bool operator!=(const Tuple & other) const { return !(_data == other._data); } bool operator<(const Tuple & other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple() : _data() { } Tuple( typename TypeWrapper::CONSTTYPE & t0, typename TypeWrapper::CONSTTYPE & t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE & t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE & t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE & t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE & t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5), typename TypeWrapper::CONSTTYPE & t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6)) : _data( t0, typename TypeListType::HeadType( t1, typename TypeListType::HeadType( t2, typename TypeListType::HeadType( t3, typename TypeListType::HeadType( t4, typename TypeListType::HeadType(t5, typename TypeListType::HeadType(t6, NullTypeList()))))))) { } template typename TypeGetter::ConstHeadType & get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType & get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType & val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator==(const Tuple & other) const { return _data == other._data; } bool operator!=(const Tuple & other) const { return !(_data == other._data); } bool operator<(const Tuple & other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple() : _data() { } Tuple( typename TypeWrapper::CONSTTYPE & t0, typename TypeWrapper::CONSTTYPE & t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE & t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE & t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE & t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4), typename TypeWrapper::CONSTTYPE & t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5)) : _data( t0, typename TypeListType::HeadType( t1, typename TypeListType::HeadType( t2, typename TypeListType::HeadType( t3, typename TypeListType::HeadType(t4, typename TypeListType::HeadType(t5, NullTypeList())))))) { } template typename TypeGetter::ConstHeadType & get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType & get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType & val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator==(const Tuple & other) const { return _data == other._data; } bool operator!=(const Tuple & other) const { return !(_data == other._data); } bool operator<(const Tuple & other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple() : _data() { } Tuple( typename TypeWrapper::CONSTTYPE & t0, typename TypeWrapper::CONSTTYPE & t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE & t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE & t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3), typename TypeWrapper::CONSTTYPE & t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4)) : _data( t0, typename TypeListType::HeadType( t1, typename TypeListType::HeadType( t2, typename TypeListType::HeadType(t3, typename TypeListType::HeadType(t4, NullTypeList()))))) { } template typename TypeGetter::ConstHeadType & get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType & get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType & val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator==(const Tuple & other) const { return _data == other._data; } bool operator!=(const Tuple & other) const { return !(_data == other._data); } bool operator<(const Tuple & other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple() : _data() { } Tuple( typename TypeWrapper::CONSTTYPE & t0, typename TypeWrapper::CONSTTYPE & t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE & t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2), typename TypeWrapper::CONSTTYPE & t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3)) : _data( t0, typename TypeListType::HeadType( t1, typename TypeListType::HeadType(t2, typename TypeListType::HeadType(t3, NullTypeList())))) { } template typename TypeGetter::ConstHeadType & get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType & get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType & val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator==(const Tuple & other) const { return _data == other._data; } bool operator!=(const Tuple & other) const { return !(_data == other._data); } bool operator<(const Tuple & other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple() : _data() { } Tuple( typename TypeWrapper::CONSTTYPE & t0, typename TypeWrapper::CONSTTYPE & t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1), typename TypeWrapper::CONSTTYPE & t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2)) : _data(t0, typename TypeListType::HeadType(t1, typename TypeListType::HeadType(t2, NullTypeList()))) { } template typename TypeGetter::ConstHeadType & get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType & get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType & val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator==(const Tuple & other) const { return _data == other._data; } bool operator!=(const Tuple & other) const { return !(_data == other._data); } bool operator<(const Tuple & other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef typename TypeListType::HeadType Type; enum TupleLengthType { length = Type::length }; Tuple() : _data() { } Tuple(typename TypeWrapper::CONSTTYPE & t0, typename TypeWrapper::CONSTTYPE & t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1)) : _data(t0, typename TypeListType::HeadType(t1, NullTypeList())) { } template typename TypeGetter::ConstHeadType & get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType & get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType & val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator==(const Tuple & other) const { return _data == other._data; } bool operator!=(const Tuple & other) const { return !(_data == other._data); } bool operator<(const Tuple & other) const { return _data < other._data; } private: Type _data; }; template struct Tuple { typedef TypeList Type; enum TupleLengthType { length = Type::length }; Tuple() : _data() { } Tuple(typename TypeWrapper::CONSTTYPE & t0) : _data(t0, NullTypeList()) { } template typename TypeGetter::ConstHeadType & get() const { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template typename TypeGetter::HeadType & get() { return Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data); } template void set(typename TypeGetter::ConstHeadType & val) { Getter::template get::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val; } bool operator==(const Tuple & other) const { return _data == other._data; } bool operator!=(const Tuple & other) const { return !(_data == other._data); } bool operator<(const Tuple & other) const { return _data < other._data; } private: Type _data; }; } // namespace Poco #endif // Foundation_Tuple_INCLUDED