1 //
2 // Tuple.h
3 //
4 // Library: Foundation
5 // Package: Core
6 // Module:  Tuple
7 //
8 // Definition of the Tuple class.
9 //
10 // Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
11 // and Contributors.
12 //
13 // SPDX-License-Identifier:	BSL-1.0
14 //
15 
16 
17 #ifndef Foundation_Tuple_INCLUDED
18 #define Foundation_Tuple_INCLUDED
19 
20 
21 #include "Poco/Foundation.h"
22 #include "Poco/TypeList.h"
23 
24 
25 namespace Poco {
26 
27 
28 #if defined(POCO_COMPILER_MSVC)
29 #define POCO_TYPEWRAPPER_DEFAULTVALUE(T) TypeWrapper<T>::TYPE()
30 #else
31 #define POCO_TYPEWRAPPER_DEFAULTVALUE(T) typename TypeWrapper<T>::TYPE()
32 #endif
33 
34 
35 template <class T0,
36 	class T1 = NullTypeList,
37 	class T2 = NullTypeList,
38 	class T3 = NullTypeList,
39 	class T4 = NullTypeList,
40 	class T5 = NullTypeList,
41 	class T6 = NullTypeList,
42 	class T7 = NullTypeList,
43 	class T8 = NullTypeList,
44 	class T9 = NullTypeList,
45 	class T10 = NullTypeList,
46 	class T11 = NullTypeList,
47 	class T12 = NullTypeList,
48 	class T13 = NullTypeList,
49 	class T14 = NullTypeList,
50 	class T15 = NullTypeList,
51 	class T16 = NullTypeList,
52 	class T17 = NullTypeList,
53 	class T18 = NullTypeList,
54 	class T19 = NullTypeList,
55 	class T20 = NullTypeList,
56 	class T21 = NullTypeList,
57 	class T22 = NullTypeList,
58 	class T23 = NullTypeList,
59 	class T24 = NullTypeList,
60 	class T25 = NullTypeList,
61 	class T26 = NullTypeList,
62 	class T27 = NullTypeList,
63 	class T28 = NullTypeList,
64 	class T29 = NullTypeList,
65 	class T30 = NullTypeList,
66 	class T31 = NullTypeList,
67 	class T32 = NullTypeList,
68 	class T33 = NullTypeList,
69 	class T34 = NullTypeList,
70 	class T35 = NullTypeList,
71 	class T36 = NullTypeList,
72 	class T37 = NullTypeList,
73 	class T38 = NullTypeList,
74 	class T39 = NullTypeList>
75 struct Tuple
76 {
77 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType Type;
78 
79 	enum TupleLengthType
80 	{
81 		length = Type::length
82 	};
83 
TupleTuple84 	Tuple():_data()
85 	{
86 	}
87 
88 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
89 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
90 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
91 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
92 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
93 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
94 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
95 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
96 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
97 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
98 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
99 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
100 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
101 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
102 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
103 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
104 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
105 		typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
106 		typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
107 		typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
108 		typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
109 		typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
110 		typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
111 		typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
112 		typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
113 		typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
114 		typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
115 		typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
116 		typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28),
117 		typename TypeWrapper<T29>::CONSTTYPE& t29 = POCO_TYPEWRAPPER_DEFAULTVALUE(T29),
118 		typename TypeWrapper<T30>::CONSTTYPE& t30 = POCO_TYPEWRAPPER_DEFAULTVALUE(T30),
119 		typename TypeWrapper<T31>::CONSTTYPE& t31 = POCO_TYPEWRAPPER_DEFAULTVALUE(T31),
120 		typename TypeWrapper<T32>::CONSTTYPE& t32 = POCO_TYPEWRAPPER_DEFAULTVALUE(T32),
121 		typename TypeWrapper<T33>::CONSTTYPE& t33 = POCO_TYPEWRAPPER_DEFAULTVALUE(T33),
122 		typename TypeWrapper<T34>::CONSTTYPE& t34 = POCO_TYPEWRAPPER_DEFAULTVALUE(T34),
123 		typename TypeWrapper<T35>::CONSTTYPE& t35 = POCO_TYPEWRAPPER_DEFAULTVALUE(T35),
124 		typename TypeWrapper<T36>::CONSTTYPE& t36 = POCO_TYPEWRAPPER_DEFAULTVALUE(T36),
125 		typename TypeWrapper<T37>::CONSTTYPE& t37 = POCO_TYPEWRAPPER_DEFAULTVALUE(T37),
126 		typename TypeWrapper<T38>::CONSTTYPE& t38 = POCO_TYPEWRAPPER_DEFAULTVALUE(T38),
127 		typename TypeWrapper<T39>::CONSTTYPE& t39 = POCO_TYPEWRAPPER_DEFAULTVALUE(T39)):
_dataTuple128 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
129 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
130 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
131 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
132 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
133 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
134 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
135 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
136 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
137 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
138 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
139 			(t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
140 			(t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
141 			(t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
142 			(t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
143 			(t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
144 			(t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
145 			(t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
146 			(t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
147 			(t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
148 			(t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
149 			(t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
150 			(t22, typename TypeListType<T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
151 			(t23, typename TypeListType<T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
152 			(t24, typename TypeListType<T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
153 			(t25, typename TypeListType<T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
154 			(t26, typename TypeListType<T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
155 			(t27, typename TypeListType<T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
156 			(t28, typename TypeListType<T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
157 			(t29, typename TypeListType<T30,T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
158 			(t30, typename TypeListType<T31,T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
159 			(t31, typename TypeListType<T32,T33,T34,T35,T36,T37,T38,T39>::HeadType
160 			(t32, typename TypeListType<T33,T34,T35,T36,T37,T38,T39>::HeadType
161 			(t33, typename TypeListType<T34,T35,T36,T37,T38,T39>::HeadType
162 			(t34, typename TypeListType<T35,T36,T37,T38,T39>::HeadType
163 			(t35, typename TypeListType<T36,T37,T38,T39>::HeadType
164 			(t36, typename TypeListType<T37,T38,T39>::HeadType
165 			(t37, typename TypeListType<T38,T39>::HeadType
166 			(t38, typename TypeListType<T39>::HeadType
167 			(t39, NullTypeList()))))))))))))))))))))))))))))))))))))))))
168 	{
169 	}
170 
171 	template <int N>
getTuple172 	typename TypeGetter<N, Type>::ConstHeadType& get() const
173 	{
174 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
175 	}
176 
177 	template <int N>
getTuple178 	typename TypeGetter<N, Type>::HeadType& get()
179 	{
180 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
181 	}
182 
183 	template <int N>
setTuple184 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
185 	{
186 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
187 	}
188 
189 	bool operator == (const Tuple& other) const
190 	{
191 		return _data == other._data;
192 	}
193 
194 	bool operator != (const Tuple& other) const
195 	{
196 		return !(_data == other._data);
197 	}
198 
199 	bool operator < (const Tuple& other) const
200 	{
201 		return _data < other._data;
202 	}
203 
204 private:
205 	Type _data;
206 };
207 
208 
209 template <class T0,
210 	class T1,
211 	class T2,
212 	class T3,
213 	class T4,
214 	class T5,
215 	class T6,
216 	class T7,
217 	class T8,
218 	class T9,
219 	class T10,
220 	class T11,
221 	class T12,
222 	class T13,
223 	class T14,
224 	class T15,
225 	class T16,
226 	class T17,
227 	class T18,
228 	class T19,
229 	class T20,
230 	class T21,
231 	class T22,
232 	class T23,
233 	class T24,
234 	class T25,
235 	class T26,
236 	class T27,
237 	class T28,
238 	class T29,
239 	class T30,
240 	class T31,
241 	class T32,
242 	class T33,
243 	class T34,
244 	class T35,
245 	class T36,
246 	class T37,
247 	class T38>
248 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,NullTypeList>
249 {
250 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType Type;
251 
252 	enum TupleLengthType
253 	{
254 		length = Type::length
255 	};
256 
257 	Tuple():_data()
258 	{
259 	}
260 
261 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
262 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
263 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
264 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
265 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
266 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
267 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
268 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
269 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
270 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
271 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
272 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
273 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
274 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
275 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
276 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
277 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
278 		typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
279 		typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
280 		typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
281 		typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
282 		typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
283 		typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
284 		typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
285 		typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
286 		typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
287 		typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
288 		typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
289 		typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28),
290 		typename TypeWrapper<T29>::CONSTTYPE& t29 = POCO_TYPEWRAPPER_DEFAULTVALUE(T29),
291 		typename TypeWrapper<T30>::CONSTTYPE& t30 = POCO_TYPEWRAPPER_DEFAULTVALUE(T30),
292 		typename TypeWrapper<T31>::CONSTTYPE& t31 = POCO_TYPEWRAPPER_DEFAULTVALUE(T31),
293 		typename TypeWrapper<T32>::CONSTTYPE& t32 = POCO_TYPEWRAPPER_DEFAULTVALUE(T32),
294 		typename TypeWrapper<T33>::CONSTTYPE& t33 = POCO_TYPEWRAPPER_DEFAULTVALUE(T33),
295 		typename TypeWrapper<T34>::CONSTTYPE& t34 = POCO_TYPEWRAPPER_DEFAULTVALUE(T34),
296 		typename TypeWrapper<T35>::CONSTTYPE& t35 = POCO_TYPEWRAPPER_DEFAULTVALUE(T35),
297 		typename TypeWrapper<T36>::CONSTTYPE& t36 = POCO_TYPEWRAPPER_DEFAULTVALUE(T36),
298 		typename TypeWrapper<T37>::CONSTTYPE& t37 = POCO_TYPEWRAPPER_DEFAULTVALUE(T37),
299 		typename TypeWrapper<T38>::CONSTTYPE& t38 = POCO_TYPEWRAPPER_DEFAULTVALUE(T38)):
300 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
301 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
302 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
303 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
304 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
305 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
306 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
307 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
308 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
309 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
310 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
311 			(t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
312 			(t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
313 			(t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
314 			(t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
315 			(t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
316 			(t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
317 			(t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
318 			(t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
319 			(t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
320 			(t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
321 			(t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
322 			(t22, typename TypeListType<T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
323 			(t23, typename TypeListType<T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
324 			(t24, typename TypeListType<T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
325 			(t25, typename TypeListType<T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
326 			(t26, typename TypeListType<T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
327 			(t27, typename TypeListType<T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
328 			(t28, typename TypeListType<T29,T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
329 			(t29, typename TypeListType<T30,T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
330 			(t30, typename TypeListType<T31,T32,T33,T34,T35,T36,T37,T38>::HeadType
331 			(t31, typename TypeListType<T32,T33,T34,T35,T36,T37,T38>::HeadType
332 			(t32, typename TypeListType<T33,T34,T35,T36,T37,T38>::HeadType
333 			(t33, typename TypeListType<T34,T35,T36,T37,T38>::HeadType
334 			(t34, typename TypeListType<T35,T36,T37,T38>::HeadType
335 			(t35, typename TypeListType<T36,T37,T38>::HeadType
336 			(t36, typename TypeListType<T37,T38>::HeadType
337 			(t37, typename TypeListType<T38>::HeadType
338 			(t38, NullTypeList())))))))))))))))))))))))))))))))))))))))
339 	{
340 	}
341 
342 	template <int N>
343 	typename TypeGetter<N, Type>::ConstHeadType& get() const
344 	{
345 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
346 	}
347 
348 	template <int N>
349 	typename TypeGetter<N, Type>::HeadType& get()
350 	{
351 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
352 	}
353 
354 	template <int N>
355 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
356 	{
357 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
358 	}
359 
360 	bool operator == (const Tuple& other) const
361 	{
362 		return _data == other._data;
363 	}
364 
365 	bool operator != (const Tuple& other) const
366 	{
367 		return !(_data == other._data);
368 	}
369 
370 	bool operator < (const Tuple& other) const
371 	{
372 		return _data < other._data;
373 	}
374 
375 private:
376 	Type _data;
377 };
378 
379 
380 template <class T0,
381 	class T1,
382 	class T2,
383 	class T3,
384 	class T4,
385 	class T5,
386 	class T6,
387 	class T7,
388 	class T8,
389 	class T9,
390 	class T10,
391 	class T11,
392 	class T12,
393 	class T13,
394 	class T14,
395 	class T15,
396 	class T16,
397 	class T17,
398 	class T18,
399 	class T19,
400 	class T20,
401 	class T21,
402 	class T22,
403 	class T23,
404 	class T24,
405 	class T25,
406 	class T26,
407 	class T27,
408 	class T28,
409 	class T29,
410 	class T30,
411 	class T31,
412 	class T32,
413 	class T33,
414 	class T34,
415 	class T35,
416 	class T36,
417 	class T37>
418 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,NullTypeList>
419 {
420 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType Type;
421 
422 	enum TupleLengthType
423 	{
424 		length = Type::length
425 	};
426 
427 	Tuple():_data()
428 	{
429 	}
430 
431 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
432 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
433 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
434 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
435 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
436 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
437 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
438 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
439 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
440 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
441 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
442 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
443 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
444 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
445 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
446 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
447 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
448 		typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
449 		typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
450 		typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
451 		typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
452 		typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
453 		typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
454 		typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
455 		typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
456 		typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
457 		typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
458 		typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
459 		typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28),
460 		typename TypeWrapper<T29>::CONSTTYPE& t29 = POCO_TYPEWRAPPER_DEFAULTVALUE(T29),
461 		typename TypeWrapper<T30>::CONSTTYPE& t30 = POCO_TYPEWRAPPER_DEFAULTVALUE(T30),
462 		typename TypeWrapper<T31>::CONSTTYPE& t31 = POCO_TYPEWRAPPER_DEFAULTVALUE(T31),
463 		typename TypeWrapper<T32>::CONSTTYPE& t32 = POCO_TYPEWRAPPER_DEFAULTVALUE(T32),
464 		typename TypeWrapper<T33>::CONSTTYPE& t33 = POCO_TYPEWRAPPER_DEFAULTVALUE(T33),
465 		typename TypeWrapper<T34>::CONSTTYPE& t34 = POCO_TYPEWRAPPER_DEFAULTVALUE(T34),
466 		typename TypeWrapper<T35>::CONSTTYPE& t35 = POCO_TYPEWRAPPER_DEFAULTVALUE(T35),
467 		typename TypeWrapper<T36>::CONSTTYPE& t36 = POCO_TYPEWRAPPER_DEFAULTVALUE(T36),
468 		typename TypeWrapper<T37>::CONSTTYPE& t37 = POCO_TYPEWRAPPER_DEFAULTVALUE(T37)):
469 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
470 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
471 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
472 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
473 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
474 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
475 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
476 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
477 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
478 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
479 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
480 			(t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
481 			(t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
482 			(t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
483 			(t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
484 			(t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
485 			(t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
486 			(t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
487 			(t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
488 			(t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
489 			(t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
490 			(t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
491 			(t22, typename TypeListType<T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
492 			(t23, typename TypeListType<T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
493 			(t24, typename TypeListType<T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
494 			(t25, typename TypeListType<T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
495 			(t26, typename TypeListType<T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
496 			(t27, typename TypeListType<T28,T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
497 			(t28, typename TypeListType<T29,T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
498 			(t29, typename TypeListType<T30,T31,T32,T33,T34,T35,T36,T37>::HeadType
499 			(t30, typename TypeListType<T31,T32,T33,T34,T35,T36,T37>::HeadType
500 			(t31, typename TypeListType<T32,T33,T34,T35,T36,T37>::HeadType
501 			(t32, typename TypeListType<T33,T34,T35,T36,T37>::HeadType
502 			(t33, typename TypeListType<T34,T35,T36,T37>::HeadType
503 			(t34, typename TypeListType<T35,T36,T37>::HeadType
504 			(t35, typename TypeListType<T36,T37>::HeadType
505 			(t36, typename TypeListType<T37>::HeadType
506 			(t37, NullTypeList()))))))))))))))))))))))))))))))))))))))
507 	{
508 	}
509 
510 	template <int N>
511 	typename TypeGetter<N, Type>::ConstHeadType& get() const
512 	{
513 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
514 	}
515 
516 	template <int N>
517 	typename TypeGetter<N, Type>::HeadType& get()
518 	{
519 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
520 	}
521 
522 	template <int N>
523 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
524 	{
525 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
526 	}
527 
528 	bool operator == (const Tuple& other) const
529 	{
530 		return _data == other._data;
531 	}
532 
533 	bool operator != (const Tuple& other) const
534 	{
535 		return !(_data == other._data);
536 	}
537 
538 	bool operator < (const Tuple& other) const
539 	{
540 		return _data < other._data;
541 	}
542 
543 private:
544 	Type _data;
545 };
546 
547 
548 template <class T0,
549 	class T1,
550 	class T2,
551 	class T3,
552 	class T4,
553 	class T5,
554 	class T6,
555 	class T7,
556 	class T8,
557 	class T9,
558 	class T10,
559 	class T11,
560 	class T12,
561 	class T13,
562 	class T14,
563 	class T15,
564 	class T16,
565 	class T17,
566 	class T18,
567 	class T19,
568 	class T20,
569 	class T21,
570 	class T22,
571 	class T23,
572 	class T24,
573 	class T25,
574 	class T26,
575 	class T27,
576 	class T28,
577 	class T29,
578 	class T30,
579 	class T31,
580 	class T32,
581 	class T33,
582 	class T34,
583 	class T35,
584 	class T36>
585 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,NullTypeList>
586 {
587 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType Type;
588 
589 	enum TupleLengthType
590 	{
591 		length = Type::length
592 	};
593 
594 	Tuple():_data()
595 	{
596 	}
597 
598 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
599 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
600 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
601 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
602 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
603 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
604 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
605 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
606 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
607 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
608 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
609 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
610 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
611 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
612 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
613 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
614 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
615 		typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
616 		typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
617 		typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
618 		typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
619 		typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
620 		typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
621 		typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
622 		typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
623 		typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
624 		typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
625 		typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
626 		typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28),
627 		typename TypeWrapper<T29>::CONSTTYPE& t29 = POCO_TYPEWRAPPER_DEFAULTVALUE(T29),
628 		typename TypeWrapper<T30>::CONSTTYPE& t30 = POCO_TYPEWRAPPER_DEFAULTVALUE(T30),
629 		typename TypeWrapper<T31>::CONSTTYPE& t31 = POCO_TYPEWRAPPER_DEFAULTVALUE(T31),
630 		typename TypeWrapper<T32>::CONSTTYPE& t32 = POCO_TYPEWRAPPER_DEFAULTVALUE(T32),
631 		typename TypeWrapper<T33>::CONSTTYPE& t33 = POCO_TYPEWRAPPER_DEFAULTVALUE(T33),
632 		typename TypeWrapper<T34>::CONSTTYPE& t34 = POCO_TYPEWRAPPER_DEFAULTVALUE(T34),
633 		typename TypeWrapper<T35>::CONSTTYPE& t35 = POCO_TYPEWRAPPER_DEFAULTVALUE(T35),
634 		typename TypeWrapper<T36>::CONSTTYPE& t36 = POCO_TYPEWRAPPER_DEFAULTVALUE(T36)):
635 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
636 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
637 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
638 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
639 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
640 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
641 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
642 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
643 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
644 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
645 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
646 			(t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
647 			(t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
648 			(t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
649 			(t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
650 			(t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
651 			(t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
652 			(t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
653 			(t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
654 			(t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
655 			(t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
656 			(t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
657 			(t22, typename TypeListType<T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
658 			(t23, typename TypeListType<T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
659 			(t24, typename TypeListType<T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
660 			(t25, typename TypeListType<T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
661 			(t26, typename TypeListType<T27,T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
662 			(t27, typename TypeListType<T28,T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
663 			(t28, typename TypeListType<T29,T30,T31,T32,T33,T34,T35,T36>::HeadType
664 			(t29, typename TypeListType<T30,T31,T32,T33,T34,T35,T36>::HeadType
665 			(t30, typename TypeListType<T31,T32,T33,T34,T35,T36>::HeadType
666 			(t31, typename TypeListType<T32,T33,T34,T35,T36>::HeadType
667 			(t32, typename TypeListType<T33,T34,T35,T36>::HeadType
668 			(t33, typename TypeListType<T34,T35,T36>::HeadType
669 			(t34, typename TypeListType<T35,T36>::HeadType
670 			(t35, typename TypeListType<T36>::HeadType
671 			(t36, NullTypeList())))))))))))))))))))))))))))))))))))))
672 	{
673 	}
674 
675 	template <int N>
676 	typename TypeGetter<N, Type>::ConstHeadType& get() const
677 	{
678 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
679 	}
680 
681 	template <int N>
682 	typename TypeGetter<N, Type>::HeadType& get()
683 	{
684 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
685 	}
686 
687 	template <int N>
688 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
689 	{
690 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
691 	}
692 
693 	bool operator == (const Tuple& other) const
694 	{
695 		return _data == other._data;
696 	}
697 
698 	bool operator != (const Tuple& other) const
699 	{
700 		return !(_data == other._data);
701 	}
702 
703 	bool operator < (const Tuple& other) const
704 	{
705 		return _data < other._data;
706 	}
707 
708 private:
709 	Type _data;
710 };
711 
712 
713 template <class T0,
714 	class T1,
715 	class T2,
716 	class T3,
717 	class T4,
718 	class T5,
719 	class T6,
720 	class T7,
721 	class T8,
722 	class T9,
723 	class T10,
724 	class T11,
725 	class T12,
726 	class T13,
727 	class T14,
728 	class T15,
729 	class T16,
730 	class T17,
731 	class T18,
732 	class T19,
733 	class T20,
734 	class T21,
735 	class T22,
736 	class T23,
737 	class T24,
738 	class T25,
739 	class T26,
740 	class T27,
741 	class T28,
742 	class T29,
743 	class T30,
744 	class T31,
745 	class T32,
746 	class T33,
747 	class T34,
748 	class T35>
749 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,NullTypeList>
750 {
751 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType Type;
752 
753 	enum TupleLengthType
754 	{
755 		length = Type::length
756 	};
757 
758 	Tuple():_data()
759 	{
760 	}
761 
762 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
763 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
764 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
765 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
766 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
767 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
768 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
769 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
770 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
771 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
772 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
773 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
774 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
775 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
776 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
777 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
778 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
779 		typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
780 		typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
781 		typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
782 		typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
783 		typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
784 		typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
785 		typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
786 		typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
787 		typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
788 		typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
789 		typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
790 		typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28),
791 		typename TypeWrapper<T29>::CONSTTYPE& t29 = POCO_TYPEWRAPPER_DEFAULTVALUE(T29),
792 		typename TypeWrapper<T30>::CONSTTYPE& t30 = POCO_TYPEWRAPPER_DEFAULTVALUE(T30),
793 		typename TypeWrapper<T31>::CONSTTYPE& t31 = POCO_TYPEWRAPPER_DEFAULTVALUE(T31),
794 		typename TypeWrapper<T32>::CONSTTYPE& t32 = POCO_TYPEWRAPPER_DEFAULTVALUE(T32),
795 		typename TypeWrapper<T33>::CONSTTYPE& t33 = POCO_TYPEWRAPPER_DEFAULTVALUE(T33),
796 		typename TypeWrapper<T34>::CONSTTYPE& t34 = POCO_TYPEWRAPPER_DEFAULTVALUE(T34),
797 		typename TypeWrapper<T35>::CONSTTYPE& t35 = POCO_TYPEWRAPPER_DEFAULTVALUE(T35)):
798 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
799 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
800 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
801 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
802 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
803 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
804 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
805 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
806 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
807 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
808 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
809 			(t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
810 			(t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
811 			(t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
812 			(t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
813 			(t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
814 			(t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
815 			(t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
816 			(t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
817 			(t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
818 			(t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
819 			(t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
820 			(t22, typename TypeListType<T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
821 			(t23, typename TypeListType<T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
822 			(t24, typename TypeListType<T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
823 			(t25, typename TypeListType<T26,T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
824 			(t26, typename TypeListType<T27,T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
825 			(t27, typename TypeListType<T28,T29,T30,T31,T32,T33,T34,T35>::HeadType
826 			(t28, typename TypeListType<T29,T30,T31,T32,T33,T34,T35>::HeadType
827 			(t29, typename TypeListType<T30,T31,T32,T33,T34,T35>::HeadType
828 			(t30, typename TypeListType<T31,T32,T33,T34,T35>::HeadType
829 			(t31, typename TypeListType<T32,T33,T34,T35>::HeadType
830 			(t32, typename TypeListType<T33,T34,T35>::HeadType
831 			(t33, typename TypeListType<T34,T35>::HeadType
832 			(t34, typename TypeListType<T35>::HeadType
833 			(t35, NullTypeList()))))))))))))))))))))))))))))))))))))
834 	{
835 	}
836 
837 	template <int N>
838 	typename TypeGetter<N, Type>::ConstHeadType& get() const
839 	{
840 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
841 	}
842 
843 	template <int N>
844 	typename TypeGetter<N, Type>::HeadType& get()
845 	{
846 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
847 	}
848 
849 	template <int N>
850 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
851 	{
852 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
853 	}
854 
855 	bool operator == (const Tuple& other) const
856 	{
857 		return _data == other._data;
858 	}
859 
860 	bool operator != (const Tuple& other) const
861 	{
862 		return !(_data == other._data);
863 	}
864 
865 	bool operator < (const Tuple& other) const
866 	{
867 		return _data < other._data;
868 	}
869 
870 private:
871 	Type _data;
872 };
873 
874 
875 template <class T0,
876 	class T1,
877 	class T2,
878 	class T3,
879 	class T4,
880 	class T5,
881 	class T6,
882 	class T7,
883 	class T8,
884 	class T9,
885 	class T10,
886 	class T11,
887 	class T12,
888 	class T13,
889 	class T14,
890 	class T15,
891 	class T16,
892 	class T17,
893 	class T18,
894 	class T19,
895 	class T20,
896 	class T21,
897 	class T22,
898 	class T23,
899 	class T24,
900 	class T25,
901 	class T26,
902 	class T27,
903 	class T28,
904 	class T29,
905 	class T30,
906 	class T31,
907 	class T32,
908 	class T33,
909 	class T34>
910 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,NullTypeList>
911 {
912 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType Type;
913 
914 	enum TupleLengthType
915 	{
916 		length = Type::length
917 	};
918 
919 	Tuple():_data()
920 	{
921 	}
922 
923 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
924 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
925 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
926 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
927 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
928 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
929 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
930 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
931 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
932 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
933 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
934 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
935 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
936 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
937 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
938 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
939 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
940 		typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
941 		typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
942 		typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
943 		typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
944 		typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
945 		typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
946 		typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
947 		typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
948 		typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
949 		typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
950 		typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
951 		typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28),
952 		typename TypeWrapper<T29>::CONSTTYPE& t29 = POCO_TYPEWRAPPER_DEFAULTVALUE(T29),
953 		typename TypeWrapper<T30>::CONSTTYPE& t30 = POCO_TYPEWRAPPER_DEFAULTVALUE(T30),
954 		typename TypeWrapper<T31>::CONSTTYPE& t31 = POCO_TYPEWRAPPER_DEFAULTVALUE(T31),
955 		typename TypeWrapper<T32>::CONSTTYPE& t32 = POCO_TYPEWRAPPER_DEFAULTVALUE(T32),
956 		typename TypeWrapper<T33>::CONSTTYPE& t33 = POCO_TYPEWRAPPER_DEFAULTVALUE(T33),
957 		typename TypeWrapper<T34>::CONSTTYPE& t34 = POCO_TYPEWRAPPER_DEFAULTVALUE(T34)):
958 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
959 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
960 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
961 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
962 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
963 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
964 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
965 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
966 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
967 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
968 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
969 			(t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
970 			(t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
971 			(t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
972 			(t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
973 			(t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
974 			(t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
975 			(t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
976 			(t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
977 			(t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
978 			(t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
979 			(t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
980 			(t22, typename TypeListType<T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
981 			(t23, typename TypeListType<T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
982 			(t24, typename TypeListType<T25,T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
983 			(t25, typename TypeListType<T26,T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
984 			(t26, typename TypeListType<T27,T28,T29,T30,T31,T32,T33,T34>::HeadType
985 			(t27, typename TypeListType<T28,T29,T30,T31,T32,T33,T34>::HeadType
986 			(t28, typename TypeListType<T29,T30,T31,T32,T33,T34>::HeadType
987 			(t29, typename TypeListType<T30,T31,T32,T33,T34>::HeadType
988 			(t30, typename TypeListType<T31,T32,T33,T34>::HeadType
989 			(t31, typename TypeListType<T32,T33,T34>::HeadType
990 			(t32, typename TypeListType<T33,T34>::HeadType
991 			(t33, typename TypeListType<T34>::HeadType
992 			(t34, NullTypeList())))))))))))))))))))))))))))))))))))
993 	{
994 	}
995 
996 	template <int N>
997 	typename TypeGetter<N, Type>::ConstHeadType& get() const
998 	{
999 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1000 	}
1001 
1002 	template <int N>
1003 	typename TypeGetter<N, Type>::HeadType& get()
1004 	{
1005 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1006 	}
1007 
1008 	template <int N>
1009 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
1010 	{
1011 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
1012 	}
1013 
1014 	bool operator == (const Tuple& other) const
1015 	{
1016 		return _data == other._data;
1017 	}
1018 
1019 	bool operator != (const Tuple& other) const
1020 	{
1021 		return !(_data == other._data);
1022 	}
1023 
1024 	bool operator < (const Tuple& other) const
1025 	{
1026 		return _data < other._data;
1027 	}
1028 
1029 private:
1030 	Type _data;
1031 };
1032 
1033 
1034 template <class T0,
1035 	class T1,
1036 	class T2,
1037 	class T3,
1038 	class T4,
1039 	class T5,
1040 	class T6,
1041 	class T7,
1042 	class T8,
1043 	class T9,
1044 	class T10,
1045 	class T11,
1046 	class T12,
1047 	class T13,
1048 	class T14,
1049 	class T15,
1050 	class T16,
1051 	class T17,
1052 	class T18,
1053 	class T19,
1054 	class T20,
1055 	class T21,
1056 	class T22,
1057 	class T23,
1058 	class T24,
1059 	class T25,
1060 	class T26,
1061 	class T27,
1062 	class T28,
1063 	class T29,
1064 	class T30,
1065 	class T31,
1066 	class T32,
1067 	class T33>
1068 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,NullTypeList>
1069 {
1070 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType Type;
1071 
1072 	enum TupleLengthType
1073 	{
1074 		length = Type::length
1075 	};
1076 
1077 	Tuple():_data()
1078 	{
1079 	}
1080 
1081 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
1082 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
1083 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
1084 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
1085 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
1086 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
1087 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
1088 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
1089 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
1090 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
1091 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
1092 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
1093 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
1094 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
1095 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
1096 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
1097 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
1098 		typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
1099 		typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
1100 		typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
1101 		typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
1102 		typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
1103 		typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
1104 		typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
1105 		typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
1106 		typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
1107 		typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
1108 		typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
1109 		typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28),
1110 		typename TypeWrapper<T29>::CONSTTYPE& t29 = POCO_TYPEWRAPPER_DEFAULTVALUE(T29),
1111 		typename TypeWrapper<T30>::CONSTTYPE& t30 = POCO_TYPEWRAPPER_DEFAULTVALUE(T30),
1112 		typename TypeWrapper<T31>::CONSTTYPE& t31 = POCO_TYPEWRAPPER_DEFAULTVALUE(T31),
1113 		typename TypeWrapper<T32>::CONSTTYPE& t32 = POCO_TYPEWRAPPER_DEFAULTVALUE(T32),
1114 		typename TypeWrapper<T33>::CONSTTYPE& t33 = POCO_TYPEWRAPPER_DEFAULTVALUE(T33)):
1115 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1116 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1117 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1118 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1119 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1120 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1121 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1122 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1123 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1124 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1125 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1126 			(t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1127 			(t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1128 			(t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1129 			(t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1130 			(t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1131 			(t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1132 			(t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1133 			(t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1134 			(t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1135 			(t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1136 			(t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1137 			(t22, typename TypeListType<T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1138 			(t23, typename TypeListType<T24,T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1139 			(t24, typename TypeListType<T25,T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1140 			(t25, typename TypeListType<T26,T27,T28,T29,T30,T31,T32,T33>::HeadType
1141 			(t26, typename TypeListType<T27,T28,T29,T30,T31,T32,T33>::HeadType
1142 			(t27, typename TypeListType<T28,T29,T30,T31,T32,T33>::HeadType
1143 			(t28, typename TypeListType<T29,T30,T31,T32,T33>::HeadType
1144 			(t29, typename TypeListType<T30,T31,T32,T33>::HeadType
1145 			(t30, typename TypeListType<T31,T32,T33>::HeadType
1146 			(t31, typename TypeListType<T32,T33>::HeadType
1147 			(t32, typename TypeListType<T33>::HeadType
1148 			(t33, NullTypeList()))))))))))))))))))))))))))))))))))
1149 	{
1150 	}
1151 
1152 	template <int N>
1153 	typename TypeGetter<N, Type>::ConstHeadType& get() const
1154 	{
1155 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1156 	}
1157 
1158 	template <int N>
1159 	typename TypeGetter<N, Type>::HeadType& get()
1160 	{
1161 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1162 	}
1163 
1164 	template <int N>
1165 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
1166 	{
1167 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
1168 	}
1169 
1170 	bool operator == (const Tuple& other) const
1171 	{
1172 		return _data == other._data;
1173 	}
1174 
1175 	bool operator != (const Tuple& other) const
1176 	{
1177 		return !(_data == other._data);
1178 	}
1179 
1180 	bool operator < (const Tuple& other) const
1181 	{
1182 		return _data < other._data;
1183 	}
1184 
1185 private:
1186 	Type _data;
1187 };
1188 
1189 
1190 template <class T0,
1191 	class T1,
1192 	class T2,
1193 	class T3,
1194 	class T4,
1195 	class T5,
1196 	class T6,
1197 	class T7,
1198 	class T8,
1199 	class T9,
1200 	class T10,
1201 	class T11,
1202 	class T12,
1203 	class T13,
1204 	class T14,
1205 	class T15,
1206 	class T16,
1207 	class T17,
1208 	class T18,
1209 	class T19,
1210 	class T20,
1211 	class T21,
1212 	class T22,
1213 	class T23,
1214 	class T24,
1215 	class T25,
1216 	class T26,
1217 	class T27,
1218 	class T28,
1219 	class T29,
1220 	class T30,
1221 	class T31,
1222 	class T32>
1223 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,NullTypeList>
1224 {
1225 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType Type;
1226 
1227 	enum TupleLengthType
1228 	{
1229 		length = Type::length
1230 	};
1231 
1232 	Tuple():_data()
1233 	{
1234 	}
1235 
1236 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
1237 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
1238 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
1239 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
1240 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
1241 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
1242 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
1243 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
1244 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
1245 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
1246 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
1247 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
1248 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
1249 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
1250 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
1251 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
1252 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
1253 		typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
1254 		typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
1255 		typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
1256 		typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
1257 		typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
1258 		typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
1259 		typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
1260 		typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
1261 		typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
1262 		typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
1263 		typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
1264 		typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28),
1265 		typename TypeWrapper<T29>::CONSTTYPE& t29 = POCO_TYPEWRAPPER_DEFAULTVALUE(T29),
1266 		typename TypeWrapper<T30>::CONSTTYPE& t30 = POCO_TYPEWRAPPER_DEFAULTVALUE(T30),
1267 		typename TypeWrapper<T31>::CONSTTYPE& t31 = POCO_TYPEWRAPPER_DEFAULTVALUE(T31),
1268 		typename TypeWrapper<T32>::CONSTTYPE& t32 = POCO_TYPEWRAPPER_DEFAULTVALUE(T32)):
1269 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1270 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1271 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1272 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1273 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1274 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1275 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1276 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1277 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1278 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1279 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1280 			(t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1281 			(t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1282 			(t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1283 			(t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1284 			(t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1285 			(t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1286 			(t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1287 			(t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1288 			(t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1289 			(t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1290 			(t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1291 			(t22, typename TypeListType<T23,T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1292 			(t23, typename TypeListType<T24,T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1293 			(t24, typename TypeListType<T25,T26,T27,T28,T29,T30,T31,T32>::HeadType
1294 			(t25, typename TypeListType<T26,T27,T28,T29,T30,T31,T32>::HeadType
1295 			(t26, typename TypeListType<T27,T28,T29,T30,T31,T32>::HeadType
1296 			(t27, typename TypeListType<T28,T29,T30,T31,T32>::HeadType
1297 			(t28, typename TypeListType<T29,T30,T31,T32>::HeadType
1298 			(t29, typename TypeListType<T30,T31,T32>::HeadType
1299 			(t30, typename TypeListType<T31,T32>::HeadType
1300 			(t31, typename TypeListType<T32>::HeadType
1301 			(t32, NullTypeList())))))))))))))))))))))))))))))))))
1302 	{
1303 	}
1304 
1305 	template <int N>
1306 	typename TypeGetter<N, Type>::ConstHeadType& get() const
1307 	{
1308 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1309 	}
1310 
1311 	template <int N>
1312 	typename TypeGetter<N, Type>::HeadType& get()
1313 	{
1314 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1315 	}
1316 
1317 	template <int N>
1318 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
1319 	{
1320 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
1321 	}
1322 
1323 	bool operator == (const Tuple& other) const
1324 	{
1325 		return _data == other._data;
1326 	}
1327 
1328 	bool operator != (const Tuple& other) const
1329 	{
1330 		return !(_data == other._data);
1331 	}
1332 
1333 	bool operator < (const Tuple& other) const
1334 	{
1335 		return _data < other._data;
1336 	}
1337 
1338 private:
1339 	Type _data;
1340 };
1341 
1342 
1343 template <class T0,
1344 	class T1,
1345 	class T2,
1346 	class T3,
1347 	class T4,
1348 	class T5,
1349 	class T6,
1350 	class T7,
1351 	class T8,
1352 	class T9,
1353 	class T10,
1354 	class T11,
1355 	class T12,
1356 	class T13,
1357 	class T14,
1358 	class T15,
1359 	class T16,
1360 	class T17,
1361 	class T18,
1362 	class T19,
1363 	class T20,
1364 	class T21,
1365 	class T22,
1366 	class T23,
1367 	class T24,
1368 	class T25,
1369 	class T26,
1370 	class T27,
1371 	class T28,
1372 	class T29,
1373 	class T30,
1374 	class T31>
1375 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,NullTypeList>
1376 {
1377 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType Type;
1378 
1379 	enum TupleLengthType
1380 	{
1381 		length = Type::length
1382 	};
1383 
1384 	Tuple():_data()
1385 	{
1386 	}
1387 
1388 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
1389 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
1390 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
1391 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
1392 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
1393 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
1394 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
1395 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
1396 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
1397 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
1398 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
1399 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
1400 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
1401 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
1402 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
1403 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
1404 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
1405 		typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
1406 		typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
1407 		typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
1408 		typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
1409 		typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
1410 		typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
1411 		typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
1412 		typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
1413 		typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
1414 		typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
1415 		typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
1416 		typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28),
1417 		typename TypeWrapper<T29>::CONSTTYPE& t29 = POCO_TYPEWRAPPER_DEFAULTVALUE(T29),
1418 		typename TypeWrapper<T30>::CONSTTYPE& t30 = POCO_TYPEWRAPPER_DEFAULTVALUE(T30),
1419 		typename TypeWrapper<T31>::CONSTTYPE& t31 = POCO_TYPEWRAPPER_DEFAULTVALUE(T31)):
1420 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1421 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1422 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1423 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1424 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1425 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1426 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1427 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1428 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1429 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1430 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1431 			(t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1432 			(t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1433 			(t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1434 			(t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1435 			(t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1436 			(t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1437 			(t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1438 			(t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1439 			(t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1440 			(t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1441 			(t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1442 			(t22, typename TypeListType<T23,T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1443 			(t23, typename TypeListType<T24,T25,T26,T27,T28,T29,T30,T31>::HeadType
1444 			(t24, typename TypeListType<T25,T26,T27,T28,T29,T30,T31>::HeadType
1445 			(t25, typename TypeListType<T26,T27,T28,T29,T30,T31>::HeadType
1446 			(t26, typename TypeListType<T27,T28,T29,T30,T31>::HeadType
1447 			(t27, typename TypeListType<T28,T29,T30,T31>::HeadType
1448 			(t28, typename TypeListType<T29,T30,T31>::HeadType
1449 			(t29, typename TypeListType<T30,T31>::HeadType
1450 			(t30, typename TypeListType<T31>::HeadType
1451 			(t31, NullTypeList()))))))))))))))))))))))))))))))))
1452 	{
1453 	}
1454 
1455 	template <int N>
1456 	typename TypeGetter<N, Type>::ConstHeadType& get() const
1457 	{
1458 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1459 	}
1460 
1461 	template <int N>
1462 	typename TypeGetter<N, Type>::HeadType& get()
1463 	{
1464 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1465 	}
1466 
1467 	template <int N>
1468 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
1469 	{
1470 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
1471 	}
1472 
1473 	bool operator == (const Tuple& other) const
1474 	{
1475 		return _data == other._data;
1476 	}
1477 
1478 	bool operator != (const Tuple& other) const
1479 	{
1480 		return !(_data == other._data);
1481 	}
1482 
1483 	bool operator < (const Tuple& other) const
1484 	{
1485 		return _data < other._data;
1486 	}
1487 
1488 private:
1489 	Type _data;
1490 };
1491 
1492 
1493 template <class T0,
1494 	class T1,
1495 	class T2,
1496 	class T3,
1497 	class T4,
1498 	class T5,
1499 	class T6,
1500 	class T7,
1501 	class T8,
1502 	class T9,
1503 	class T10,
1504 	class T11,
1505 	class T12,
1506 	class T13,
1507 	class T14,
1508 	class T15,
1509 	class T16,
1510 	class T17,
1511 	class T18,
1512 	class T19,
1513 	class T20,
1514 	class T21,
1515 	class T22,
1516 	class T23,
1517 	class T24,
1518 	class T25,
1519 	class T26,
1520 	class T27,
1521 	class T28,
1522 	class T29,
1523 	class T30>
1524 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,NullTypeList>
1525 {
1526 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType Type;
1527 
1528 	enum TupleLengthType
1529 	{
1530 		length = Type::length
1531 	};
1532 
1533 	Tuple():_data()
1534 	{
1535 	}
1536 
1537 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
1538 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
1539 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
1540 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
1541 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
1542 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
1543 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
1544 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
1545 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
1546 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
1547 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
1548 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
1549 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
1550 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
1551 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
1552 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
1553 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
1554 		typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
1555 		typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
1556 		typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
1557 		typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
1558 		typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
1559 		typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
1560 		typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
1561 		typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
1562 		typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
1563 		typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
1564 		typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
1565 		typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28),
1566 		typename TypeWrapper<T29>::CONSTTYPE& t29 = POCO_TYPEWRAPPER_DEFAULTVALUE(T29),
1567 		typename TypeWrapper<T30>::CONSTTYPE& t30 = POCO_TYPEWRAPPER_DEFAULTVALUE(T30)):
1568 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1569 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1570 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1571 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1572 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1573 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1574 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1575 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1576 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1577 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1578 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1579 			(t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1580 			(t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1581 			(t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1582 			(t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1583 			(t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1584 			(t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1585 			(t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1586 			(t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1587 			(t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1588 			(t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1589 			(t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1590 			(t22, typename TypeListType<T23,T24,T25,T26,T27,T28,T29,T30>::HeadType
1591 			(t23, typename TypeListType<T24,T25,T26,T27,T28,T29,T30>::HeadType
1592 			(t24, typename TypeListType<T25,T26,T27,T28,T29,T30>::HeadType
1593 			(t25, typename TypeListType<T26,T27,T28,T29,T30>::HeadType
1594 			(t26, typename TypeListType<T27,T28,T29,T30>::HeadType
1595 			(t27, typename TypeListType<T28,T29,T30>::HeadType
1596 			(t28, typename TypeListType<T29,T30>::HeadType
1597 			(t29, typename TypeListType<T30>::HeadType
1598 			(t30, NullTypeList())))))))))))))))))))))))))))))))
1599 	{
1600 	}
1601 
1602 	template <int N>
1603 	typename TypeGetter<N, Type>::ConstHeadType& get() const
1604 	{
1605 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1606 	}
1607 
1608 	template <int N>
1609 	typename TypeGetter<N, Type>::HeadType& get()
1610 	{
1611 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1612 	}
1613 
1614 	template <int N>
1615 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
1616 	{
1617 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
1618 	}
1619 
1620 	bool operator == (const Tuple& other) const
1621 	{
1622 		return _data == other._data;
1623 	}
1624 
1625 	bool operator != (const Tuple& other) const
1626 	{
1627 		return !(_data == other._data);
1628 	}
1629 
1630 	bool operator < (const Tuple& other) const
1631 	{
1632 		return _data < other._data;
1633 	}
1634 
1635 private:
1636 	Type _data;
1637 };
1638 
1639 
1640 template <class T0,
1641 	class T1,
1642 	class T2,
1643 	class T3,
1644 	class T4,
1645 	class T5,
1646 	class T6,
1647 	class T7,
1648 	class T8,
1649 	class T9,
1650 	class T10,
1651 	class T11,
1652 	class T12,
1653 	class T13,
1654 	class T14,
1655 	class T15,
1656 	class T16,
1657 	class T17,
1658 	class T18,
1659 	class T19,
1660 	class T20,
1661 	class T21,
1662 	class T22,
1663 	class T23,
1664 	class T24,
1665 	class T25,
1666 	class T26,
1667 	class T27,
1668 	class T28,
1669 	class T29>
1670 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,NullTypeList>
1671 {
1672 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType Type;
1673 
1674 	enum TupleLengthType
1675 	{
1676 		length = Type::length
1677 	};
1678 
1679 	Tuple():_data()
1680 	{
1681 	}
1682 
1683 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
1684 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
1685 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
1686 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
1687 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
1688 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
1689 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
1690 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
1691 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
1692 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
1693 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
1694 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
1695 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
1696 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
1697 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
1698 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
1699 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
1700 		typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
1701 		typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
1702 		typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
1703 		typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
1704 		typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
1705 		typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
1706 		typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
1707 		typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
1708 		typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
1709 		typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
1710 		typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
1711 		typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28),
1712 		typename TypeWrapper<T29>::CONSTTYPE& t29 = POCO_TYPEWRAPPER_DEFAULTVALUE(T29)):
1713 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1714 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1715 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1716 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1717 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1718 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1719 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1720 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1721 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1722 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1723 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1724 			(t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1725 			(t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1726 			(t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1727 			(t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1728 			(t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1729 			(t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1730 			(t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1731 			(t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1732 			(t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1733 			(t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1734 			(t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28,T29>::HeadType
1735 			(t22, typename TypeListType<T23,T24,T25,T26,T27,T28,T29>::HeadType
1736 			(t23, typename TypeListType<T24,T25,T26,T27,T28,T29>::HeadType
1737 			(t24, typename TypeListType<T25,T26,T27,T28,T29>::HeadType
1738 			(t25, typename TypeListType<T26,T27,T28,T29>::HeadType
1739 			(t26, typename TypeListType<T27,T28,T29>::HeadType
1740 			(t27, typename TypeListType<T28,T29>::HeadType
1741 			(t28, typename TypeListType<T29>::HeadType
1742 			(t29, NullTypeList()))))))))))))))))))))))))))))))
1743 	{
1744 	}
1745 
1746 	template <int N>
1747 	typename TypeGetter<N, Type>::ConstHeadType& get() const
1748 	{
1749 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1750 	}
1751 
1752 	template <int N>
1753 	typename TypeGetter<N, Type>::HeadType& get()
1754 	{
1755 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1756 	}
1757 
1758 	template <int N>
1759 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
1760 	{
1761 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
1762 	}
1763 
1764 	bool operator == (const Tuple& other) const
1765 	{
1766 		return _data == other._data;
1767 	}
1768 
1769 	bool operator != (const Tuple& other) const
1770 	{
1771 		return !(_data == other._data);
1772 	}
1773 
1774 	bool operator < (const Tuple& other) const
1775 	{
1776 		return _data < other._data;
1777 	}
1778 
1779 private:
1780 	Type _data;
1781 };
1782 
1783 
1784 template <class T0,
1785 	class T1,
1786 	class T2,
1787 	class T3,
1788 	class T4,
1789 	class T5,
1790 	class T6,
1791 	class T7,
1792 	class T8,
1793 	class T9,
1794 	class T10,
1795 	class T11,
1796 	class T12,
1797 	class T13,
1798 	class T14,
1799 	class T15,
1800 	class T16,
1801 	class T17,
1802 	class T18,
1803 	class T19,
1804 	class T20,
1805 	class T21,
1806 	class T22,
1807 	class T23,
1808 	class T24,
1809 	class T25,
1810 	class T26,
1811 	class T27,
1812 	class T28>
1813 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,NullTypeList>
1814 {
1815 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType Type;
1816 
1817 	enum TupleLengthType
1818 	{
1819 		length = Type::length
1820 	};
1821 
1822 	Tuple():_data()
1823 	{
1824 	}
1825 
1826 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
1827 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
1828 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
1829 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
1830 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
1831 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
1832 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
1833 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
1834 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
1835 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
1836 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
1837 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
1838 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
1839 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
1840 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
1841 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
1842 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
1843 		typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
1844 		typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
1845 		typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
1846 		typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
1847 		typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
1848 		typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
1849 		typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
1850 		typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
1851 		typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
1852 		typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
1853 		typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27),
1854 		typename TypeWrapper<T28>::CONSTTYPE& t28 = POCO_TYPEWRAPPER_DEFAULTVALUE(T28)):
1855 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1856 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1857 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1858 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1859 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1860 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1861 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1862 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1863 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1864 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1865 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1866 			(t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1867 			(t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1868 			(t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1869 			(t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1870 			(t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1871 			(t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1872 			(t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1873 			(t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1874 			(t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1875 			(t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27,T28>::HeadType
1876 			(t21, typename TypeListType<T22,T23,T24,T25,T26,T27,T28>::HeadType
1877 			(t22, typename TypeListType<T23,T24,T25,T26,T27,T28>::HeadType
1878 			(t23, typename TypeListType<T24,T25,T26,T27,T28>::HeadType
1879 			(t24, typename TypeListType<T25,T26,T27,T28>::HeadType
1880 			(t25, typename TypeListType<T26,T27,T28>::HeadType
1881 			(t26, typename TypeListType<T27,T28>::HeadType
1882 			(t27, typename TypeListType<T28>::HeadType
1883 			(t28, NullTypeList())))))))))))))))))))))))))))))
1884 	{
1885 	}
1886 
1887 	template <int N>
1888 	typename TypeGetter<N, Type>::ConstHeadType& get() const
1889 	{
1890 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1891 	}
1892 
1893 	template <int N>
1894 	typename TypeGetter<N, Type>::HeadType& get()
1895 	{
1896 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
1897 	}
1898 
1899 	template <int N>
1900 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
1901 	{
1902 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
1903 	}
1904 
1905 	bool operator == (const Tuple& other) const
1906 	{
1907 		return _data == other._data;
1908 	}
1909 
1910 	bool operator != (const Tuple& other) const
1911 	{
1912 		return !(_data == other._data);
1913 	}
1914 
1915 	bool operator < (const Tuple& other) const
1916 	{
1917 		return _data < other._data;
1918 	}
1919 
1920 private:
1921 	Type _data;
1922 };
1923 
1924 
1925 template <class T0,
1926 	class T1,
1927 	class T2,
1928 	class T3,
1929 	class T4,
1930 	class T5,
1931 	class T6,
1932 	class T7,
1933 	class T8,
1934 	class T9,
1935 	class T10,
1936 	class T11,
1937 	class T12,
1938 	class T13,
1939 	class T14,
1940 	class T15,
1941 	class T16,
1942 	class T17,
1943 	class T18,
1944 	class T19,
1945 	class T20,
1946 	class T21,
1947 	class T22,
1948 	class T23,
1949 	class T24,
1950 	class T25,
1951 	class T26,
1952 	class T27>
1953 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,NullTypeList>
1954 {
1955 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType Type;
1956 
1957 	enum TupleLengthType
1958 	{
1959 		length = Type::length
1960 	};
1961 
1962 	Tuple():_data()
1963 	{
1964 	}
1965 
1966 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
1967 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
1968 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
1969 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
1970 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
1971 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
1972 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
1973 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
1974 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
1975 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
1976 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
1977 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
1978 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
1979 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
1980 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
1981 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
1982 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
1983 		typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
1984 		typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
1985 		typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
1986 		typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
1987 		typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
1988 		typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
1989 		typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
1990 		typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
1991 		typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
1992 		typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26),
1993 		typename TypeWrapper<T27>::CONSTTYPE& t27 = POCO_TYPEWRAPPER_DEFAULTVALUE(T27)):
1994 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
1995 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
1996 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
1997 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
1998 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
1999 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2000 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2001 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2002 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2003 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2004 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2005 			(t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2006 			(t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2007 			(t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2008 			(t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2009 			(t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2010 			(t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2011 			(t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2012 			(t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2013 			(t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26,T27>::HeadType
2014 			(t20, typename TypeListType<T21,T22,T23,T24,T25,T26,T27>::HeadType
2015 			(t21, typename TypeListType<T22,T23,T24,T25,T26,T27>::HeadType
2016 			(t22, typename TypeListType<T23,T24,T25,T26,T27>::HeadType
2017 			(t23, typename TypeListType<T24,T25,T26,T27>::HeadType
2018 			(t24, typename TypeListType<T25,T26,T27>::HeadType
2019 			(t25, typename TypeListType<T26,T27>::HeadType
2020 			(t26, typename TypeListType<T27>::HeadType
2021 			(t27, NullTypeList()))))))))))))))))))))))))))))
2022 	{
2023 	}
2024 
2025 	template <int N>
2026 	typename TypeGetter<N, Type>::ConstHeadType& get() const
2027 	{
2028 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2029 	}
2030 
2031 	template <int N>
2032 	typename TypeGetter<N, Type>::HeadType& get()
2033 	{
2034 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2035 	}
2036 
2037 	template <int N>
2038 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
2039 	{
2040 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
2041 	}
2042 
2043 	bool operator == (const Tuple& other) const
2044 	{
2045 		return _data == other._data;
2046 	}
2047 
2048 	bool operator != (const Tuple& other) const
2049 	{
2050 		return !(_data == other._data);
2051 	}
2052 
2053 	bool operator < (const Tuple& other) const
2054 	{
2055 		return _data < other._data;
2056 	}
2057 
2058 private:
2059 	Type _data;
2060 };
2061 
2062 
2063 template <class T0,
2064 	class T1,
2065 	class T2,
2066 	class T3,
2067 	class T4,
2068 	class T5,
2069 	class T6,
2070 	class T7,
2071 	class T8,
2072 	class T9,
2073 	class T10,
2074 	class T11,
2075 	class T12,
2076 	class T13,
2077 	class T14,
2078 	class T15,
2079 	class T16,
2080 	class T17,
2081 	class T18,
2082 	class T19,
2083 	class T20,
2084 	class T21,
2085 	class T22,
2086 	class T23,
2087 	class T24,
2088 	class T25,
2089 	class T26>
2090 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,NullTypeList>
2091 {
2092 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType Type;
2093 
2094 	enum TupleLengthType
2095 	{
2096 		length = Type::length
2097 	};
2098 
2099 	Tuple():_data()
2100 	{
2101 	}
2102 
2103 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
2104 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
2105 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
2106 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
2107 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
2108 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
2109 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
2110 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
2111 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
2112 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
2113 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
2114 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
2115 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
2116 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
2117 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
2118 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
2119 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
2120 		typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
2121 		typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
2122 		typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
2123 		typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
2124 		typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
2125 		typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
2126 		typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
2127 		typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
2128 		typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25),
2129 		typename TypeWrapper<T26>::CONSTTYPE& t26 = POCO_TYPEWRAPPER_DEFAULTVALUE(T26)):
2130 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2131 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2132 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2133 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2134 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2135 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2136 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2137 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2138 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2139 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2140 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2141 			(t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2142 			(t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2143 			(t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2144 			(t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2145 			(t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2146 			(t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2147 			(t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2148 			(t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25,T26>::HeadType
2149 			(t19, typename TypeListType<T20,T21,T22,T23,T24,T25,T26>::HeadType
2150 			(t20, typename TypeListType<T21,T22,T23,T24,T25,T26>::HeadType
2151 			(t21, typename TypeListType<T22,T23,T24,T25,T26>::HeadType
2152 			(t22, typename TypeListType<T23,T24,T25,T26>::HeadType
2153 			(t23, typename TypeListType<T24,T25,T26>::HeadType
2154 			(t24, typename TypeListType<T25,T26>::HeadType
2155 			(t25, typename TypeListType<T26>::HeadType
2156 			(t26, NullTypeList())))))))))))))))))))))))))))
2157 	{
2158 	}
2159 
2160 	template <int N>
2161 	typename TypeGetter<N, Type>::ConstHeadType& get() const
2162 	{
2163 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2164 	}
2165 
2166 	template <int N>
2167 	typename TypeGetter<N, Type>::HeadType& get()
2168 	{
2169 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2170 	}
2171 
2172 	template <int N>
2173 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
2174 	{
2175 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
2176 	}
2177 
2178 	bool operator == (const Tuple& other) const
2179 	{
2180 		return _data == other._data;
2181 	}
2182 
2183 	bool operator != (const Tuple& other) const
2184 	{
2185 		return !(_data == other._data);
2186 	}
2187 
2188 	bool operator < (const Tuple& other) const
2189 	{
2190 		return _data < other._data;
2191 	}
2192 
2193 private:
2194 	Type _data;
2195 };
2196 
2197 
2198 template <class T0,
2199 	class T1,
2200 	class T2,
2201 	class T3,
2202 	class T4,
2203 	class T5,
2204 	class T6,
2205 	class T7,
2206 	class T8,
2207 	class T9,
2208 	class T10,
2209 	class T11,
2210 	class T12,
2211 	class T13,
2212 	class T14,
2213 	class T15,
2214 	class T16,
2215 	class T17,
2216 	class T18,
2217 	class T19,
2218 	class T20,
2219 	class T21,
2220 	class T22,
2221 	class T23,
2222 	class T24,
2223 	class T25>
2224 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,NullTypeList>
2225 {
2226 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType Type;
2227 
2228 	enum TupleLengthType
2229 	{
2230 		length = Type::length
2231 	};
2232 
2233 	Tuple():_data()
2234 	{
2235 	}
2236 
2237 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
2238 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
2239 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
2240 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
2241 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
2242 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
2243 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
2244 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
2245 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
2246 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
2247 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
2248 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
2249 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
2250 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
2251 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
2252 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
2253 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
2254 		typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
2255 		typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
2256 		typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
2257 		typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
2258 		typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
2259 		typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
2260 		typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
2261 		typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24),
2262 		typename TypeWrapper<T25>::CONSTTYPE& t25 = POCO_TYPEWRAPPER_DEFAULTVALUE(T25)):
2263 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2264 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2265 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2266 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2267 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2268 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2269 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2270 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2271 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2272 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2273 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2274 			(t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2275 			(t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2276 			(t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2277 			(t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2278 			(t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2279 			(t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2280 			(t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24,T25>::HeadType
2281 			(t18, typename TypeListType<T19,T20,T21,T22,T23,T24,T25>::HeadType
2282 			(t19, typename TypeListType<T20,T21,T22,T23,T24,T25>::HeadType
2283 			(t20, typename TypeListType<T21,T22,T23,T24,T25>::HeadType
2284 			(t21, typename TypeListType<T22,T23,T24,T25>::HeadType
2285 			(t22, typename TypeListType<T23,T24,T25>::HeadType
2286 			(t23, typename TypeListType<T24,T25>::HeadType
2287 			(t24, typename TypeListType<T25>::HeadType
2288 			(t25, NullTypeList()))))))))))))))))))))))))))
2289 	{
2290 	}
2291 
2292 	template <int N>
2293 	typename TypeGetter<N, Type>::ConstHeadType& get() const
2294 	{
2295 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2296 	}
2297 
2298 	template <int N>
2299 	typename TypeGetter<N, Type>::HeadType& get()
2300 	{
2301 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2302 	}
2303 
2304 	template <int N>
2305 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
2306 	{
2307 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
2308 	}
2309 
2310 	bool operator == (const Tuple& other) const
2311 	{
2312 		return _data == other._data;
2313 	}
2314 
2315 	bool operator != (const Tuple& other) const
2316 	{
2317 		return !(_data == other._data);
2318 	}
2319 
2320 	bool operator < (const Tuple& other) const
2321 	{
2322 		return _data < other._data;
2323 	}
2324 
2325 private:
2326 	Type _data;
2327 };
2328 
2329 
2330 template <class T0,
2331 	class T1,
2332 	class T2,
2333 	class T3,
2334 	class T4,
2335 	class T5,
2336 	class T6,
2337 	class T7,
2338 	class T8,
2339 	class T9,
2340 	class T10,
2341 	class T11,
2342 	class T12,
2343 	class T13,
2344 	class T14,
2345 	class T15,
2346 	class T16,
2347 	class T17,
2348 	class T18,
2349 	class T19,
2350 	class T20,
2351 	class T21,
2352 	class T22,
2353 	class T23,
2354 	class T24>
2355 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,NullTypeList>
2356 {
2357 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType Type;
2358 
2359 	enum TupleLengthType
2360 	{
2361 		length = Type::length
2362 	};
2363 
2364 	Tuple():_data()
2365 	{
2366 	}
2367 
2368 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
2369 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
2370 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
2371 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
2372 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
2373 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
2374 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
2375 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
2376 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
2377 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
2378 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
2379 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
2380 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
2381 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
2382 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
2383 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
2384 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
2385 		typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
2386 		typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
2387 		typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
2388 		typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
2389 		typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
2390 		typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
2391 		typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23),
2392 		typename TypeWrapper<T24>::CONSTTYPE& t24 = POCO_TYPEWRAPPER_DEFAULTVALUE(T24)):
2393 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2394 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2395 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2396 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2397 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2398 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2399 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2400 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2401 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2402 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2403 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2404 			(t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2405 			(t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2406 			(t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2407 			(t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2408 			(t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2409 			(t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23,T24>::HeadType
2410 			(t17, typename TypeListType<T18,T19,T20,T21,T22,T23,T24>::HeadType
2411 			(t18, typename TypeListType<T19,T20,T21,T22,T23,T24>::HeadType
2412 			(t19, typename TypeListType<T20,T21,T22,T23,T24>::HeadType
2413 			(t20, typename TypeListType<T21,T22,T23,T24>::HeadType
2414 			(t21, typename TypeListType<T22,T23,T24>::HeadType
2415 			(t22, typename TypeListType<T23,T24>::HeadType
2416 			(t23, typename TypeListType<T24>::HeadType
2417 			(t24, NullTypeList())))))))))))))))))))))))))
2418 	{
2419 	}
2420 
2421 	template <int N>
2422 	typename TypeGetter<N, Type>::ConstHeadType& get() const
2423 	{
2424 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2425 	}
2426 
2427 	template <int N>
2428 	typename TypeGetter<N, Type>::HeadType& get()
2429 	{
2430 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2431 	}
2432 
2433 	template <int N>
2434 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
2435 	{
2436 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
2437 	}
2438 
2439 	bool operator == (const Tuple& other) const
2440 	{
2441 		return _data == other._data;
2442 	}
2443 
2444 	bool operator != (const Tuple& other) const
2445 	{
2446 		return !(_data == other._data);
2447 	}
2448 
2449 	bool operator < (const Tuple& other) const
2450 	{
2451 		return _data < other._data;
2452 	}
2453 
2454 private:
2455 	Type _data;
2456 };
2457 
2458 
2459 template <class T0,
2460 	class T1,
2461 	class T2,
2462 	class T3,
2463 	class T4,
2464 	class T5,
2465 	class T6,
2466 	class T7,
2467 	class T8,
2468 	class T9,
2469 	class T10,
2470 	class T11,
2471 	class T12,
2472 	class T13,
2473 	class T14,
2474 	class T15,
2475 	class T16,
2476 	class T17,
2477 	class T18,
2478 	class T19,
2479 	class T20,
2480 	class T21,
2481 	class T22,
2482 	class T23>
2483 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,NullTypeList>
2484 {
2485 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType Type;
2486 
2487 	enum TupleLengthType
2488 	{
2489 		length = Type::length
2490 	};
2491 
2492 	Tuple():_data()
2493 	{
2494 	}
2495 
2496 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
2497 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
2498 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
2499 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
2500 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
2501 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
2502 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
2503 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
2504 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
2505 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
2506 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
2507 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
2508 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
2509 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
2510 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
2511 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
2512 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
2513 		typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
2514 		typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
2515 		typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
2516 		typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
2517 		typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
2518 		typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22),
2519 		typename TypeWrapper<T23>::CONSTTYPE& t23 = POCO_TYPEWRAPPER_DEFAULTVALUE(T23)):
2520 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2521 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2522 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2523 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2524 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2525 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2526 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2527 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2528 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2529 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2530 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2531 			(t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2532 			(t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2533 			(t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2534 			(t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2535 			(t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22,T23>::HeadType
2536 			(t16, typename TypeListType<T17,T18,T19,T20,T21,T22,T23>::HeadType
2537 			(t17, typename TypeListType<T18,T19,T20,T21,T22,T23>::HeadType
2538 			(t18, typename TypeListType<T19,T20,T21,T22,T23>::HeadType
2539 			(t19, typename TypeListType<T20,T21,T22,T23>::HeadType
2540 			(t20, typename TypeListType<T21,T22,T23>::HeadType
2541 			(t21, typename TypeListType<T22,T23>::HeadType
2542 			(t22, typename TypeListType<T23>::HeadType
2543 			(t23, NullTypeList()))))))))))))))))))))))))
2544 	{
2545 	}
2546 
2547 	template <int N>
2548 	typename TypeGetter<N, Type>::ConstHeadType& get() const
2549 	{
2550 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2551 	}
2552 
2553 	template <int N>
2554 	typename TypeGetter<N, Type>::HeadType& get()
2555 	{
2556 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2557 	}
2558 
2559 	template <int N>
2560 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
2561 	{
2562 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
2563 	}
2564 
2565 	bool operator == (const Tuple& other) const
2566 	{
2567 		return _data == other._data;
2568 	}
2569 
2570 	bool operator != (const Tuple& other) const
2571 	{
2572 		return !(_data == other._data);
2573 	}
2574 
2575 	bool operator < (const Tuple& other) const
2576 	{
2577 		return _data < other._data;
2578 	}
2579 
2580 private:
2581 	Type _data;
2582 };
2583 
2584 
2585 template <class T0,
2586 	class T1,
2587 	class T2,
2588 	class T3,
2589 	class T4,
2590 	class T5,
2591 	class T6,
2592 	class T7,
2593 	class T8,
2594 	class T9,
2595 	class T10,
2596 	class T11,
2597 	class T12,
2598 	class T13,
2599 	class T14,
2600 	class T15,
2601 	class T16,
2602 	class T17,
2603 	class T18,
2604 	class T19,
2605 	class T20,
2606 	class T21,
2607 	class T22>
2608 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,NullTypeList>
2609 {
2610 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType Type;
2611 
2612 	enum TupleLengthType
2613 	{
2614 		length = Type::length
2615 	};
2616 
2617 	Tuple():_data()
2618 	{
2619 	}
2620 
2621 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
2622 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
2623 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
2624 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
2625 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
2626 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
2627 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
2628 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
2629 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
2630 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
2631 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
2632 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
2633 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
2634 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
2635 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
2636 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
2637 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
2638 		typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
2639 		typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
2640 		typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
2641 		typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
2642 		typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21),
2643 		typename TypeWrapper<T22>::CONSTTYPE& t22 = POCO_TYPEWRAPPER_DEFAULTVALUE(T22)):
2644 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2645 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2646 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2647 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2648 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2649 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2650 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2651 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2652 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2653 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2654 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2655 			(t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2656 			(t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2657 			(t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2658 			(t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21,T22>::HeadType
2659 			(t15, typename TypeListType<T16,T17,T18,T19,T20,T21,T22>::HeadType
2660 			(t16, typename TypeListType<T17,T18,T19,T20,T21,T22>::HeadType
2661 			(t17, typename TypeListType<T18,T19,T20,T21,T22>::HeadType
2662 			(t18, typename TypeListType<T19,T20,T21,T22>::HeadType
2663 			(t19, typename TypeListType<T20,T21,T22>::HeadType
2664 			(t20, typename TypeListType<T21,T22>::HeadType
2665 			(t21, typename TypeListType<T22>::HeadType
2666 			(t22, NullTypeList())))))))))))))))))))))))
2667 	{
2668 	}
2669 
2670 	template <int N>
2671 	typename TypeGetter<N, Type>::ConstHeadType& get() const
2672 	{
2673 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2674 	}
2675 
2676 	template <int N>
2677 	typename TypeGetter<N, Type>::HeadType& get()
2678 	{
2679 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2680 	}
2681 
2682 	template <int N>
2683 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
2684 	{
2685 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
2686 	}
2687 
2688 	bool operator == (const Tuple& other) const
2689 	{
2690 		return _data == other._data;
2691 	}
2692 
2693 	bool operator != (const Tuple& other) const
2694 	{
2695 		return !(_data == other._data);
2696 	}
2697 
2698 	bool operator < (const Tuple& other) const
2699 	{
2700 		return _data < other._data;
2701 	}
2702 
2703 private:
2704 	Type _data;
2705 };
2706 
2707 
2708 template <class T0,
2709 	class T1,
2710 	class T2,
2711 	class T3,
2712 	class T4,
2713 	class T5,
2714 	class T6,
2715 	class T7,
2716 	class T8,
2717 	class T9,
2718 	class T10,
2719 	class T11,
2720 	class T12,
2721 	class T13,
2722 	class T14,
2723 	class T15,
2724 	class T16,
2725 	class T17,
2726 	class T18,
2727 	class T19,
2728 	class T20,
2729 	class T21>
2730 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,NullTypeList>
2731 {
2732 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType Type;
2733 
2734 	enum TupleLengthType
2735 	{
2736 		length = Type::length
2737 	};
2738 
2739 	Tuple():_data()
2740 	{
2741 	}
2742 
2743 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
2744 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
2745 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
2746 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
2747 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
2748 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
2749 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
2750 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
2751 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
2752 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
2753 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
2754 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
2755 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
2756 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
2757 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
2758 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
2759 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
2760 		typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
2761 		typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
2762 		typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
2763 		typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20),
2764 		typename TypeWrapper<T21>::CONSTTYPE& t21 = POCO_TYPEWRAPPER_DEFAULTVALUE(T21)):
2765 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2766 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2767 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2768 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2769 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2770 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2771 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2772 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2773 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2774 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2775 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2776 			(t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2777 			(t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2778 			(t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20,T21>::HeadType
2779 			(t14, typename TypeListType<T15,T16,T17,T18,T19,T20,T21>::HeadType
2780 			(t15, typename TypeListType<T16,T17,T18,T19,T20,T21>::HeadType
2781 			(t16, typename TypeListType<T17,T18,T19,T20,T21>::HeadType
2782 			(t17, typename TypeListType<T18,T19,T20,T21>::HeadType
2783 			(t18, typename TypeListType<T19,T20,T21>::HeadType
2784 			(t19, typename TypeListType<T20,T21>::HeadType
2785 			(t20, typename TypeListType<T21>::HeadType
2786 			(t21, NullTypeList()))))))))))))))))))))))
2787 	{
2788 	}
2789 
2790 	template <int N>
2791 	typename TypeGetter<N, Type>::ConstHeadType& get() const
2792 	{
2793 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2794 	}
2795 
2796 	template <int N>
2797 	typename TypeGetter<N, Type>::HeadType& get()
2798 	{
2799 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2800 	}
2801 
2802 	template <int N>
2803 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
2804 	{
2805 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
2806 	}
2807 
2808 	bool operator == (const Tuple& other) const
2809 	{
2810 		return _data == other._data;
2811 	}
2812 
2813 	bool operator != (const Tuple& other) const
2814 	{
2815 		return !(_data == other._data);
2816 	}
2817 
2818 	bool operator < (const Tuple& other) const
2819 	{
2820 		return _data < other._data;
2821 	}
2822 
2823 private:
2824 	Type _data;
2825 };
2826 
2827 
2828 template <class T0,
2829 	class T1,
2830 	class T2,
2831 	class T3,
2832 	class T4,
2833 	class T5,
2834 	class T6,
2835 	class T7,
2836 	class T8,
2837 	class T9,
2838 	class T10,
2839 	class T11,
2840 	class T12,
2841 	class T13,
2842 	class T14,
2843 	class T15,
2844 	class T16,
2845 	class T17,
2846 	class T18,
2847 	class T19,
2848 	class T20>
2849 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,NullTypeList>
2850 {
2851 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType Type;
2852 
2853 	enum TupleLengthType
2854 	{
2855 		length = Type::length
2856 	};
2857 
2858 	Tuple():_data()
2859 	{
2860 	}
2861 
2862 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
2863 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
2864 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
2865 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
2866 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
2867 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
2868 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
2869 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
2870 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
2871 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
2872 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
2873 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
2874 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
2875 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
2876 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
2877 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
2878 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
2879 		typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
2880 		typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
2881 		typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19),
2882 		typename TypeWrapper<T20>::CONSTTYPE& t20 = POCO_TYPEWRAPPER_DEFAULTVALUE(T20)):
2883 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2884 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2885 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2886 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2887 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2888 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2889 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2890 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2891 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2892 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2893 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2894 			(t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2895 			(t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19,T20>::HeadType
2896 			(t13, typename TypeListType<T14,T15,T16,T17,T18,T19,T20>::HeadType
2897 			(t14, typename TypeListType<T15,T16,T17,T18,T19,T20>::HeadType
2898 			(t15, typename TypeListType<T16,T17,T18,T19,T20>::HeadType
2899 			(t16, typename TypeListType<T17,T18,T19,T20>::HeadType
2900 			(t17, typename TypeListType<T18,T19,T20>::HeadType
2901 			(t18, typename TypeListType<T19,T20>::HeadType
2902 			(t19, typename TypeListType<T20>::HeadType
2903 			(t20, NullTypeList())))))))))))))))))))))
2904 	{
2905 	}
2906 
2907 	template <int N>
2908 	typename TypeGetter<N, Type>::ConstHeadType& get() const
2909 	{
2910 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2911 	}
2912 
2913 	template <int N>
2914 	typename TypeGetter<N, Type>::HeadType& get()
2915 	{
2916 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
2917 	}
2918 
2919 	template <int N>
2920 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
2921 	{
2922 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
2923 	}
2924 
2925 	bool operator == (const Tuple& other) const
2926 	{
2927 		return _data == other._data;
2928 	}
2929 
2930 	bool operator != (const Tuple& other) const
2931 	{
2932 		return !(_data == other._data);
2933 	}
2934 
2935 	bool operator < (const Tuple& other) const
2936 	{
2937 		return _data < other._data;
2938 	}
2939 
2940 private:
2941 	Type _data;
2942 };
2943 
2944 
2945 template <class T0,
2946 	class T1,
2947 	class T2,
2948 	class T3,
2949 	class T4,
2950 	class T5,
2951 	class T6,
2952 	class T7,
2953 	class T8,
2954 	class T9,
2955 	class T10,
2956 	class T11,
2957 	class T12,
2958 	class T13,
2959 	class T14,
2960 	class T15,
2961 	class T16,
2962 	class T17,
2963 	class T18,
2964 	class T19>
2965 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,NullTypeList>
2966 {
2967 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType Type;
2968 
2969 	enum TupleLengthType
2970 	{
2971 		length = Type::length
2972 	};
2973 
2974 	Tuple():_data()
2975 	{
2976 	}
2977 
2978 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
2979 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
2980 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
2981 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
2982 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
2983 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
2984 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
2985 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
2986 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
2987 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
2988 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
2989 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
2990 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
2991 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
2992 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
2993 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
2994 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
2995 		typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
2996 		typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
2997 		typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19)):
2998 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
2999 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
3000 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
3001 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
3002 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
3003 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
3004 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
3005 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
3006 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
3007 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
3008 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
3009 			(t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18,T19>::HeadType
3010 			(t12, typename TypeListType<T13,T14,T15,T16,T17,T18,T19>::HeadType
3011 			(t13, typename TypeListType<T14,T15,T16,T17,T18,T19>::HeadType
3012 			(t14, typename TypeListType<T15,T16,T17,T18,T19>::HeadType
3013 			(t15, typename TypeListType<T16,T17,T18,T19>::HeadType
3014 			(t16, typename TypeListType<T17,T18,T19>::HeadType
3015 			(t17, typename TypeListType<T18,T19>::HeadType
3016 			(t18, typename TypeListType<T19>::HeadType
3017 			(t19, NullTypeList()))))))))))))))))))))
3018 	{
3019 	}
3020 
3021 	template <int N>
3022 	typename TypeGetter<N, Type>::ConstHeadType& get() const
3023 	{
3024 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3025 	}
3026 
3027 	template <int N>
3028 	typename TypeGetter<N, Type>::HeadType& get()
3029 	{
3030 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3031 	}
3032 
3033 	template <int N>
3034 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
3035 	{
3036 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
3037 	}
3038 
3039 	bool operator == (const Tuple& other) const
3040 	{
3041 		return _data == other._data;
3042 	}
3043 
3044 	bool operator != (const Tuple& other) const
3045 	{
3046 		return !(_data == other._data);
3047 	}
3048 
3049 	bool operator < (const Tuple& other) const
3050 	{
3051 		return _data < other._data;
3052 	}
3053 
3054 private:
3055 	Type _data;
3056 };
3057 
3058 
3059 template <class T0,
3060 	class T1,
3061 	class T2,
3062 	class T3,
3063 	class T4,
3064 	class T5,
3065 	class T6,
3066 	class T7,
3067 	class T8,
3068 	class T9,
3069 	class T10,
3070 	class T11,
3071 	class T12,
3072 	class T13,
3073 	class T14,
3074 	class T15,
3075 	class T16,
3076 	class T17,
3077 	class T18>
3078 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,NullTypeList>
3079 {
3080 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18>::HeadType Type;
3081 
3082 	enum TupleLengthType
3083 	{
3084 		length = Type::length
3085 	};
3086 
3087 	Tuple():_data()
3088 	{
3089 	}
3090 
3091 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
3092 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
3093 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
3094 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
3095 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
3096 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
3097 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
3098 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
3099 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
3100 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
3101 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
3102 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
3103 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
3104 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
3105 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
3106 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
3107 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
3108 		typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
3109 		typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18)):
3110 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18>::HeadType
3111 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18>::HeadType
3112 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18>::HeadType
3113 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18>::HeadType
3114 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18>::HeadType
3115 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18>::HeadType
3116 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18>::HeadType
3117 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18>::HeadType
3118 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17,T18>::HeadType
3119 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17,T18>::HeadType
3120 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17,T18>::HeadType
3121 			(t11, typename TypeListType<T12,T13,T14,T15,T16,T17,T18>::HeadType
3122 			(t12, typename TypeListType<T13,T14,T15,T16,T17,T18>::HeadType
3123 			(t13, typename TypeListType<T14,T15,T16,T17,T18>::HeadType
3124 			(t14, typename TypeListType<T15,T16,T17,T18>::HeadType
3125 			(t15, typename TypeListType<T16,T17,T18>::HeadType
3126 			(t16, typename TypeListType<T17,T18>::HeadType
3127 			(t17, typename TypeListType<T18>::HeadType
3128 			(t18, NullTypeList())))))))))))))))))))
3129 	{
3130 	}
3131 
3132 	template <int N>
3133 	typename TypeGetter<N, Type>::ConstHeadType& get() const
3134 	{
3135 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3136 	}
3137 
3138 	template <int N>
3139 	typename TypeGetter<N, Type>::HeadType& get()
3140 	{
3141 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3142 	}
3143 
3144 	template <int N>
3145 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
3146 	{
3147 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
3148 	}
3149 
3150 	bool operator == (const Tuple& other) const
3151 	{
3152 		return _data == other._data;
3153 	}
3154 
3155 	bool operator != (const Tuple& other) const
3156 	{
3157 		return !(_data == other._data);
3158 	}
3159 
3160 	bool operator < (const Tuple& other) const
3161 	{
3162 		return _data < other._data;
3163 	}
3164 
3165 private:
3166 	Type _data;
3167 };
3168 
3169 
3170 template <class T0,
3171 	class T1,
3172 	class T2,
3173 	class T3,
3174 	class T4,
3175 	class T5,
3176 	class T6,
3177 	class T7,
3178 	class T8,
3179 	class T9,
3180 	class T10,
3181 	class T11,
3182 	class T12,
3183 	class T13,
3184 	class T14,
3185 	class T15,
3186 	class T16,
3187 	class T17>
3188 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,NullTypeList>
3189 {
3190 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17>::HeadType Type;
3191 
3192 	enum TupleLengthType
3193 	{
3194 		length = Type::length
3195 	};
3196 
3197 	Tuple():_data()
3198 	{
3199 	}
3200 
3201 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
3202 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
3203 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
3204 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
3205 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
3206 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
3207 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
3208 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
3209 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
3210 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
3211 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
3212 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
3213 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
3214 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
3215 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
3216 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
3217 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
3218 		typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17)):
3219 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17>::HeadType
3220 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17>::HeadType
3221 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17>::HeadType
3222 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17>::HeadType
3223 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17>::HeadType
3224 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17>::HeadType
3225 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17>::HeadType
3226 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16,T17>::HeadType
3227 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16,T17>::HeadType
3228 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16,T17>::HeadType
3229 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16,T17>::HeadType
3230 			(t11, typename TypeListType<T12,T13,T14,T15,T16,T17>::HeadType
3231 			(t12, typename TypeListType<T13,T14,T15,T16,T17>::HeadType
3232 			(t13, typename TypeListType<T14,T15,T16,T17>::HeadType
3233 			(t14, typename TypeListType<T15,T16,T17>::HeadType
3234 			(t15, typename TypeListType<T16,T17>::HeadType
3235 			(t16, typename TypeListType<T17>::HeadType
3236 			(t17, NullTypeList()))))))))))))))))))
3237 	{
3238 	}
3239 
3240 	template <int N>
3241 	typename TypeGetter<N, Type>::ConstHeadType& get() const
3242 	{
3243 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3244 	}
3245 
3246 	template <int N>
3247 	typename TypeGetter<N, Type>::HeadType& get()
3248 	{
3249 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3250 	}
3251 
3252 	template <int N>
3253 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
3254 	{
3255 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
3256 	}
3257 
3258 	bool operator == (const Tuple& other) const
3259 	{
3260 		return _data == other._data;
3261 	}
3262 
3263 	bool operator != (const Tuple& other) const
3264 	{
3265 		return !(_data == other._data);
3266 	}
3267 
3268 	bool operator < (const Tuple& other) const
3269 	{
3270 		return _data < other._data;
3271 	}
3272 
3273 private:
3274 	Type _data;
3275 };
3276 
3277 
3278 template <class T0,
3279 	class T1,
3280 	class T2,
3281 	class T3,
3282 	class T4,
3283 	class T5,
3284 	class T6,
3285 	class T7,
3286 	class T8,
3287 	class T9,
3288 	class T10,
3289 	class T11,
3290 	class T12,
3291 	class T13,
3292 	class T14,
3293 	class T15,
3294 	class T16>
3295 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,NullTypeList>
3296 {
3297 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16>::HeadType Type;
3298 
3299 	enum TupleLengthType
3300 	{
3301 		length = Type::length
3302 	};
3303 
3304 	Tuple():_data()
3305 	{
3306 	}
3307 
3308 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
3309 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
3310 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
3311 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
3312 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
3313 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
3314 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
3315 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
3316 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
3317 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
3318 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
3319 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
3320 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
3321 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
3322 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
3323 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
3324 		typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16)):
3325 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16>::HeadType
3326 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16>::HeadType
3327 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16>::HeadType
3328 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16>::HeadType
3329 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16>::HeadType
3330 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16>::HeadType
3331 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15,T16>::HeadType
3332 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15,T16>::HeadType
3333 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15,T16>::HeadType
3334 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15,T16>::HeadType
3335 			(t10, typename TypeListType<T11,T12,T13,T14,T15,T16>::HeadType
3336 			(t11, typename TypeListType<T12,T13,T14,T15,T16>::HeadType
3337 			(t12, typename TypeListType<T13,T14,T15,T16>::HeadType
3338 			(t13, typename TypeListType<T14,T15,T16>::HeadType
3339 			(t14, typename TypeListType<T15,T16>::HeadType
3340 			(t15, typename TypeListType<T16>::HeadType
3341 			(t16, NullTypeList())))))))))))))))))
3342 	{
3343 	}
3344 
3345 	template <int N>
3346 	typename TypeGetter<N, Type>::ConstHeadType& get() const
3347 	{
3348 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3349 	}
3350 
3351 	template <int N>
3352 	typename TypeGetter<N, Type>::HeadType& get()
3353 	{
3354 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3355 	}
3356 
3357 	template <int N>
3358 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
3359 	{
3360 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
3361 	}
3362 
3363 	bool operator == (const Tuple& other) const
3364 	{
3365 		return _data == other._data;
3366 	}
3367 
3368 	bool operator != (const Tuple& other) const
3369 	{
3370 		return !(_data == other._data);
3371 	}
3372 
3373 	bool operator < (const Tuple& other) const
3374 	{
3375 		return _data < other._data;
3376 	}
3377 
3378 private:
3379 	Type _data;
3380 };
3381 
3382 
3383 template <class T0,
3384 	class T1,
3385 	class T2,
3386 	class T3,
3387 	class T4,
3388 	class T5,
3389 	class T6,
3390 	class T7,
3391 	class T8,
3392 	class T9,
3393 	class T10,
3394 	class T11,
3395 	class T12,
3396 	class T13,
3397 	class T14,
3398 	class T15>
3399 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,NullTypeList>
3400 {
3401 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15>::HeadType Type;
3402 
3403 	enum TupleLengthType
3404 	{
3405 		length = Type::length
3406 	};
3407 
3408 	Tuple():_data()
3409 	{
3410 	}
3411 
3412 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
3413 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
3414 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
3415 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
3416 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
3417 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
3418 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
3419 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
3420 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
3421 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
3422 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
3423 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
3424 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
3425 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
3426 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
3427 		typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15)):
3428 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15>::HeadType
3429 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15>::HeadType
3430 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15>::HeadType
3431 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15>::HeadType
3432 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15>::HeadType
3433 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14,T15>::HeadType
3434 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14,T15>::HeadType
3435 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14,T15>::HeadType
3436 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14,T15>::HeadType
3437 			(t9, typename TypeListType<T10,T11,T12,T13,T14,T15>::HeadType
3438 			(t10, typename TypeListType<T11,T12,T13,T14,T15>::HeadType
3439 			(t11, typename TypeListType<T12,T13,T14,T15>::HeadType
3440 			(t12, typename TypeListType<T13,T14,T15>::HeadType
3441 			(t13, typename TypeListType<T14,T15>::HeadType
3442 			(t14, typename TypeListType<T15>::HeadType
3443 			(t15, NullTypeList()))))))))))))))))
3444 	{
3445 	}
3446 
3447 	template <int N>
3448 	typename TypeGetter<N, Type>::ConstHeadType& get() const
3449 	{
3450 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3451 	}
3452 
3453 	template <int N>
3454 	typename TypeGetter<N, Type>::HeadType& get()
3455 	{
3456 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3457 	}
3458 
3459 	template <int N>
3460 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
3461 	{
3462 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
3463 	}
3464 
3465 	bool operator == (const Tuple& other) const
3466 	{
3467 		return _data == other._data;
3468 	}
3469 
3470 	bool operator != (const Tuple& other) const
3471 	{
3472 		return !(_data == other._data);
3473 	}
3474 
3475 	bool operator < (const Tuple& other) const
3476 	{
3477 		return _data < other._data;
3478 	}
3479 
3480 private:
3481 	Type _data;
3482 };
3483 
3484 
3485 template <class T0,
3486 	class T1,
3487 	class T2,
3488 	class T3,
3489 	class T4,
3490 	class T5,
3491 	class T6,
3492 	class T7,
3493 	class T8,
3494 	class T9,
3495 	class T10,
3496 	class T11,
3497 	class T12,
3498 	class T13,
3499 	class T14>
3500 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,NullTypeList>
3501 {
3502 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14>::HeadType Type;
3503 
3504 	enum TupleLengthType
3505 	{
3506 		length = Type::length
3507 	};
3508 
3509 	Tuple():_data()
3510 	{
3511 	}
3512 
3513 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
3514 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
3515 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
3516 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
3517 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
3518 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
3519 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
3520 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
3521 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
3522 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
3523 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
3524 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
3525 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
3526 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
3527 		typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14)):
3528 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14>::HeadType
3529 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14>::HeadType
3530 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14>::HeadType
3531 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14>::HeadType
3532 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13,T14>::HeadType
3533 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13,T14>::HeadType
3534 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13,T14>::HeadType
3535 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13,T14>::HeadType
3536 			(t8, typename TypeListType<T9,T10,T11,T12,T13,T14>::HeadType
3537 			(t9, typename TypeListType<T10,T11,T12,T13,T14>::HeadType
3538 			(t10, typename TypeListType<T11,T12,T13,T14>::HeadType
3539 			(t11, typename TypeListType<T12,T13,T14>::HeadType
3540 			(t12, typename TypeListType<T13,T14>::HeadType
3541 			(t13, typename TypeListType<T14>::HeadType
3542 			(t14, NullTypeList())))))))))))))))
3543 	{
3544 	}
3545 
3546 	template <int N>
3547 	typename TypeGetter<N, Type>::ConstHeadType& get() const
3548 	{
3549 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3550 	}
3551 
3552 	template <int N>
3553 	typename TypeGetter<N, Type>::HeadType& get()
3554 	{
3555 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3556 	}
3557 
3558 	template <int N>
3559 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
3560 	{
3561 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
3562 	}
3563 
3564 	bool operator == (const Tuple& other) const
3565 	{
3566 		return _data == other._data;
3567 	}
3568 
3569 	bool operator != (const Tuple& other) const
3570 	{
3571 		return !(_data == other._data);
3572 	}
3573 
3574 	bool operator < (const Tuple& other) const
3575 	{
3576 		return _data < other._data;
3577 	}
3578 
3579 private:
3580 	Type _data;
3581 };
3582 
3583 
3584 template <class T0,
3585 	class T1,
3586 	class T2,
3587 	class T3,
3588 	class T4,
3589 	class T5,
3590 	class T6,
3591 	class T7,
3592 	class T8,
3593 	class T9,
3594 	class T10,
3595 	class T11,
3596 	class T12,
3597 	class T13>
3598 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,NullTypeList>
3599 {
3600 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13>::HeadType Type;
3601 
3602 	enum TupleLengthType
3603 	{
3604 		length = Type::length
3605 	};
3606 
3607 	Tuple():_data()
3608 	{
3609 	}
3610 
3611 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
3612 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
3613 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
3614 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
3615 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
3616 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
3617 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
3618 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
3619 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
3620 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
3621 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
3622 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
3623 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
3624 		typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13)):
3625 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13>::HeadType
3626 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13>::HeadType
3627 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13>::HeadType
3628 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12,T13>::HeadType
3629 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12,T13>::HeadType
3630 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12,T13>::HeadType
3631 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12,T13>::HeadType
3632 			(t7, typename TypeListType<T8,T9,T10,T11,T12,T13>::HeadType
3633 			(t8, typename TypeListType<T9,T10,T11,T12,T13>::HeadType
3634 			(t9, typename TypeListType<T10,T11,T12,T13>::HeadType
3635 			(t10, typename TypeListType<T11,T12,T13>::HeadType
3636 			(t11, typename TypeListType<T12,T13>::HeadType
3637 			(t12, typename TypeListType<T13>::HeadType
3638 			(t13, NullTypeList()))))))))))))))
3639 	{
3640 	}
3641 
3642 	template <int N>
3643 	typename TypeGetter<N, Type>::ConstHeadType& get() const
3644 	{
3645 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3646 	}
3647 
3648 	template <int N>
3649 	typename TypeGetter<N, Type>::HeadType& get()
3650 	{
3651 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3652 	}
3653 
3654 	template <int N>
3655 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
3656 	{
3657 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
3658 	}
3659 
3660 	bool operator == (const Tuple& other) const
3661 	{
3662 		return _data == other._data;
3663 	}
3664 
3665 	bool operator != (const Tuple& other) const
3666 	{
3667 		return !(_data == other._data);
3668 	}
3669 
3670 	bool operator < (const Tuple& other) const
3671 	{
3672 		return _data < other._data;
3673 	}
3674 
3675 private:
3676 	Type _data;
3677 };
3678 
3679 
3680 template <class T0,
3681 	class T1,
3682 	class T2,
3683 	class T3,
3684 	class T4,
3685 	class T5,
3686 	class T6,
3687 	class T7,
3688 	class T8,
3689 	class T9,
3690 	class T10,
3691 	class T11,
3692 	class T12>
3693 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12, NullTypeList>
3694 {
3695 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12>::HeadType Type;
3696 
3697 	enum TupleLengthType
3698 	{
3699 		length = Type::length
3700 	};
3701 
3702 	Tuple():_data()
3703 	{
3704 	}
3705 
3706 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
3707 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
3708 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
3709 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
3710 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
3711 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
3712 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
3713 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
3714 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
3715 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
3716 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
3717 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
3718 		typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12)):
3719 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12>::HeadType
3720 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12>::HeadType
3721 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11,T12>::HeadType
3722 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11,T12>::HeadType
3723 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11,T12>::HeadType
3724 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11,T12>::HeadType
3725 			(t6, typename TypeListType<T7,T8,T9,T10,T11,T12>::HeadType
3726 			(t7, typename TypeListType<T8,T9,T10,T11,T12>::HeadType
3727 			(t8, typename TypeListType<T9,T10,T11,T12>::HeadType
3728 			(t9, typename TypeListType<T10,T11,T12>::HeadType
3729 			(t10, typename TypeListType<T11,T12>::HeadType
3730 			(t11, typename TypeListType<T12>::HeadType
3731 			(t12, NullTypeList())))))))))))))
3732 	{
3733 	}
3734 
3735 	template <int N>
3736 	typename TypeGetter<N, Type>::ConstHeadType& get() const
3737 	{
3738 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3739 	}
3740 
3741 	template <int N>
3742 	typename TypeGetter<N, Type>::HeadType& get()
3743 	{
3744 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3745 	}
3746 
3747 	template <int N>
3748 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
3749 	{
3750 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
3751 	}
3752 
3753 	bool operator == (const Tuple& other) const
3754 	{
3755 		return _data == other._data;
3756 	}
3757 
3758 	bool operator != (const Tuple& other) const
3759 	{
3760 		return !(_data == other._data);
3761 	}
3762 
3763 	bool operator < (const Tuple& other) const
3764 	{
3765 		return _data < other._data;
3766 	}
3767 
3768 private:
3769 	Type _data;
3770 };
3771 
3772 
3773 template <class T0,
3774 	class T1,
3775 	class T2,
3776 	class T3,
3777 	class T4,
3778 	class T5,
3779 	class T6,
3780 	class T7,
3781 	class T8,
3782 	class T9,
3783 	class T10,
3784 	class T11>
3785 struct Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,NullTypeList>
3786 {
3787 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11>::HeadType Type;
3788 
3789 	enum TupleLengthType
3790 	{
3791 		length = Type::length
3792 	};
3793 
3794 	Tuple():_data()
3795 	{
3796 	}
3797 
3798 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
3799 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
3800 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
3801 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
3802 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
3803 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
3804 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
3805 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
3806 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
3807 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
3808 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
3809 		typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11)):
3810 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11>::HeadType
3811 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11>::HeadType
3812 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10,T11>::HeadType
3813 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10,T11>::HeadType
3814 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10,T11>::HeadType
3815 			(t5, typename TypeListType<T6,T7,T8,T9,T10,T11>::HeadType
3816 			(t6, typename TypeListType<T7,T8,T9,T10,T11>::HeadType
3817 			(t7, typename TypeListType<T8,T9,T10,T11>::HeadType
3818 			(t8, typename TypeListType<T9,T10,T11>::HeadType
3819 			(t9, typename TypeListType<T10,T11>::HeadType
3820 			(t10, typename TypeListType<T11>::HeadType
3821 			(t11, NullTypeList()))))))))))))
3822 	{
3823 	}
3824 
3825 	template <int N>
3826 	typename TypeGetter<N, Type>::ConstHeadType& get() const
3827 	{
3828 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3829 	}
3830 
3831 	template <int N>
3832 	typename TypeGetter<N, Type>::HeadType& get()
3833 	{
3834 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3835 	}
3836 
3837 	template <int N>
3838 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
3839 	{
3840 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
3841 	}
3842 
3843 	bool operator == (const Tuple& other) const
3844 	{
3845 		return _data == other._data;
3846 	}
3847 
3848 	bool operator != (const Tuple& other) const
3849 	{
3850 		return !(_data == other._data);
3851 	}
3852 
3853 	bool operator < (const Tuple& other) const
3854 	{
3855 		return _data < other._data;
3856 	}
3857 
3858 private:
3859 	Type _data;
3860 };
3861 
3862 
3863 template <class T0,
3864 	class T1,
3865 	class T2,
3866 	class T3,
3867 	class T4,
3868 	class T5,
3869 	class T6,
3870 	class T7,
3871 	class T8,
3872 	class T9,
3873 	class T10>
3874 struct Tuple<T0, T1,T2,T3,T4,T5,T6,T7,T8,T9,T10, NullTypeList>
3875 {
3876 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10>::HeadType Type;
3877 
3878 	enum TupleLengthType
3879 	{
3880 		length = Type::length
3881 	};
3882 
3883 	Tuple():_data()
3884 	{
3885 	}
3886 
3887 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
3888 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
3889 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
3890 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
3891 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
3892 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
3893 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
3894 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
3895 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
3896 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
3897 		typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10)):
3898 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10>::HeadType
3899 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9,T10>::HeadType
3900 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9,T10>::HeadType
3901 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9,T10>::HeadType
3902 			(t4, typename TypeListType<T5,T6,T7,T8,T9,T10>::HeadType
3903 			(t5, typename TypeListType<T6,T7,T8,T9,T10>::HeadType
3904 			(t6, typename TypeListType<T7,T8,T9,T10>::HeadType
3905 			(t7, typename TypeListType<T8,T9,T10>::HeadType
3906 			(t8, typename TypeListType<T9,T10>::HeadType
3907 			(t9, typename TypeListType<T10>::HeadType
3908 			(t10, NullTypeList())))))))))))
3909 	{
3910 	}
3911 
3912 	template <int N>
3913 	typename TypeGetter<N, Type>::ConstHeadType& get() const
3914 	{
3915 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3916 	}
3917 
3918 	template <int N>
3919 	typename TypeGetter<N, Type>::HeadType& get()
3920 	{
3921 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
3922 	}
3923 
3924 	template <int N>
3925 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
3926 	{
3927 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
3928 	}
3929 
3930 	bool operator == (const Tuple& other) const
3931 	{
3932 		return _data == other._data;
3933 	}
3934 
3935 	bool operator != (const Tuple& other) const
3936 	{
3937 		return !(_data == other._data);
3938 	}
3939 
3940 	bool operator < (const Tuple& other) const
3941 	{
3942 		return _data < other._data;
3943 	}
3944 
3945 private:
3946 	Type _data;
3947 };
3948 
3949 
3950 template <class T0,
3951 	class T1,
3952 	class T2,
3953 	class T3,
3954 	class T4,
3955 	class T5,
3956 	class T6,
3957 	class T7,
3958 	class T8,
3959 	class T9>
3960 struct Tuple<T0, T1,T2,T3,T4,T5,T6,T7,T8,T9, NullTypeList>
3961 {
3962 	typedef typename TypeListType<T0, T1,T2,T3,T4,T5,T6,T7,T8,T9>::HeadType Type;
3963 
3964 	enum TupleLengthType
3965 	{
3966 		length = Type::length
3967 	};
3968 
3969 	Tuple():_data()
3970 	{
3971 	}
3972 
3973 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
3974 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
3975 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
3976 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
3977 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
3978 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
3979 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
3980 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
3981 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
3982 		typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9)):
3983 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8,T9>::HeadType
3984 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8,T9>::HeadType
3985 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8,T9>::HeadType
3986 			(t3, typename TypeListType<T4,T5,T6,T7,T8,T9>::HeadType
3987 			(t4, typename TypeListType<T5,T6,T7,T8,T9>::HeadType
3988 			(t5, typename TypeListType<T6,T7,T8,T9>::HeadType
3989 			(t6, typename TypeListType<T7,T8,T9>::HeadType
3990 			(t7, typename TypeListType<T8,T9>::HeadType
3991 			(t8, typename TypeListType<T9>::HeadType
3992 			(t9, NullTypeList()))))))))))
3993 	{
3994 	}
3995 
3996 	template <int N>
3997 	typename TypeGetter<N, Type>::ConstHeadType& get() const
3998 	{
3999 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4000 	}
4001 
4002 	template <int N>
4003 	typename TypeGetter<N, Type>::HeadType& get()
4004 	{
4005 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4006 	}
4007 
4008 	template <int N>
4009 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
4010 	{
4011 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
4012 	}
4013 
4014 	bool operator == (const Tuple& other) const
4015 	{
4016 		return _data == other._data;
4017 	}
4018 
4019 	bool operator != (const Tuple& other) const
4020 	{
4021 		return !(_data == other._data);
4022 	}
4023 
4024 	bool operator < (const Tuple& other) const
4025 	{
4026 		return _data < other._data;
4027 	}
4028 
4029 private:
4030 	Type _data;
4031 };
4032 
4033 
4034 template <class T0,
4035 	class T1,
4036 	class T2,
4037 	class T3,
4038 	class T4,
4039 	class T5,
4040 	class T6,
4041 	class T7,
4042 	class T8>
4043 struct Tuple<T0, T1,T2,T3,T4,T5,T6,T7,T8, NullTypeList>
4044 {
4045 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7,T8>::HeadType Type;
4046 
4047 	enum TupleLengthType
4048 	{
4049 		length = Type::length
4050 	};
4051 
4052 	Tuple():_data()
4053 	{
4054 	}
4055 
4056 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
4057 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
4058 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
4059 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
4060 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
4061 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
4062 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
4063 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
4064 		typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8)):
4065 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7,T8>::HeadType
4066 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7,T8>::HeadType
4067 			(t2, typename TypeListType<T3,T4,T5,T6,T7,T8>::HeadType
4068 			(t3, typename TypeListType<T4,T5,T6,T7,T8>::HeadType
4069 			(t4, typename TypeListType<T5,T6,T7,T8>::HeadType
4070 			(t5, typename TypeListType<T6,T7,T8>::HeadType
4071 			(t6, typename TypeListType<T7,T8>::HeadType
4072 			(t7, typename TypeListType<T8>::HeadType
4073 			(t8, NullTypeList())))))))))
4074 	{
4075 	}
4076 
4077 	template <int N>
4078 	typename TypeGetter<N, Type>::ConstHeadType& get() const
4079 	{
4080 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4081 	}
4082 
4083 	template <int N>
4084 	typename TypeGetter<N, Type>::HeadType& get()
4085 	{
4086 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4087 	}
4088 
4089 	template <int N>
4090 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
4091 	{
4092 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
4093 	}
4094 
4095 	bool operator == (const Tuple& other) const
4096 	{
4097 		return _data == other._data;
4098 	}
4099 
4100 	bool operator != (const Tuple& other) const
4101 	{
4102 		return !(_data == other._data);
4103 	}
4104 
4105 	bool operator < (const Tuple& other) const
4106 	{
4107 		return _data < other._data;
4108 	}
4109 
4110 private:
4111 	Type _data;
4112 };
4113 
4114 
4115 template <class T0,
4116 	class T1,
4117 	class T2,
4118 	class T3,
4119 	class T4,
4120 	class T5,
4121 	class T6,
4122 	class T7>
4123 struct Tuple<T0, T1,T2,T3,T4,T5,T6,T7, NullTypeList>
4124 {
4125 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6,T7>::HeadType Type;
4126 
4127 	enum TupleLengthType
4128 	{
4129 		length = Type::length
4130 	};
4131 
4132 	Tuple():_data()
4133 	{
4134 	}
4135 
4136 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
4137 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
4138 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
4139 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
4140 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
4141 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
4142 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
4143 		typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7)):
4144 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6,T7>::HeadType
4145 			(t1, typename TypeListType<T2,T3,T4,T5,T6,T7>::HeadType
4146 			(t2, typename TypeListType<T3,T4,T5,T6,T7>::HeadType
4147 			(t3, typename TypeListType<T4,T5,T6,T7>::HeadType
4148 			(t4, typename TypeListType<T5,T6,T7>::HeadType
4149 			(t5, typename TypeListType<T6,T7>::HeadType
4150 			(t6, typename TypeListType<T7>::HeadType
4151 			(t7, NullTypeList()))))))))
4152 	{
4153 	}
4154 
4155 	template <int N>
4156 	typename TypeGetter<N, Type>::ConstHeadType& get() const
4157 	{
4158 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4159 	}
4160 
4161 	template <int N>
4162 	typename TypeGetter<N, Type>::HeadType& get()
4163 	{
4164 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4165 	}
4166 
4167 	template <int N>
4168 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
4169 	{
4170 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
4171 	}
4172 
4173 	bool operator == (const Tuple& other) const
4174 	{
4175 		return _data == other._data;
4176 	}
4177 
4178 	bool operator != (const Tuple& other) const
4179 	{
4180 		return !(_data == other._data);
4181 	}
4182 
4183 	bool operator < (const Tuple& other) const
4184 	{
4185 		return _data < other._data;
4186 	}
4187 
4188 private:
4189 	Type _data;
4190 };
4191 
4192 
4193 template <class T0,
4194 	class T1,
4195 	class T2,
4196 	class T3,
4197 	class T4,
4198 	class T5,
4199 	class T6>
4200 struct Tuple<T0, T1,T2,T3,T4,T5,T6, NullTypeList>
4201 {
4202 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5,T6>::HeadType Type;
4203 
4204 	enum TupleLengthType
4205 	{
4206 		length = Type::length
4207 	};
4208 
4209 	Tuple():_data()
4210 	{
4211 	}
4212 
4213 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
4214 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
4215 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
4216 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
4217 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
4218 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
4219 		typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6)):
4220 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5,T6>::HeadType
4221 			(t1, typename TypeListType<T2,T3,T4,T5,T6>::HeadType
4222 			(t2, typename TypeListType<T3,T4,T5,T6>::HeadType
4223 			(t3, typename TypeListType<T4,T5,T6>::HeadType
4224 			(t4, typename TypeListType<T5,T6>::HeadType
4225 			(t5, typename TypeListType<T6>::HeadType
4226 			(t6, NullTypeList())))))))
4227 	{
4228 	}
4229 
4230 	template <int N>
4231 	typename TypeGetter<N, Type>::ConstHeadType& get() const
4232 	{
4233 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4234 	}
4235 
4236 	template <int N>
4237 	typename TypeGetter<N, Type>::HeadType& get()
4238 	{
4239 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4240 	}
4241 
4242 	template <int N>
4243 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
4244 	{
4245 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
4246 	}
4247 
4248 	bool operator == (const Tuple& other) const
4249 	{
4250 		return _data == other._data;
4251 	}
4252 
4253 	bool operator != (const Tuple& other) const
4254 	{
4255 		return !(_data == other._data);
4256 	}
4257 
4258 	bool operator < (const Tuple& other) const
4259 	{
4260 		return _data < other._data;
4261 	}
4262 
4263 private:
4264 	Type _data;
4265 };
4266 
4267 
4268 template <class T0,
4269 	class T1,
4270 	class T2,
4271 	class T3,
4272 	class T4,
4273 	class T5>
4274 struct Tuple<T0, T1,T2,T3,T4,T5, NullTypeList>
4275 {
4276 	typedef typename TypeListType<T0,T1,T2,T3,T4,T5>::HeadType Type;
4277 
4278 	enum TupleLengthType
4279 	{
4280 		length = Type::length
4281 	};
4282 
4283 	Tuple():_data()
4284 	{
4285 	}
4286 
4287 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
4288 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
4289 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
4290 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
4291 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
4292 		typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5)):
4293 		_data(t0, typename TypeListType<T1,T2,T3,T4,T5>::HeadType
4294 			(t1, typename TypeListType<T2,T3,T4,T5>::HeadType
4295 			(t2, typename TypeListType<T3,T4,T5>::HeadType
4296 			(t3, typename TypeListType<T4,T5>::HeadType
4297 			(t4, typename TypeListType<T5>::HeadType
4298 			(t5, NullTypeList()))))))
4299 	{
4300 	}
4301 
4302 	template <int N>
4303 	typename TypeGetter<N, Type>::ConstHeadType& get() const
4304 	{
4305 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4306 	}
4307 
4308 	template <int N>
4309 	typename TypeGetter<N, Type>::HeadType& get()
4310 	{
4311 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4312 	}
4313 
4314 	template <int N>
4315 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
4316 	{
4317 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
4318 	}
4319 
4320 	bool operator == (const Tuple& other) const
4321 	{
4322 		return _data == other._data;
4323 	}
4324 
4325 	bool operator != (const Tuple& other) const
4326 	{
4327 		return !(_data == other._data);
4328 	}
4329 
4330 	bool operator < (const Tuple& other) const
4331 	{
4332 		return _data < other._data;
4333 	}
4334 
4335 private:
4336 	Type _data;
4337 };
4338 
4339 
4340 template <class T0,
4341 	class T1,
4342 	class T2,
4343 	class T3,
4344 	class T4>
4345 struct Tuple<T0, T1,T2,T3,T4, NullTypeList>
4346 {
4347 	typedef typename TypeListType<T0,T1,T2,T3,T4>::HeadType Type;
4348 
4349 	enum TupleLengthType
4350 	{
4351 		length = Type::length
4352 	};
4353 
4354 	Tuple():_data()
4355 	{
4356 	}
4357 
4358 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
4359 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
4360 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
4361 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
4362 		typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4)):
4363 		_data(t0, typename TypeListType<T1,T2,T3,T4>::HeadType
4364 			(t1, typename TypeListType<T2,T3,T4>::HeadType
4365 			(t2, typename TypeListType<T3,T4>::HeadType
4366 			(t3, typename TypeListType<T4>::HeadType
4367 			(t4, NullTypeList())))))
4368 	{
4369 	}
4370 
4371 	template <int N>
4372 	typename TypeGetter<N, Type>::ConstHeadType& get() const
4373 	{
4374 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4375 	}
4376 
4377 	template <int N>
4378 	typename TypeGetter<N, Type>::HeadType& get()
4379 	{
4380 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4381 	}
4382 
4383 	template <int N>
4384 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
4385 	{
4386 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
4387 	}
4388 
4389 	bool operator == (const Tuple& other) const
4390 	{
4391 		return _data == other._data;
4392 	}
4393 
4394 	bool operator != (const Tuple& other) const
4395 	{
4396 		return !(_data == other._data);
4397 	}
4398 
4399 	bool operator < (const Tuple& other) const
4400 	{
4401 		return _data < other._data;
4402 	}
4403 
4404 private:
4405 	Type _data;
4406 };
4407 
4408 
4409 template <class T0,
4410 	class T1,
4411 	class T2,
4412 	class T3>
4413 struct Tuple<T0, T1,T2,T3, NullTypeList>
4414 {
4415 	typedef typename TypeListType<T0,T1,T2,T3>::HeadType Type;
4416 
4417 	enum TupleLengthType
4418 	{
4419 		length = Type::length
4420 	};
4421 
4422 	Tuple():_data()
4423 	{
4424 	}
4425 
4426 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
4427 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
4428 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
4429 		typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3)):
4430 		_data(t0, typename TypeListType<T1,T2,T3>::HeadType
4431 			(t1, typename TypeListType<T2,T3>::HeadType
4432 			(t2, typename TypeListType<T3>::HeadType
4433 			(t3, NullTypeList()))))
4434 	{
4435 	}
4436 
4437 	template <int N>
4438 	typename TypeGetter<N, Type>::ConstHeadType& get() const
4439 	{
4440 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4441 	}
4442 
4443 	template <int N>
4444 	typename TypeGetter<N, Type>::HeadType& get()
4445 	{
4446 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4447 	}
4448 
4449 	template <int N>
4450 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
4451 	{
4452 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
4453 	}
4454 
4455 	bool operator == (const Tuple& other) const
4456 	{
4457 		return _data == other._data;
4458 	}
4459 
4460 	bool operator != (const Tuple& other) const
4461 	{
4462 		return !(_data == other._data);
4463 	}
4464 
4465 	bool operator < (const Tuple& other) const
4466 	{
4467 		return _data < other._data;
4468 	}
4469 
4470 private:
4471 	Type _data;
4472 };
4473 
4474 
4475 template <class T0,
4476 	class T1,
4477 	class T2>
4478 struct Tuple<T0, T1,T2, NullTypeList>
4479 {
4480 	typedef typename TypeListType<T0,T1,T2>::HeadType Type;
4481 
4482 	enum TupleLengthType
4483 	{
4484 		length = Type::length
4485 	};
4486 
4487 	Tuple():_data()
4488 	{
4489 	}
4490 
4491 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
4492 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
4493 		typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2)):
4494 		_data(t0, typename TypeListType<T1,T2>::HeadType
4495 			(t1, typename TypeListType<T2>::HeadType
4496 			(t2, NullTypeList())))
4497 	{
4498 	}
4499 
4500 	template <int N>
4501 	typename TypeGetter<N, Type>::ConstHeadType& get() const
4502 	{
4503 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4504 	}
4505 
4506 	template <int N>
4507 	typename TypeGetter<N, Type>::HeadType& get()
4508 	{
4509 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4510 	}
4511 
4512 	template <int N>
4513 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
4514 	{
4515 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
4516 	}
4517 
4518 	bool operator == (const Tuple& other) const
4519 	{
4520 		return _data == other._data;
4521 	}
4522 
4523 	bool operator != (const Tuple& other) const
4524 	{
4525 		return !(_data == other._data);
4526 	}
4527 
4528 	bool operator < (const Tuple& other) const
4529 	{
4530 		return _data < other._data;
4531 	}
4532 
4533 private:
4534 	Type _data;
4535 };
4536 
4537 
4538 template <class T0,
4539 	class T1>
4540 struct Tuple<T0, T1, NullTypeList>
4541 {
4542 	typedef typename TypeListType<T0,T1>::HeadType Type;
4543 
4544 	enum TupleLengthType
4545 	{
4546 		length = Type::length
4547 	};
4548 
4549 	Tuple():_data()
4550 	{
4551 	}
4552 
4553 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
4554 		typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1)):
4555 		_data(t0, typename TypeListType<T1>::HeadType(t1, NullTypeList()))
4556 	{
4557 	}
4558 
4559 	template <int N>
4560 	typename TypeGetter<N, Type>::ConstHeadType& get() const
4561 	{
4562 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4563 	}
4564 
4565 	template <int N>
4566 	typename TypeGetter<N, Type>::HeadType& get()
4567 	{
4568 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4569 	}
4570 
4571 	template <int N>
4572 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
4573 	{
4574 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
4575 	}
4576 
4577 	bool operator == (const Tuple& other) const
4578 	{
4579 		return _data == other._data;
4580 	}
4581 
4582 	bool operator != (const Tuple& other) const
4583 	{
4584 		return !(_data == other._data);
4585 	}
4586 
4587 	bool operator < (const Tuple& other) const
4588 	{
4589 		return _data < other._data;
4590 	}
4591 
4592 private:
4593 	Type _data;
4594 };
4595 
4596 
4597 template <class T0>
4598 struct Tuple<T0, NullTypeList>
4599 {
4600 	typedef TypeList<T0, NullTypeList> Type;
4601 
4602 	enum TupleLengthType
4603 	{
4604 		length = Type::length
4605 	};
4606 
4607 	Tuple():_data()
4608 	{
4609 	}
4610 
4611 	Tuple(typename TypeWrapper<T0>::CONSTTYPE& t0):
4612 		_data(t0, NullTypeList())
4613 	{
4614 	}
4615 
4616 	template <int N>
4617 	typename TypeGetter<N, Type>::ConstHeadType& get() const
4618 	{
4619 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4620 	}
4621 
4622 	template <int N>
4623 	typename TypeGetter<N, Type>::HeadType& get()
4624 	{
4625 		return Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data);
4626 	}
4627 
4628 	template <int N>
4629 	void set(typename TypeGetter<N, Type>::ConstHeadType& val)
4630 	{
4631 		Getter<N>::template get<typename TypeGetter<N, Type>::HeadType, typename Type::HeadType, typename Type::TailType>(_data) = val;
4632 	}
4633 
4634 	bool operator == (const Tuple& other) const
4635 	{
4636 		return _data == other._data;
4637 	}
4638 
4639 	bool operator != (const Tuple& other) const
4640 	{
4641 		return !(_data == other._data);
4642 	}
4643 
4644 	bool operator < (const Tuple& other) const
4645 	{
4646 		return _data < other._data;
4647 	}
4648 
4649 private:
4650 	Type _data;
4651 };
4652 
4653 
4654 } // namespace Poco
4655 
4656 
4657 #endif // Foundation_Tuple_INCLUDED
4658