1 
2 //
3 // Vector__create.h: Rcpp R/C++ interface class library -- generated helper code for Vector.h
4 //
5 // Copyright (C) 2010 - 2020  Dirk Eddelbuettel and Romain Francois
6 //
7 // This file is part of Rcpp.
8 //
9 // Rcpp is free software: you can redistribute it and/or modify it
10 // under the terms of the GNU General Public License as published by
11 // the Free Software Foundation, either version 2 of the License, or
12 // (at your option) any later version.
13 //
14 // Rcpp is distributed in the hope that it will be useful, but
15 // WITHOUT ANY WARRANTY; without even the implied warranty of
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 // GNU General Public License for more details.
18 //
19 // You should have received a copy of the GNU General Public License
20 // along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
21 
22 #ifndef Rcpp__generated__Vector_create_h
23 #define Rcpp__generated__Vector_create_h
24 
25 /* <code-bloat>
26 
27 public:
28 
29 	template <TYPENAMES>
30 	static Vector create(ARGUMENTS){
31 		return create__dispatch( typename traits::integral_constant<bool,
32 			__OR__{{  traits::is_named<___T___>::value  }}
33 		>::type(), PARAMETERS ) ;
34 	}
35 
36 private:
37 
38 	template <TYPENAMES>
39 	static Vector create__dispatch( traits::false_type, ARGUMENTS ){
40 		Vector res(___N___) ;
41 		iterator it( res.begin() );
42 
43 		////
44 		__FOR_EACH__{{ *it = converter_type::get(___X___) ; ++it ; }}
45 		////
46 
47 		return res ;
48 	}
49 
50 	template <TYPENAMES>
51 	static Vector create__dispatch( traits::true_type, ARGUMENTS){
52 		Vector res( ___N___ ) ;
53 		Shield<SEXP> names( ::Rf_allocVector( STRSXP, ___N___ ) ) ;
54 		int index = 0 ;
55 		iterator it( res.begin() );
56 
57 		////
58 		__FOR_EACH__{{ replace_element( it, names, index, ___X___ ) ; ++it; ++index ; }}
59 		////
60 
61 		res.attr("names") = names ;
62 
63 		return res ;
64 	}
65 
66 */
67 public:
68 
69 	template <typename T1>
create(const T1 & t1)70 	static Vector create(const T1& t1){
71 		return create__dispatch( typename traits::integral_constant<bool,
72                                  traits::is_named<T1>::value
73 		>::type(), t1 ) ;
74 	}
75 
76 private:
77 
78 	template <typename T1>
create__dispatch(traits::false_type,const T1 & t1)79 	static Vector create__dispatch( traits::false_type, const T1& t1 ){
80 		Vector res(1) ;
81 		iterator it( res.begin() );
82 
83 		////
84         *it = converter_type::get(t1) ; ++it ;
85 		////
86 
87 		return res ;
88 	}
89 
90 	template <typename T1>
create__dispatch(traits::true_type,const T1 & t1)91 	static Vector create__dispatch( traits::true_type, const T1& t1){
92 		Vector res( 1 ) ;
93 		Shield<SEXP> names( ::Rf_allocVector( STRSXP, 1 ) ) ;
94 		int index = 0 ;
95 		iterator it( res.begin() );
96 
97 		////
98         replace_element( it, names, index, t1 ) ; ++it; ++index ;
99 		////
100 
101 		res.attr("names") = names ;
102 
103 		return res ;
104 	}
105 
106 public:
107 
108 	template <typename T1, typename T2>
create(const T1 & t1,const T2 & t2)109 	static Vector create(const T1& t1, const T2& t2){			// #nocov start
110 		return create__dispatch( typename traits::integral_constant<bool,
111                                  traits::is_named<T1>::value  ||
112                                  traits::is_named<T2>::value
113 		>::type(), t1, t2 ) ;									// #nocov end
114 	}
115 
116 private:
117 
118 	template <typename T1, typename T2>
create__dispatch(traits::false_type,const T1 & t1,const T2 & t2)119 	static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2 ){
120 		Vector res(2) ;
121 		iterator it( res.begin() );
122 
123 		////
124         *it = converter_type::get(t1) ; ++it ;
125         *it = converter_type::get(t2) ; ++it ;
126 		////
127 
128 		return res ;
129 	}
130 
131 	template <typename T1, typename T2>							// #nocov start
create__dispatch(traits::true_type,const T1 & t1,const T2 & t2)132 	static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2){
133 		Vector res( 2 ) ;
134 		Shield<SEXP> names( ::Rf_allocVector( STRSXP, 2 ) ) ;
135 		int index = 0 ;
136 		iterator it( res.begin() );
137 
138 		////
139         replace_element( it, names, index, t1 ) ; ++it; ++index ;
140         replace_element( it, names, index, t2 ) ; ++it; ++index ;
141 		////
142 
143 		res.attr("names") = names ;
144 
145 		return res ;											// #nocov end
146 	}
147 
148 public:
149 
150 	template <typename T1, typename T2, typename T3>
create(const T1 & t1,const T2 & t2,const T3 & t3)151 	static Vector create(const T1& t1, const T2& t2, const T3& t3){
152 		return create__dispatch( typename traits::integral_constant<bool,
153                                  traits::is_named<T1>::value  ||
154                                  traits::is_named<T2>::value  ||
155                                  traits::is_named<T3>::value
156 		>::type(), t1, t2, t3 ) ;
157 	}
158 
159 private:
160 
161 	template <typename T1, typename T2, typename T3>
create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3)162 	static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3 ){
163 		Vector res(3) ;
164 		iterator it( res.begin() );
165 
166 		////
167         *it = converter_type::get(t1) ; ++it ;
168         *it = converter_type::get(t2) ; ++it ;
169         *it = converter_type::get(t3) ; ++it ;
170 		////
171 
172 		return res ;
173 	}
174 
175 	template <typename T1, typename T2, typename T3>
create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3)176     static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3){   // #nocov start
177         Vector res( 3 ) ;
178         Shield<SEXP> names( ::Rf_allocVector( STRSXP, 3 ) ) ;
179         int index = 0 ;
180         iterator it( res.begin() );
181 
182         ////
183         replace_element( it, names, index, t1 ) ; ++it; ++index ;
184         replace_element( it, names, index, t2 ) ; ++it; ++index ;
185         replace_element( it, names, index, t3 ) ; ++it; ++index ;
186         ////
187 
188         res.attr("names") = names ;
189 
190         return res ;                                                                                // #nocov end
191 	}
192 
193 public:
194 
195 	template <typename T1, typename T2, typename T3, typename T4>
create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4)196 	static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4){
197 		return create__dispatch( typename traits::integral_constant<bool,
198                                  traits::is_named<T1>::value  ||
199                                  traits::is_named<T2>::value  ||
200                                  traits::is_named<T3>::value  ||
201                                  traits::is_named<T4>::value
202 		>::type(), t1, t2, t3, t4 ) ;
203 	}
204 
205 private:
206 
207 	template <typename T1, typename T2, typename T3, typename T4>
create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4)208 	static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4 ){
209 		Vector res(4) ;
210 		iterator it( res.begin() );
211 
212 		////
213         *it = converter_type::get(t1) ; ++it ;
214         *it = converter_type::get(t2) ; ++it ;
215         *it = converter_type::get(t3) ; ++it ;
216         *it = converter_type::get(t4) ; ++it ;
217 		////
218 
219 		return res ;
220 	}
221 
222 	template <typename T1, typename T2, typename T3, typename T4>
create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4)223 	static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4){
224 		Vector res( 4 ) ;
225 		Shield<SEXP> names( ::Rf_allocVector( STRSXP, 4 ) ) ;
226 		int index = 0 ;
227 		iterator it( res.begin() );
228 
229 		////
230         replace_element( it, names, index, t1 ) ; ++it; ++index ;
231         replace_element( it, names, index, t2 ) ; ++it; ++index ;
232         replace_element( it, names, index, t3 ) ; ++it; ++index ;
233         replace_element( it, names, index, t4 ) ; ++it; ++index ;
234 		////
235 
236 		res.attr("names") = names ;
237 
238 		return res ;
239 	}
240 
241 public:
242 
243 	template <typename T1, typename T2, typename T3, typename T4, typename T5>
create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5)244 	static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5){
245 		return create__dispatch( typename traits::integral_constant<bool,
246                                  traits::is_named<T1>::value  ||  traits::is_named<T2>::value  ||  traits::is_named<T3>::value  ||  traits::is_named<T4>::value  ||  traits::is_named<T5>::value
247 		>::type(), t1, t2, t3, t4, t5 ) ;
248 	}
249 
250 private:
251 
252 	template <typename T1, typename T2, typename T3, typename T4, typename T5>
create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5)253 	static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5 ){
254 		Vector res(5) ;
255 		iterator it( res.begin() );
256 
257 		////
258         *it = converter_type::get(t1) ; ++it ;
259         *it = converter_type::get(t2) ; ++it ;
260         *it = converter_type::get(t3) ; ++it ;
261         *it = converter_type::get(t4) ; ++it ;
262         *it = converter_type::get(t5) ; ++it ;
263 		////
264 
265 		return res ;
266 	}
267 
268 	template <typename T1, typename T2, typename T3, typename T4, typename T5>
create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5)269 	static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5){
270 		Vector res( 5 ) ;
271 		Shield<SEXP> names( ::Rf_allocVector( STRSXP, 5 ) ) ;
272 		int index = 0 ;
273 		iterator it( res.begin() );
274 
275 		////
276         replace_element( it, names, index, t1 ) ; ++it; ++index ;
277         replace_element( it, names, index, t2 ) ; ++it; ++index ;
278         replace_element( it, names, index, t3 ) ; ++it; ++index ;
279         replace_element( it, names, index, t4 ) ; ++it; ++index ;
280         replace_element( it, names, index, t5 ) ; ++it; ++index ;
281 		////
282 
283 		res.attr("names") = names ;
284 
285 		return res ;
286 	}
287 
288 public:
289 
290 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6)291 	static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6){
292 		return create__dispatch( typename traits::integral_constant<bool,
293   traits::is_named<T1>::value  ||  traits::is_named<T2>::value  ||  traits::is_named<T3>::value  ||  traits::is_named<T4>::value  ||  traits::is_named<T5>::value  ||  traits::is_named<T6>::value
294 		>::type(), t1, t2, t3, t4, t5, t6 ) ;
295 	}
296 
297 private:
298 
299 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6)300 	static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6 ){
301 		Vector res(6) ;
302 		iterator it( res.begin() );
303 
304 		////
305         *it = converter_type::get(t1) ; ++it ;
306         *it = converter_type::get(t2) ; ++it ;
307         *it = converter_type::get(t3) ; ++it ;
308         *it = converter_type::get(t4) ; ++it ;
309         *it = converter_type::get(t5) ; ++it ;
310         *it = converter_type::get(t6) ; ++it ;
311 		////
312 
313 		return res ;
314 	}
315 
316 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6)317 	static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6){
318 		Vector res( 6 ) ;
319 		Shield<SEXP> names( ::Rf_allocVector( STRSXP, 6 ) ) ;
320 		int index = 0 ;
321 		iterator it( res.begin() );
322 
323 		////
324         replace_element( it, names, index, t1 ) ; ++it; ++index ;
325         replace_element( it, names, index, t2 ) ; ++it; ++index ;
326         replace_element( it, names, index, t3 ) ; ++it; ++index ;
327         replace_element( it, names, index, t4 ) ; ++it; ++index ;
328         replace_element( it, names, index, t5 ) ; ++it; ++index ;
329         replace_element( it, names, index, t6 ) ; ++it; ++index ;
330 		////
331 
332 		res.attr("names") = names ;
333 
334 		return res ;
335 	}
336 
337 public:
338 
339 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7)340 	static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7){
341 		return create__dispatch( typename traits::integral_constant<bool,
342   traits::is_named<T1>::value  ||  traits::is_named<T2>::value  ||  traits::is_named<T3>::value  ||  traits::is_named<T4>::value  ||  traits::is_named<T5>::value  ||  traits::is_named<T6>::value  ||  traits::is_named<T7>::value
343 		>::type(), t1, t2, t3, t4, t5, t6, t7 ) ;
344 	}
345 
346 private:
347 
348 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7)349 	static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7 ){
350 		Vector res(7) ;
351 		iterator it( res.begin() );
352 
353 		////
354         *it = converter_type::get(t1) ; ++it ;
355         *it = converter_type::get(t2) ; ++it ;
356         *it = converter_type::get(t3) ; ++it ;
357         *it = converter_type::get(t4) ; ++it ;
358         *it = converter_type::get(t5) ; ++it ;
359         *it = converter_type::get(t6) ; ++it ;
360         *it = converter_type::get(t7) ; ++it ;
361 		////
362 
363 		return res ;
364 	}
365 
366 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7)367 	static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7){
368 		Vector res( 7 ) ;
369 		Shield<SEXP> names( ::Rf_allocVector( STRSXP, 7 ) ) ;
370 		int index = 0 ;
371 		iterator it( res.begin() );
372 
373 		////
374         replace_element( it, names, index, t1 ) ; ++it; ++index ;
375         replace_element( it, names, index, t2 ) ; ++it; ++index ;
376         replace_element( it, names, index, t3 ) ; ++it; ++index ;
377         replace_element( it, names, index, t4 ) ; ++it; ++index ;
378         replace_element( it, names, index, t5 ) ; ++it; ++index ;
379         replace_element( it, names, index, t6 ) ; ++it; ++index ;
380         replace_element( it, names, index, t7 ) ; ++it; ++index ;
381 		////
382 
383 		res.attr("names") = names ;
384 
385 		return res ;
386 	}
387 
388 public:
389 
390 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8)391 	static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8){
392 		return create__dispatch( typename traits::integral_constant<bool,
393   traits::is_named<T1>::value  ||  traits::is_named<T2>::value  ||  traits::is_named<T3>::value  ||  traits::is_named<T4>::value  ||  traits::is_named<T5>::value  ||  traits::is_named<T6>::value  ||  traits::is_named<T7>::value  ||  traits::is_named<T8>::value
394 		>::type(), t1, t2, t3, t4, t5, t6, t7, t8 ) ;
395 	}
396 
397 private:
398 
399 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8)400 	static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8 ){
401 		Vector res(8) ;
402 		iterator it( res.begin() );
403 
404 		////
405         *it = converter_type::get(t1) ; ++it ;
406         *it = converter_type::get(t2) ; ++it ;
407         *it = converter_type::get(t3) ; ++it ;
408         *it = converter_type::get(t4) ; ++it ;
409         *it = converter_type::get(t5) ; ++it ;
410         *it = converter_type::get(t6) ; ++it ;
411         *it = converter_type::get(t7) ; ++it ;
412         *it = converter_type::get(t8) ; ++it ;
413 		////
414 
415 		return res ;
416 	}
417 
418 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8)419 	static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8){
420 		Vector res( 8 ) ;
421 		Shield<SEXP> names( ::Rf_allocVector( STRSXP, 8 ) ) ;
422 		int index = 0 ;
423 		iterator it( res.begin() );
424 
425 		////
426         replace_element( it, names, index, t1 ) ; ++it; ++index ;
427         replace_element( it, names, index, t2 ) ; ++it; ++index ;
428         replace_element( it, names, index, t3 ) ; ++it; ++index ;
429         replace_element( it, names, index, t4 ) ; ++it; ++index ;
430         replace_element( it, names, index, t5 ) ; ++it; ++index ;
431         replace_element( it, names, index, t6 ) ; ++it; ++index ;
432         replace_element( it, names, index, t7 ) ; ++it; ++index ;
433         replace_element( it, names, index, t8 ) ; ++it; ++index ;
434 		////
435 
436 		res.attr("names") = names ;
437 
438 		return res ;
439 	}
440 
441 public:
442 
443 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9)444 	static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9){
445 		return create__dispatch( typename traits::integral_constant<bool,
446   traits::is_named<T1>::value  ||  traits::is_named<T2>::value  ||  traits::is_named<T3>::value  ||  traits::is_named<T4>::value  ||  traits::is_named<T5>::value  ||  traits::is_named<T6>::value  ||  traits::is_named<T7>::value  ||  traits::is_named<T8>::value  ||  traits::is_named<T9>::value
447 		>::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9 ) ;
448 	}
449 
450 private:
451 
452 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9)453 	static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9 ){
454 		Vector res(9) ;
455 		iterator it( res.begin() );
456 
457 		////
458         *it = converter_type::get(t1) ; ++it ;
459         *it = converter_type::get(t2) ; ++it ;
460         *it = converter_type::get(t3) ; ++it ;
461         *it = converter_type::get(t4) ; ++it ;
462         *it = converter_type::get(t5) ; ++it ;
463         *it = converter_type::get(t6) ; ++it ;
464         *it = converter_type::get(t7) ; ++it ;
465         *it = converter_type::get(t8) ; ++it ;
466         *it = converter_type::get(t9) ; ++it ;
467 		////
468 
469 		return res ;
470 	}
471 
472 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9)473 	static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9){
474 		Vector res( 9 ) ;
475 		Shield<SEXP> names( ::Rf_allocVector( STRSXP, 9 ) ) ;
476 		int index = 0 ;
477 		iterator it( res.begin() );
478 
479 		////
480         replace_element( it, names, index, t1 ) ; ++it; ++index ;
481         replace_element( it, names, index, t2 ) ; ++it; ++index ;
482         replace_element( it, names, index, t3 ) ; ++it; ++index ;
483         replace_element( it, names, index, t4 ) ; ++it; ++index ;
484         replace_element( it, names, index, t5 ) ; ++it; ++index ;
485         replace_element( it, names, index, t6 ) ; ++it; ++index ;
486         replace_element( it, names, index, t7 ) ; ++it; ++index ;
487         replace_element( it, names, index, t8 ) ; ++it; ++index ;
488         replace_element( it, names, index, t9 ) ; ++it; ++index ;
489 		////
490 
491 		res.attr("names") = names ;
492 
493 		return res ;
494 	}
495 
496 public:
497 
498 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10)499 	static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10){
500 		return create__dispatch( typename traits::integral_constant<bool,
501   traits::is_named<T1>::value  ||  traits::is_named<T2>::value  ||  traits::is_named<T3>::value  ||  traits::is_named<T4>::value  ||  traits::is_named<T5>::value  ||  traits::is_named<T6>::value  ||  traits::is_named<T7>::value  ||  traits::is_named<T8>::value  ||  traits::is_named<T9>::value  ||  traits::is_named<T10>::value
502 		>::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9, t10 ) ;
503 	}
504 
505 private:
506 
507 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10)508 	static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10 ){
509 		Vector res(10) ;
510 		iterator it( res.begin() );
511 
512 		////
513         *it = converter_type::get(t1) ; ++it ;
514         *it = converter_type::get(t2) ; ++it ;
515         *it = converter_type::get(t3) ; ++it ;
516         *it = converter_type::get(t4) ; ++it ;
517         *it = converter_type::get(t5) ; ++it ;
518         *it = converter_type::get(t6) ; ++it ;
519         *it = converter_type::get(t7) ; ++it ;
520         *it = converter_type::get(t8) ; ++it ;
521         *it = converter_type::get(t9) ; ++it ;
522         *it = converter_type::get(t10) ; ++it ;
523 		////
524 
525 		return res ;
526 	}
527 
528 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10)529 	static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10){
530 		Vector res( 10 ) ;
531 		Shield<SEXP> names( ::Rf_allocVector( STRSXP, 10 ) ) ;
532 		int index = 0 ;
533 		iterator it( res.begin() );
534 
535 		////
536         replace_element( it, names, index, t1 ) ; ++it; ++index ;
537         replace_element( it, names, index, t2 ) ; ++it; ++index ;
538         replace_element( it, names, index, t3 ) ; ++it; ++index ;
539         replace_element( it, names, index, t4 ) ; ++it; ++index ;
540         replace_element( it, names, index, t5 ) ; ++it; ++index ;
541         replace_element( it, names, index, t6 ) ; ++it; ++index ;
542         replace_element( it, names, index, t7 ) ; ++it; ++index ;
543         replace_element( it, names, index, t8 ) ; ++it; ++index ;
544         replace_element( it, names, index, t9 ) ; ++it; ++index ;
545         replace_element( it, names, index, t10 ) ; ++it; ++index ;
546 		////
547 
548 		res.attr("names") = names ;
549 
550 		return res ;
551 	}
552 
553 public:
554 
555 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>
create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11)556 	static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11){
557 		return create__dispatch( typename traits::integral_constant<bool,
558   traits::is_named<T1>::value  ||  traits::is_named<T2>::value  ||  traits::is_named<T3>::value  ||  traits::is_named<T4>::value  ||  traits::is_named<T5>::value  ||  traits::is_named<T6>::value  ||  traits::is_named<T7>::value  ||  traits::is_named<T8>::value  ||  traits::is_named<T9>::value  ||  traits::is_named<T10>::value  ||  traits::is_named<T11>::value
559 		>::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11 ) ;
560 	}
561 
562 private:
563 
564 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>
create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11)565 	static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11 ){
566 		Vector res(11) ;
567 		iterator it( res.begin() );
568 
569 		////
570         *it = converter_type::get(t1) ; ++it ;
571         *it = converter_type::get(t2) ; ++it ;
572         *it = converter_type::get(t3) ; ++it ;
573         *it = converter_type::get(t4) ; ++it ;
574         *it = converter_type::get(t5) ; ++it ;
575         *it = converter_type::get(t6) ; ++it ;
576         *it = converter_type::get(t7) ; ++it ;
577         *it = converter_type::get(t8) ; ++it ;
578         *it = converter_type::get(t9) ; ++it ;
579         *it = converter_type::get(t10) ; ++it ;
580         *it = converter_type::get(t11) ; ++it ;
581 		////
582 
583 		return res ;
584 	}
585 
586 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>
create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11)587 	static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11){
588 		Vector res( 11 ) ;
589 		Shield<SEXP> names( ::Rf_allocVector( STRSXP, 11 ) ) ;
590 		int index = 0 ;
591 		iterator it( res.begin() );
592 
593 		////
594         replace_element( it, names, index, t1 ) ; ++it; ++index ;
595         replace_element( it, names, index, t2 ) ; ++it; ++index ;
596         replace_element( it, names, index, t3 ) ; ++it; ++index ;
597         replace_element( it, names, index, t4 ) ; ++it; ++index ;
598         replace_element( it, names, index, t5 ) ; ++it; ++index ;
599         replace_element( it, names, index, t6 ) ; ++it; ++index ;
600         replace_element( it, names, index, t7 ) ; ++it; ++index ;
601         replace_element( it, names, index, t8 ) ; ++it; ++index ;
602         replace_element( it, names, index, t9 ) ; ++it; ++index ;
603         replace_element( it, names, index, t10 ) ; ++it; ++index ;
604         replace_element( it, names, index, t11 ) ; ++it; ++index ;
605 		////
606 
607 		res.attr("names") = names ;
608 
609 		return res ;
610 	}
611 
612 public:
613 
614 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12>
create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12)615 	static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12){
616 		return create__dispatch( typename traits::integral_constant<bool,
617   traits::is_named<T1>::value  ||  traits::is_named<T2>::value  ||  traits::is_named<T3>::value  ||  traits::is_named<T4>::value  ||  traits::is_named<T5>::value  ||  traits::is_named<T6>::value  ||  traits::is_named<T7>::value  ||  traits::is_named<T8>::value  ||  traits::is_named<T9>::value  ||  traits::is_named<T10>::value  ||  traits::is_named<T11>::value  ||  traits::is_named<T12>::value
618 		>::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12 ) ;
619 	}
620 
621 private:
622 
623 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12>
create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12)624 	static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12 ){
625 		Vector res(12) ;
626 		iterator it( res.begin() );
627 
628 		////
629         *it = converter_type::get(t1) ; ++it ;
630         *it = converter_type::get(t2) ; ++it ;
631         *it = converter_type::get(t3) ; ++it ;
632         *it = converter_type::get(t4) ; ++it ;
633         *it = converter_type::get(t5) ; ++it ;
634         *it = converter_type::get(t6) ; ++it ;
635         *it = converter_type::get(t7) ; ++it ;
636         *it = converter_type::get(t8) ; ++it ;
637         *it = converter_type::get(t9) ; ++it ;
638         *it = converter_type::get(t10) ; ++it ;
639         *it = converter_type::get(t11) ; ++it ;
640         *it = converter_type::get(t12) ; ++it ;
641 		////
642 
643 		return res ;
644 	}
645 
646 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12>
create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12)647 	static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12){
648 		Vector res( 12 ) ;
649 		Shield<SEXP> names( ::Rf_allocVector( STRSXP, 12 ) ) ;
650 		int index = 0 ;
651 		iterator it( res.begin() );
652 
653 		////
654         replace_element( it, names, index, t1 ) ; ++it; ++index ;
655         replace_element( it, names, index, t2 ) ; ++it; ++index ;
656         replace_element( it, names, index, t3 ) ; ++it; ++index ;
657         replace_element( it, names, index, t4 ) ; ++it; ++index ;
658         replace_element( it, names, index, t5 ) ; ++it; ++index ;
659         replace_element( it, names, index, t6 ) ; ++it; ++index ;
660         replace_element( it, names, index, t7 ) ; ++it; ++index ;
661         replace_element( it, names, index, t8 ) ; ++it; ++index ;
662         replace_element( it, names, index, t9 ) ; ++it; ++index ;
663         replace_element( it, names, index, t10 ) ; ++it; ++index ;
664         replace_element( it, names, index, t11 ) ; ++it; ++index ;
665         replace_element( it, names, index, t12 ) ; ++it; ++index ;
666 		////
667 
668 		res.attr("names") = names ;
669 
670 		return res ;
671 	}
672 
673 public:
674 
675 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13>
create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13)676 	static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13){
677 		return create__dispatch( typename traits::integral_constant<bool,
678   traits::is_named<T1>::value  ||  traits::is_named<T2>::value  ||  traits::is_named<T3>::value  ||  traits::is_named<T4>::value  ||  traits::is_named<T5>::value  ||  traits::is_named<T6>::value  ||  traits::is_named<T7>::value  ||  traits::is_named<T8>::value  ||  traits::is_named<T9>::value  ||  traits::is_named<T10>::value  ||  traits::is_named<T11>::value  ||  traits::is_named<T12>::value  ||  traits::is_named<T13>::value
679 		>::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13 ) ;
680 	}
681 
682 private:
683 
684 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13>
create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13)685 	static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13 ){
686 		Vector res(13) ;
687 		iterator it( res.begin() );
688 
689 		////
690         *it = converter_type::get(t1) ; ++it ;
691         *it = converter_type::get(t2) ; ++it ;
692         *it = converter_type::get(t3) ; ++it ;
693         *it = converter_type::get(t4) ; ++it ;
694         *it = converter_type::get(t5) ; ++it ;
695         *it = converter_type::get(t6) ; ++it ;
696         *it = converter_type::get(t7) ; ++it ;
697         *it = converter_type::get(t8) ; ++it ;
698         *it = converter_type::get(t9) ; ++it ;
699         *it = converter_type::get(t10) ; ++it ;
700         *it = converter_type::get(t11) ; ++it ;
701         *it = converter_type::get(t12) ; ++it ;
702         *it = converter_type::get(t13) ; ++it ;
703 		////
704 
705 		return res ;
706 	}
707 
708 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13>
create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13)709 	static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13){
710 		Vector res( 13 ) ;
711 		Shield<SEXP> names( ::Rf_allocVector( STRSXP, 13 ) ) ;
712 		int index = 0 ;
713 		iterator it( res.begin() );
714 
715 		////
716         replace_element( it, names, index, t1 ) ; ++it; ++index ;
717         replace_element( it, names, index, t2 ) ; ++it; ++index ;
718         replace_element( it, names, index, t3 ) ; ++it; ++index ;
719         replace_element( it, names, index, t4 ) ; ++it; ++index ;
720         replace_element( it, names, index, t5 ) ; ++it; ++index ;
721         replace_element( it, names, index, t6 ) ; ++it; ++index ;
722         replace_element( it, names, index, t7 ) ; ++it; ++index ;
723         replace_element( it, names, index, t8 ) ; ++it; ++index ;
724         replace_element( it, names, index, t9 ) ; ++it; ++index ;
725         replace_element( it, names, index, t10 ) ; ++it; ++index ;
726         replace_element( it, names, index, t11 ) ; ++it; ++index ;
727         replace_element( it, names, index, t12 ) ; ++it; ++index ;
728         replace_element( it, names, index, t13 ) ; ++it; ++index ;
729 		////
730 
731 		res.attr("names") = names ;
732 
733 		return res ;
734 	}
735 
736 public:
737 
738 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14>
create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14)739 	static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14){
740 		return create__dispatch( typename traits::integral_constant<bool,
741   traits::is_named<T1>::value  ||  traits::is_named<T2>::value  ||  traits::is_named<T3>::value  ||  traits::is_named<T4>::value  ||  traits::is_named<T5>::value  ||  traits::is_named<T6>::value  ||  traits::is_named<T7>::value  ||  traits::is_named<T8>::value  ||  traits::is_named<T9>::value  ||  traits::is_named<T10>::value  ||  traits::is_named<T11>::value  ||  traits::is_named<T12>::value  ||  traits::is_named<T13>::value  ||  traits::is_named<T14>::value
742 		>::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14 ) ;
743 	}
744 
745 private:
746 
747 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14>
create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14)748 	static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14 ){
749 		Vector res(14) ;
750 		iterator it( res.begin() );
751 
752 		////
753         *it = converter_type::get(t1) ; ++it ;
754         *it = converter_type::get(t2) ; ++it ;
755         *it = converter_type::get(t3) ; ++it ;
756         *it = converter_type::get(t4) ; ++it ;
757         *it = converter_type::get(t5) ; ++it ;
758         *it = converter_type::get(t6) ; ++it ;
759         *it = converter_type::get(t7) ; ++it ;
760         *it = converter_type::get(t8) ; ++it ;
761         *it = converter_type::get(t9) ; ++it ;
762         *it = converter_type::get(t10) ; ++it ;
763         *it = converter_type::get(t11) ; ++it ;
764         *it = converter_type::get(t12) ; ++it ;
765         *it = converter_type::get(t13) ; ++it ;
766         *it = converter_type::get(t14) ; ++it ;
767 		////
768 
769 		return res ;
770 	}
771 
772 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14>
create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14)773 	static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14){
774 		Vector res( 14 ) ;
775 		Shield<SEXP> names( ::Rf_allocVector( STRSXP, 14 ) ) ;
776 		int index = 0 ;
777 		iterator it( res.begin() );
778 
779 		////
780         replace_element( it, names, index, t1 ) ; ++it; ++index ;
781         replace_element( it, names, index, t2 ) ; ++it; ++index ;
782         replace_element( it, names, index, t3 ) ; ++it; ++index ;
783         replace_element( it, names, index, t4 ) ; ++it; ++index ;
784         replace_element( it, names, index, t5 ) ; ++it; ++index ;
785         replace_element( it, names, index, t6 ) ; ++it; ++index ;
786         replace_element( it, names, index, t7 ) ; ++it; ++index ;
787         replace_element( it, names, index, t8 ) ; ++it; ++index ;
788         replace_element( it, names, index, t9 ) ; ++it; ++index ;
789         replace_element( it, names, index, t10 ) ; ++it; ++index ;
790         replace_element( it, names, index, t11 ) ; ++it; ++index ;
791         replace_element( it, names, index, t12 ) ; ++it; ++index ;
792         replace_element( it, names, index, t13 ) ; ++it; ++index ;
793         replace_element( it, names, index, t14 ) ; ++it; ++index ;
794 		////
795 
796 		res.attr("names") = names ;
797 
798 		return res ;
799 	}
800 
801 public:
802 
803 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15>
create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15)804 	static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15){
805 		return create__dispatch( typename traits::integral_constant<bool,
806   traits::is_named<T1>::value  ||  traits::is_named<T2>::value  ||  traits::is_named<T3>::value  ||  traits::is_named<T4>::value  ||  traits::is_named<T5>::value  ||  traits::is_named<T6>::value  ||  traits::is_named<T7>::value  ||  traits::is_named<T8>::value  ||  traits::is_named<T9>::value  ||  traits::is_named<T10>::value  ||  traits::is_named<T11>::value  ||  traits::is_named<T12>::value  ||  traits::is_named<T13>::value  ||  traits::is_named<T14>::value  ||  traits::is_named<T15>::value
807 		>::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15 ) ;
808 	}
809 
810 private:
811 
812 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15>
create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15)813 	static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15 ){
814 		Vector res(15) ;
815 		iterator it( res.begin() );
816 
817 		////
818         *it = converter_type::get(t1) ; ++it ;
819         *it = converter_type::get(t2) ; ++it ;
820         *it = converter_type::get(t3) ; ++it ;
821         *it = converter_type::get(t4) ; ++it ;
822         *it = converter_type::get(t5) ; ++it ;
823         *it = converter_type::get(t6) ; ++it ;
824         *it = converter_type::get(t7) ; ++it ;
825         *it = converter_type::get(t8) ; ++it ;
826         *it = converter_type::get(t9) ; ++it ;
827         *it = converter_type::get(t10) ; ++it ;
828         *it = converter_type::get(t11) ; ++it ;
829         *it = converter_type::get(t12) ; ++it ;
830         *it = converter_type::get(t13) ; ++it ;
831         *it = converter_type::get(t14) ; ++it ;
832         *it = converter_type::get(t15) ; ++it ;
833 		////
834 
835 		return res ;
836 	}
837 
838 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15>
create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15)839 	static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15){
840 		Vector res( 15 ) ;
841 		Shield<SEXP> names( ::Rf_allocVector( STRSXP, 15 ) ) ;
842 		int index = 0 ;
843 		iterator it( res.begin() );
844 
845 		////
846         replace_element( it, names, index, t1 ) ; ++it; ++index ;
847         replace_element( it, names, index, t2 ) ; ++it; ++index ;
848         replace_element( it, names, index, t3 ) ; ++it; ++index ;
849         replace_element( it, names, index, t4 ) ; ++it; ++index ;
850         replace_element( it, names, index, t5 ) ; ++it; ++index ;
851         replace_element( it, names, index, t6 ) ; ++it; ++index ;
852         replace_element( it, names, index, t7 ) ; ++it; ++index ;
853         replace_element( it, names, index, t8 ) ; ++it; ++index ;
854         replace_element( it, names, index, t9 ) ; ++it; ++index ;
855         replace_element( it, names, index, t10 ) ; ++it; ++index ;
856         replace_element( it, names, index, t11 ) ; ++it; ++index ;
857         replace_element( it, names, index, t12 ) ; ++it; ++index ;
858         replace_element( it, names, index, t13 ) ; ++it; ++index ;
859         replace_element( it, names, index, t14 ) ; ++it; ++index ;
860         replace_element( it, names, index, t15 ) ; ++it; ++index ;
861 		////
862 
863 		res.attr("names") = names ;
864 
865 		return res ;
866 	}
867 
868 public:
869 
870 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16>
create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16)871 	static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16){
872 		return create__dispatch( typename traits::integral_constant<bool,
873   traits::is_named<T1>::value  ||  traits::is_named<T2>::value  ||  traits::is_named<T3>::value  ||  traits::is_named<T4>::value  ||  traits::is_named<T5>::value  ||  traits::is_named<T6>::value  ||  traits::is_named<T7>::value  ||  traits::is_named<T8>::value  ||  traits::is_named<T9>::value  ||  traits::is_named<T10>::value  ||  traits::is_named<T11>::value  ||  traits::is_named<T12>::value  ||  traits::is_named<T13>::value  ||  traits::is_named<T14>::value  ||  traits::is_named<T15>::value  ||  traits::is_named<T16>::value
874 		>::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16 ) ;
875 	}
876 
877 private:
878 
879 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16>
create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16)880 	static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16 ){
881 		Vector res(16) ;
882 		iterator it( res.begin() );
883 
884 		////
885         *it = converter_type::get(t1) ; ++it ;
886         *it = converter_type::get(t2) ; ++it ;
887         *it = converter_type::get(t3) ; ++it ;
888         *it = converter_type::get(t4) ; ++it ;
889         *it = converter_type::get(t5) ; ++it ;
890         *it = converter_type::get(t6) ; ++it ;
891         *it = converter_type::get(t7) ; ++it ;
892         *it = converter_type::get(t8) ; ++it ;
893         *it = converter_type::get(t9) ; ++it ;
894         *it = converter_type::get(t10) ; ++it ;
895         *it = converter_type::get(t11) ; ++it ;
896         *it = converter_type::get(t12) ; ++it ;
897         *it = converter_type::get(t13) ; ++it ;
898         *it = converter_type::get(t14) ; ++it ;
899         *it = converter_type::get(t15) ; ++it ;
900         *it = converter_type::get(t16) ; ++it ;
901 		////
902 
903 		return res ;
904 	}
905 
906 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16>
create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16)907 	static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16){
908 		Vector res( 16 ) ;
909 		Shield<SEXP> names( ::Rf_allocVector( STRSXP, 16 ) ) ;
910 		int index = 0 ;
911 		iterator it( res.begin() );
912 
913 		////
914         replace_element( it, names, index, t1 ) ; ++it; ++index ;
915         replace_element( it, names, index, t2 ) ; ++it; ++index ;
916         replace_element( it, names, index, t3 ) ; ++it; ++index ;
917         replace_element( it, names, index, t4 ) ; ++it; ++index ;
918         replace_element( it, names, index, t5 ) ; ++it; ++index ;
919         replace_element( it, names, index, t6 ) ; ++it; ++index ;
920         replace_element( it, names, index, t7 ) ; ++it; ++index ;
921         replace_element( it, names, index, t8 ) ; ++it; ++index ;
922         replace_element( it, names, index, t9 ) ; ++it; ++index ;
923         replace_element( it, names, index, t10 ) ; ++it; ++index ;
924         replace_element( it, names, index, t11 ) ; ++it; ++index ;
925         replace_element( it, names, index, t12 ) ; ++it; ++index ;
926         replace_element( it, names, index, t13 ) ; ++it; ++index ;
927         replace_element( it, names, index, t14 ) ; ++it; ++index ;
928         replace_element( it, names, index, t15 ) ; ++it; ++index ;
929         replace_element( it, names, index, t16 ) ; ++it; ++index ;
930 		////
931 
932 		res.attr("names") = names ;
933 
934 		return res ;
935 	}
936 
937 public:
938 
939 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17>
create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17)940 	static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17){
941 		return create__dispatch( typename traits::integral_constant<bool,
942   traits::is_named<T1>::value  ||  traits::is_named<T2>::value  ||  traits::is_named<T3>::value  ||  traits::is_named<T4>::value  ||  traits::is_named<T5>::value  ||  traits::is_named<T6>::value  ||  traits::is_named<T7>::value  ||  traits::is_named<T8>::value  ||  traits::is_named<T9>::value  ||  traits::is_named<T10>::value  ||  traits::is_named<T11>::value  ||  traits::is_named<T12>::value  ||  traits::is_named<T13>::value  ||  traits::is_named<T14>::value  ||  traits::is_named<T15>::value  ||  traits::is_named<T16>::value  ||  traits::is_named<T17>::value
943 		>::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17 ) ;
944 	}
945 
946 private:
947 
948 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17>
create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17)949 	static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17 ){
950 		Vector res(17) ;
951 		iterator it( res.begin() );
952 
953 		////
954         *it = converter_type::get(t1) ; ++it ;
955         *it = converter_type::get(t2) ; ++it ;
956         *it = converter_type::get(t3) ; ++it ;
957         *it = converter_type::get(t4) ; ++it ;
958         *it = converter_type::get(t5) ; ++it ;
959         *it = converter_type::get(t6) ; ++it ;
960         *it = converter_type::get(t7) ; ++it ;
961         *it = converter_type::get(t8) ; ++it ;
962         *it = converter_type::get(t9) ; ++it ;
963         *it = converter_type::get(t10) ; ++it ;
964         *it = converter_type::get(t11) ; ++it ;
965         *it = converter_type::get(t12) ; ++it ;
966         *it = converter_type::get(t13) ; ++it ;
967         *it = converter_type::get(t14) ; ++it ;
968         *it = converter_type::get(t15) ; ++it ;
969         *it = converter_type::get(t16) ; ++it ;
970         *it = converter_type::get(t17) ; ++it ;
971 		////
972 
973 		return res ;
974 	}
975 
976 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17>
create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17)977 	static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17){
978 		Vector res( 17 ) ;
979 		Shield<SEXP> names( ::Rf_allocVector( STRSXP, 17 ) ) ;
980 		int index = 0 ;
981 		iterator it( res.begin() );
982 
983 		////
984         replace_element( it, names, index, t1 ) ; ++it; ++index ;
985         replace_element( it, names, index, t2 ) ; ++it; ++index ;
986         replace_element( it, names, index, t3 ) ; ++it; ++index ;
987         replace_element( it, names, index, t4 ) ; ++it; ++index ;
988         replace_element( it, names, index, t5 ) ; ++it; ++index ;
989         replace_element( it, names, index, t6 ) ; ++it; ++index ;
990         replace_element( it, names, index, t7 ) ; ++it; ++index ;
991         replace_element( it, names, index, t8 ) ; ++it; ++index ;
992         replace_element( it, names, index, t9 ) ; ++it; ++index ;
993         replace_element( it, names, index, t10 ) ; ++it; ++index ;
994         replace_element( it, names, index, t11 ) ; ++it; ++index ;
995         replace_element( it, names, index, t12 ) ; ++it; ++index ;
996         replace_element( it, names, index, t13 ) ; ++it; ++index ;
997         replace_element( it, names, index, t14 ) ; ++it; ++index ;
998         replace_element( it, names, index, t15 ) ; ++it; ++index ;
999         replace_element( it, names, index, t16 ) ; ++it; ++index ;
1000         replace_element( it, names, index, t17 ) ; ++it; ++index ;
1001 		////
1002 
1003 		res.attr("names") = names ;
1004 
1005 		return res ;
1006 	}
1007 
1008 public:
1009 
1010 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18>
create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17,const T18 & t18)1011 	static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17, const T18& t18){
1012 		return create__dispatch( typename traits::integral_constant<bool,
1013   traits::is_named<T1>::value  ||  traits::is_named<T2>::value  ||  traits::is_named<T3>::value  ||  traits::is_named<T4>::value  ||  traits::is_named<T5>::value  ||  traits::is_named<T6>::value  ||  traits::is_named<T7>::value  ||  traits::is_named<T8>::value  ||  traits::is_named<T9>::value  ||  traits::is_named<T10>::value  ||  traits::is_named<T11>::value  ||  traits::is_named<T12>::value  ||  traits::is_named<T13>::value  ||  traits::is_named<T14>::value  ||  traits::is_named<T15>::value  ||  traits::is_named<T16>::value  ||  traits::is_named<T17>::value  ||  traits::is_named<T18>::value
1014 		>::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18 ) ;
1015 	}
1016 
1017 private:
1018 
1019 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18>
create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17,const T18 & t18)1020 	static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17, const T18& t18 ){
1021 		Vector res(18) ;
1022 		iterator it( res.begin() );
1023 
1024 		////
1025         *it = converter_type::get(t1) ; ++it ;
1026         *it = converter_type::get(t2) ; ++it ;
1027         *it = converter_type::get(t3) ; ++it ;
1028         *it = converter_type::get(t4) ; ++it ;
1029         *it = converter_type::get(t5) ; ++it ;
1030         *it = converter_type::get(t6) ; ++it ;
1031         *it = converter_type::get(t7) ; ++it ;
1032         *it = converter_type::get(t8) ; ++it ;
1033         *it = converter_type::get(t9) ; ++it ;
1034         *it = converter_type::get(t10) ; ++it ;
1035         *it = converter_type::get(t11) ; ++it ;
1036         *it = converter_type::get(t12) ; ++it ;
1037         *it = converter_type::get(t13) ; ++it ;
1038         *it = converter_type::get(t14) ; ++it ;
1039         *it = converter_type::get(t15) ; ++it ;
1040         *it = converter_type::get(t16) ; ++it ;
1041         *it = converter_type::get(t17) ; ++it ;
1042         *it = converter_type::get(t18) ; ++it ;
1043 		////
1044 
1045 		return res ;
1046 	}
1047 
1048 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18>
create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17,const T18 & t18)1049 	static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17, const T18& t18){
1050 		Vector res( 18 ) ;
1051 		Shield<SEXP> names( ::Rf_allocVector( STRSXP, 18 ) ) ;
1052 		int index = 0 ;
1053 		iterator it( res.begin() );
1054 
1055 		////
1056         replace_element( it, names, index, t1 ) ; ++it; ++index ;
1057         replace_element( it, names, index, t2 ) ; ++it; ++index ;
1058         replace_element( it, names, index, t3 ) ; ++it; ++index ;
1059         replace_element( it, names, index, t4 ) ; ++it; ++index ;
1060         replace_element( it, names, index, t5 ) ; ++it; ++index ;
1061         replace_element( it, names, index, t6 ) ; ++it; ++index ;
1062         replace_element( it, names, index, t7 ) ; ++it; ++index ;
1063         replace_element( it, names, index, t8 ) ; ++it; ++index ;
1064         replace_element( it, names, index, t9 ) ; ++it; ++index ;
1065         replace_element( it, names, index, t10 ) ; ++it; ++index ;
1066         replace_element( it, names, index, t11 ) ; ++it; ++index ;
1067         replace_element( it, names, index, t12 ) ; ++it; ++index ;
1068         replace_element( it, names, index, t13 ) ; ++it; ++index ;
1069         replace_element( it, names, index, t14 ) ; ++it; ++index ;
1070         replace_element( it, names, index, t15 ) ; ++it; ++index ;
1071         replace_element( it, names, index, t16 ) ; ++it; ++index ;
1072         replace_element( it, names, index, t17 ) ; ++it; ++index ;
1073         replace_element( it, names, index, t18 ) ; ++it; ++index ;
1074 		////
1075 
1076 		res.attr("names") = names ;
1077 
1078 		return res ;
1079 	}
1080 
1081 public:
1082 
1083 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19>
create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17,const T18 & t18,const T19 & t19)1084 	static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17, const T18& t18, const T19& t19){
1085 		return create__dispatch( typename traits::integral_constant<bool,
1086   traits::is_named<T1>::value  ||  traits::is_named<T2>::value  ||  traits::is_named<T3>::value  ||  traits::is_named<T4>::value  ||  traits::is_named<T5>::value  ||  traits::is_named<T6>::value  ||  traits::is_named<T7>::value  ||  traits::is_named<T8>::value  ||  traits::is_named<T9>::value  ||  traits::is_named<T10>::value  ||  traits::is_named<T11>::value  ||  traits::is_named<T12>::value  ||  traits::is_named<T13>::value  ||  traits::is_named<T14>::value  ||  traits::is_named<T15>::value  ||  traits::is_named<T16>::value  ||  traits::is_named<T17>::value  ||  traits::is_named<T18>::value  ||  traits::is_named<T19>::value
1087 		>::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19 ) ;
1088 	}
1089 
1090 private:
1091 
1092 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19>
create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17,const T18 & t18,const T19 & t19)1093 	static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17, const T18& t18, const T19& t19 ){
1094 		Vector res(19) ;
1095 		iterator it( res.begin() );
1096 
1097 		////
1098         *it = converter_type::get(t1) ; ++it ;
1099         *it = converter_type::get(t2) ; ++it ;
1100         *it = converter_type::get(t3) ; ++it ;
1101         *it = converter_type::get(t4) ; ++it ;
1102         *it = converter_type::get(t5) ; ++it ;
1103         *it = converter_type::get(t6) ; ++it ;
1104         *it = converter_type::get(t7) ; ++it ;
1105         *it = converter_type::get(t8) ; ++it ;
1106         *it = converter_type::get(t9) ; ++it ;
1107         *it = converter_type::get(t10) ; ++it ;
1108         *it = converter_type::get(t11) ; ++it ;
1109         *it = converter_type::get(t12) ; ++it ;
1110         *it = converter_type::get(t13) ; ++it ;
1111         *it = converter_type::get(t14) ; ++it ;
1112         *it = converter_type::get(t15) ; ++it ;
1113         *it = converter_type::get(t16) ; ++it ;
1114         *it = converter_type::get(t17) ; ++it ;
1115         *it = converter_type::get(t18) ; ++it ;
1116         *it = converter_type::get(t19) ; ++it ;
1117 		////
1118 
1119 		return res ;
1120 	}
1121 
1122 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19>
create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17,const T18 & t18,const T19 & t19)1123 	static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17, const T18& t18, const T19& t19){
1124 		Vector res( 19 ) ;
1125 		Shield<SEXP> names( ::Rf_allocVector( STRSXP, 19 ) ) ;
1126 		int index = 0 ;
1127 		iterator it( res.begin() );
1128 
1129 		////
1130         replace_element( it, names, index, t1 ) ; ++it; ++index ;
1131         replace_element( it, names, index, t2 ) ; ++it; ++index ;
1132         replace_element( it, names, index, t3 ) ; ++it; ++index ;
1133         replace_element( it, names, index, t4 ) ; ++it; ++index ;
1134         replace_element( it, names, index, t5 ) ; ++it; ++index ;
1135         replace_element( it, names, index, t6 ) ; ++it; ++index ;
1136         replace_element( it, names, index, t7 ) ; ++it; ++index ;
1137         replace_element( it, names, index, t8 ) ; ++it; ++index ;
1138         replace_element( it, names, index, t9 ) ; ++it; ++index ;
1139         replace_element( it, names, index, t10 ) ; ++it; ++index ;
1140         replace_element( it, names, index, t11 ) ; ++it; ++index ;
1141         replace_element( it, names, index, t12 ) ; ++it; ++index ;
1142         replace_element( it, names, index, t13 ) ; ++it; ++index ;
1143         replace_element( it, names, index, t14 ) ; ++it; ++index ;
1144         replace_element( it, names, index, t15 ) ; ++it; ++index ;
1145         replace_element( it, names, index, t16 ) ; ++it; ++index ;
1146         replace_element( it, names, index, t17 ) ; ++it; ++index ;
1147         replace_element( it, names, index, t18 ) ; ++it; ++index ;
1148         replace_element( it, names, index, t19 ) ; ++it; ++index ;
1149 		////
1150 
1151 		res.attr("names") = names ;
1152 
1153 		return res ;
1154 	}
1155 
1156 public:
1157 
1158 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20>
create(const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17,const T18 & t18,const T19 & t19,const T20 & t20)1159 	static Vector create(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17, const T18& t18, const T19& t19, const T20& t20){
1160 		return create__dispatch( typename traits::integral_constant<bool,
1161   traits::is_named<T1>::value  ||  traits::is_named<T2>::value  ||  traits::is_named<T3>::value  ||  traits::is_named<T4>::value  ||  traits::is_named<T5>::value  ||  traits::is_named<T6>::value  ||  traits::is_named<T7>::value  ||  traits::is_named<T8>::value  ||  traits::is_named<T9>::value  ||  traits::is_named<T10>::value  ||  traits::is_named<T11>::value  ||  traits::is_named<T12>::value  ||  traits::is_named<T13>::value  ||  traits::is_named<T14>::value  ||  traits::is_named<T15>::value  ||  traits::is_named<T16>::value  ||  traits::is_named<T17>::value  ||  traits::is_named<T18>::value  ||  traits::is_named<T19>::value  ||  traits::is_named<T20>::value
1162 		>::type(), t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20 ) ;
1163 	}
1164 
1165 private:
1166 
1167 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20>
create__dispatch(traits::false_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17,const T18 & t18,const T19 & t19,const T20 & t20)1168 	static Vector create__dispatch( traits::false_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17, const T18& t18, const T19& t19, const T20& t20 ){
1169 		Vector res(20) ;
1170 		iterator it( res.begin() );
1171 
1172 		////
1173         *it = converter_type::get(t1) ; ++it ;
1174         *it = converter_type::get(t2) ; ++it ;
1175         *it = converter_type::get(t3) ; ++it ;
1176         *it = converter_type::get(t4) ; ++it ;
1177         *it = converter_type::get(t5) ; ++it ;
1178         *it = converter_type::get(t6) ; ++it ;
1179         *it = converter_type::get(t7) ; ++it ;
1180         *it = converter_type::get(t8) ; ++it ;
1181         *it = converter_type::get(t9) ; ++it ;
1182         *it = converter_type::get(t10) ; ++it ;
1183         *it = converter_type::get(t11) ; ++it ;
1184         *it = converter_type::get(t12) ; ++it ;
1185         *it = converter_type::get(t13) ; ++it ;
1186         *it = converter_type::get(t14) ; ++it ;
1187         *it = converter_type::get(t15) ; ++it ;
1188         *it = converter_type::get(t16) ; ++it ;
1189         *it = converter_type::get(t17) ; ++it ;
1190         *it = converter_type::get(t18) ; ++it ;
1191         *it = converter_type::get(t19) ; ++it ;
1192         *it = converter_type::get(t20) ; ++it ;
1193 		////
1194 
1195 		return res ;
1196 	}
1197 
1198 	template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20>
create__dispatch(traits::true_type,const T1 & t1,const T2 & t2,const T3 & t3,const T4 & t4,const T5 & t5,const T6 & t6,const T7 & t7,const T8 & t8,const T9 & t9,const T10 & t10,const T11 & t11,const T12 & t12,const T13 & t13,const T14 & t14,const T15 & t15,const T16 & t16,const T17 & t17,const T18 & t18,const T19 & t19,const T20 & t20)1199 	static Vector create__dispatch( traits::true_type, const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17, const T18& t18, const T19& t19, const T20& t20){
1200 		Vector res( 20 ) ;
1201 		Shield<SEXP> names( ::Rf_allocVector( STRSXP, 20 ) ) ;
1202 		int index = 0 ;
1203 		iterator it( res.begin() );
1204 
1205 		////
1206         replace_element( it, names, index, t1 ) ; ++it; ++index ;
1207         replace_element( it, names, index, t2 ) ; ++it; ++index ;
1208         replace_element( it, names, index, t3 ) ; ++it; ++index ;
1209         replace_element( it, names, index, t4 ) ; ++it; ++index ;
1210         replace_element( it, names, index, t5 ) ; ++it; ++index ;
1211         replace_element( it, names, index, t6 ) ; ++it; ++index ;
1212         replace_element( it, names, index, t7 ) ; ++it; ++index ;
1213         replace_element( it, names, index, t8 ) ; ++it; ++index ;
1214         replace_element( it, names, index, t9 ) ; ++it; ++index ;
1215         replace_element( it, names, index, t10 ) ; ++it; ++index ;
1216         replace_element( it, names, index, t11 ) ; ++it; ++index ;
1217         replace_element( it, names, index, t12 ) ; ++it; ++index ;
1218         replace_element( it, names, index, t13 ) ; ++it; ++index ;
1219         replace_element( it, names, index, t14 ) ; ++it; ++index ;
1220         replace_element( it, names, index, t15 ) ; ++it; ++index ;
1221         replace_element( it, names, index, t16 ) ; ++it; ++index ;
1222         replace_element( it, names, index, t17 ) ; ++it; ++index ;
1223         replace_element( it, names, index, t18 ) ; ++it; ++index ;
1224         replace_element( it, names, index, t19 ) ; ++it; ++index ;
1225         replace_element( it, names, index, t20 ) ; ++it; ++index ;
1226 		////
1227 
1228 		res.attr("names") = names ;
1229 
1230 		return res ;
1231 	}
1232 
1233 /* </code-bloat> */
1234 
1235 #endif
1236