76
// GetTypeName<T>() returns a human-readable name of type T.
77
// NB: This function is also used in Google Mock, so don't move it inside of
78
// the typed-test-only section below.
80
std::string GetTypeName() {
83
const char* const name = typeid(T).name();
84
# if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC)
74
// GetTypeName(const std::type_info&) returns a human-readable name of type T.
75
inline std::string GetTypeName(const std::type_info& type) {
76
const char* const name = type.name();
77
#if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC)
86
79
// gcc's implementation of typeid(T).name() mangles the type name,
87
80
// so we have to demangle it.
88
# if GTEST_HAS_CXXABI_H_
81
#if GTEST_HAS_CXXABI_H_
89
82
using abi::__cxa_demangle;
90
# endif // GTEST_HAS_CXXABI_H_
83
#endif // GTEST_HAS_CXXABI_H_
91
84
char* const readable_name = __cxa_demangle(name, nullptr, nullptr, &status);
92
85
const std::string name_str(status == 0 ? readable_name : name);
93
86
free(readable_name);
94
87
return CanonicalizeForStdLibVersioning(name_str);
97
# endif // GTEST_HAS_CXXABI_H_ || __HP_aCC
90
#endif // GTEST_HAS_CXXABI_H_ || __HP_aCC
92
#endif // GTEST_HAS_RTTI
94
// GetTypeName<T>() returns a human-readable name of type T if and only if
95
// RTTI is enabled, otherwise it returns a dummy type name.
96
// NB: This function is also used in Google Mock, so don't move it inside of
97
// the typed-test-only section below.
99
std::string GetTypeName() {
101
return GetTypeName(typeid(T));
103
# endif // GTEST_HAS_RTTI
104
#endif // GTEST_HAS_RTTI
106
#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
108
// A unique type used as the default value for the arguments of class
109
// template Types. This allows us to simulate variadic templates
110
// (e.g. Types<int>, Type<int, double>, and etc), which C++ doesn't
107
// A unique type indicating an empty node
114
// The following family of struct and struct templates are used to
115
// represent type lists. In particular, TypesN<T1, T2, ..., TN>
116
// represents a type list with N types (T1, T2, ..., and TN) in it.
117
// Except for Types0, every struct in the family has two member types:
118
// Head for the first type in the list, and Tail for the rest of the
121
// The empty type list.
124
// Type lists of length 1, 2, 3, and so on.
126
template <typename T1>
131
template <typename T1, typename T2>
134
typedef Types1<T2> Tail;
137
template <typename T1, typename T2, typename T3>
140
typedef Types2<T2, T3> Tail;
143
template <typename T1, typename T2, typename T3, typename T4>
146
typedef Types3<T2, T3, T4> Tail;
149
template <typename T1, typename T2, typename T3, typename T4, typename T5>
152
typedef Types4<T2, T3, T4, T5> Tail;
155
template <typename T1, typename T2, typename T3, typename T4, typename T5,
159
typedef Types5<T2, T3, T4, T5, T6> Tail;
162
template <typename T1, typename T2, typename T3, typename T4, typename T5,
163
typename T6, typename T7>
166
typedef Types6<T2, T3, T4, T5, T6, T7> Tail;
169
template <typename T1, typename T2, typename T3, typename T4, typename T5,
170
typename T6, typename T7, typename T8>
173
typedef Types7<T2, T3, T4, T5, T6, T7, T8> Tail;
176
template <typename T1, typename T2, typename T3, typename T4, typename T5,
177
typename T6, typename T7, typename T8, typename T9>
180
typedef Types8<T2, T3, T4, T5, T6, T7, T8, T9> Tail;
183
template <typename T1, typename T2, typename T3, typename T4, typename T5,
184
typename T6, typename T7, typename T8, typename T9, typename T10>
187
typedef Types9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail;
190
template <typename T1, typename T2, typename T3, typename T4, typename T5,
191
typename T6, typename T7, typename T8, typename T9, typename T10,
195
typedef Types10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail;
198
template <typename T1, typename T2, typename T3, typename T4, typename T5,
199
typename T6, typename T7, typename T8, typename T9, typename T10,
200
typename T11, typename T12>
203
typedef Types11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail;
206
template <typename T1, typename T2, typename T3, typename T4, typename T5,
207
typename T6, typename T7, typename T8, typename T9, typename T10,
208
typename T11, typename T12, typename T13>
211
typedef Types12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail;
214
template <typename T1, typename T2, typename T3, typename T4, typename T5,
215
typename T6, typename T7, typename T8, typename T9, typename T10,
216
typename T11, typename T12, typename T13, typename T14>
219
typedef Types13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Tail;
222
template <typename T1, typename T2, typename T3, typename T4, typename T5,
223
typename T6, typename T7, typename T8, typename T9, typename T10,
224
typename T11, typename T12, typename T13, typename T14, typename T15>
227
typedef Types14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
231
template <typename T1, typename T2, typename T3, typename T4, typename T5,
232
typename T6, typename T7, typename T8, typename T9, typename T10,
233
typename T11, typename T12, typename T13, typename T14, typename T15,
237
typedef Types15<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
241
template <typename T1, typename T2, typename T3, typename T4, typename T5,
242
typename T6, typename T7, typename T8, typename T9, typename T10,
243
typename T11, typename T12, typename T13, typename T14, typename T15,
244
typename T16, typename T17>
247
typedef Types16<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
251
template <typename T1, typename T2, typename T3, typename T4, typename T5,
252
typename T6, typename T7, typename T8, typename T9, typename T10,
253
typename T11, typename T12, typename T13, typename T14, typename T15,
254
typename T16, typename T17, typename T18>
257
typedef Types17<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
261
template <typename T1, typename T2, typename T3, typename T4, typename T5,
262
typename T6, typename T7, typename T8, typename T9, typename T10,
263
typename T11, typename T12, typename T13, typename T14, typename T15,
264
typename T16, typename T17, typename T18, typename T19>
267
typedef Types18<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
268
T16, T17, T18, T19> Tail;
271
template <typename T1, typename T2, typename T3, typename T4, typename T5,
272
typename T6, typename T7, typename T8, typename T9, typename T10,
273
typename T11, typename T12, typename T13, typename T14, typename T15,
274
typename T16, typename T17, typename T18, typename T19, typename T20>
277
typedef Types19<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
278
T16, T17, T18, T19, T20> Tail;
281
template <typename T1, typename T2, typename T3, typename T4, typename T5,
282
typename T6, typename T7, typename T8, typename T9, typename T10,
283
typename T11, typename T12, typename T13, typename T14, typename T15,
284
typename T16, typename T17, typename T18, typename T19, typename T20,
288
typedef Types20<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
289
T16, T17, T18, T19, T20, T21> Tail;
292
template <typename T1, typename T2, typename T3, typename T4, typename T5,
293
typename T6, typename T7, typename T8, typename T9, typename T10,
294
typename T11, typename T12, typename T13, typename T14, typename T15,
295
typename T16, typename T17, typename T18, typename T19, typename T20,
296
typename T21, typename T22>
299
typedef Types21<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
300
T16, T17, T18, T19, T20, T21, T22> Tail;
303
template <typename T1, typename T2, typename T3, typename T4, typename T5,
304
typename T6, typename T7, typename T8, typename T9, typename T10,
305
typename T11, typename T12, typename T13, typename T14, typename T15,
306
typename T16, typename T17, typename T18, typename T19, typename T20,
307
typename T21, typename T22, typename T23>
310
typedef Types22<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
311
T16, T17, T18, T19, T20, T21, T22, T23> Tail;
314
template <typename T1, typename T2, typename T3, typename T4, typename T5,
315
typename T6, typename T7, typename T8, typename T9, typename T10,
316
typename T11, typename T12, typename T13, typename T14, typename T15,
317
typename T16, typename T17, typename T18, typename T19, typename T20,
318
typename T21, typename T22, typename T23, typename T24>
321
typedef Types23<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
322
T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail;
325
template <typename T1, typename T2, typename T3, typename T4, typename T5,
326
typename T6, typename T7, typename T8, typename T9, typename T10,
327
typename T11, typename T12, typename T13, typename T14, typename T15,
328
typename T16, typename T17, typename T18, typename T19, typename T20,
329
typename T21, typename T22, typename T23, typename T24, typename T25>
332
typedef Types24<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
333
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail;
336
template <typename T1, typename T2, typename T3, typename T4, typename T5,
337
typename T6, typename T7, typename T8, typename T9, typename T10,
338
typename T11, typename T12, typename T13, typename T14, typename T15,
339
typename T16, typename T17, typename T18, typename T19, typename T20,
340
typename T21, typename T22, typename T23, typename T24, typename T25,
344
typedef Types25<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
345
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail;
348
template <typename T1, typename T2, typename T3, typename T4, typename T5,
349
typename T6, typename T7, typename T8, typename T9, typename T10,
350
typename T11, typename T12, typename T13, typename T14, typename T15,
351
typename T16, typename T17, typename T18, typename T19, typename T20,
352
typename T21, typename T22, typename T23, typename T24, typename T25,
353
typename T26, typename T27>
356
typedef Types26<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
357
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail;
360
template <typename T1, typename T2, typename T3, typename T4, typename T5,
361
typename T6, typename T7, typename T8, typename T9, typename T10,
362
typename T11, typename T12, typename T13, typename T14, typename T15,
363
typename T16, typename T17, typename T18, typename T19, typename T20,
364
typename T21, typename T22, typename T23, typename T24, typename T25,
365
typename T26, typename T27, typename T28>
368
typedef Types27<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
369
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28> Tail;
372
template <typename T1, typename T2, typename T3, typename T4, typename T5,
373
typename T6, typename T7, typename T8, typename T9, typename T10,
374
typename T11, typename T12, typename T13, typename T14, typename T15,
375
typename T16, typename T17, typename T18, typename T19, typename T20,
376
typename T21, typename T22, typename T23, typename T24, typename T25,
377
typename T26, typename T27, typename T28, typename T29>
380
typedef Types28<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
381
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
385
template <typename T1, typename T2, typename T3, typename T4, typename T5,
386
typename T6, typename T7, typename T8, typename T9, typename T10,
387
typename T11, typename T12, typename T13, typename T14, typename T15,
388
typename T16, typename T17, typename T18, typename T19, typename T20,
389
typename T21, typename T22, typename T23, typename T24, typename T25,
390
typename T26, typename T27, typename T28, typename T29, typename T30>
393
typedef Types29<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
394
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
398
template <typename T1, typename T2, typename T3, typename T4, typename T5,
399
typename T6, typename T7, typename T8, typename T9, typename T10,
400
typename T11, typename T12, typename T13, typename T14, typename T15,
401
typename T16, typename T17, typename T18, typename T19, typename T20,
402
typename T21, typename T22, typename T23, typename T24, typename T25,
403
typename T26, typename T27, typename T28, typename T29, typename T30,
407
typedef Types30<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
408
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
412
template <typename T1, typename T2, typename T3, typename T4, typename T5,
413
typename T6, typename T7, typename T8, typename T9, typename T10,
414
typename T11, typename T12, typename T13, typename T14, typename T15,
415
typename T16, typename T17, typename T18, typename T19, typename T20,
416
typename T21, typename T22, typename T23, typename T24, typename T25,
417
typename T26, typename T27, typename T28, typename T29, typename T30,
418
typename T31, typename T32>
421
typedef Types31<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
422
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
426
template <typename T1, typename T2, typename T3, typename T4, typename T5,
427
typename T6, typename T7, typename T8, typename T9, typename T10,
428
typename T11, typename T12, typename T13, typename T14, typename T15,
429
typename T16, typename T17, typename T18, typename T19, typename T20,
430
typename T21, typename T22, typename T23, typename T24, typename T25,
431
typename T26, typename T27, typename T28, typename T29, typename T30,
432
typename T31, typename T32, typename T33>
435
typedef Types32<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
436
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
437
T30, T31, T32, T33> Tail;
440
template <typename T1, typename T2, typename T3, typename T4, typename T5,
441
typename T6, typename T7, typename T8, typename T9, typename T10,
442
typename T11, typename T12, typename T13, typename T14, typename T15,
443
typename T16, typename T17, typename T18, typename T19, typename T20,
444
typename T21, typename T22, typename T23, typename T24, typename T25,
445
typename T26, typename T27, typename T28, typename T29, typename T30,
446
typename T31, typename T32, typename T33, typename T34>
449
typedef Types33<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
450
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
451
T30, T31, T32, T33, T34> Tail;
454
template <typename T1, typename T2, typename T3, typename T4, typename T5,
455
typename T6, typename T7, typename T8, typename T9, typename T10,
456
typename T11, typename T12, typename T13, typename T14, typename T15,
457
typename T16, typename T17, typename T18, typename T19, typename T20,
458
typename T21, typename T22, typename T23, typename T24, typename T25,
459
typename T26, typename T27, typename T28, typename T29, typename T30,
460
typename T31, typename T32, typename T33, typename T34, typename T35>
463
typedef Types34<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
464
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
465
T30, T31, T32, T33, T34, T35> Tail;
468
template <typename T1, typename T2, typename T3, typename T4, typename T5,
469
typename T6, typename T7, typename T8, typename T9, typename T10,
470
typename T11, typename T12, typename T13, typename T14, typename T15,
471
typename T16, typename T17, typename T18, typename T19, typename T20,
472
typename T21, typename T22, typename T23, typename T24, typename T25,
473
typename T26, typename T27, typename T28, typename T29, typename T30,
474
typename T31, typename T32, typename T33, typename T34, typename T35,
478
typedef Types35<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
479
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
480
T30, T31, T32, T33, T34, T35, T36> Tail;
483
template <typename T1, typename T2, typename T3, typename T4, typename T5,
484
typename T6, typename T7, typename T8, typename T9, typename T10,
485
typename T11, typename T12, typename T13, typename T14, typename T15,
486
typename T16, typename T17, typename T18, typename T19, typename T20,
487
typename T21, typename T22, typename T23, typename T24, typename T25,
488
typename T26, typename T27, typename T28, typename T29, typename T30,
489
typename T31, typename T32, typename T33, typename T34, typename T35,
490
typename T36, typename T37>
493
typedef Types36<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
494
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
495
T30, T31, T32, T33, T34, T35, T36, T37> Tail;
498
template <typename T1, typename T2, typename T3, typename T4, typename T5,
499
typename T6, typename T7, typename T8, typename T9, typename T10,
500
typename T11, typename T12, typename T13, typename T14, typename T15,
501
typename T16, typename T17, typename T18, typename T19, typename T20,
502
typename T21, typename T22, typename T23, typename T24, typename T25,
503
typename T26, typename T27, typename T28, typename T29, typename T30,
504
typename T31, typename T32, typename T33, typename T34, typename T35,
505
typename T36, typename T37, typename T38>
508
typedef Types37<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
509
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
510
T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail;
513
template <typename T1, typename T2, typename T3, typename T4, typename T5,
514
typename T6, typename T7, typename T8, typename T9, typename T10,
515
typename T11, typename T12, typename T13, typename T14, typename T15,
516
typename T16, typename T17, typename T18, typename T19, typename T20,
517
typename T21, typename T22, typename T23, typename T24, typename T25,
518
typename T26, typename T27, typename T28, typename T29, typename T30,
519
typename T31, typename T32, typename T33, typename T34, typename T35,
520
typename T36, typename T37, typename T38, typename T39>
523
typedef Types38<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
524
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
525
T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail;
528
template <typename T1, typename T2, typename T3, typename T4, typename T5,
529
typename T6, typename T7, typename T8, typename T9, typename T10,
530
typename T11, typename T12, typename T13, typename T14, typename T15,
531
typename T16, typename T17, typename T18, typename T19, typename T20,
532
typename T21, typename T22, typename T23, typename T24, typename T25,
533
typename T26, typename T27, typename T28, typename T29, typename T30,
534
typename T31, typename T32, typename T33, typename T34, typename T35,
535
typename T36, typename T37, typename T38, typename T39, typename T40>
538
typedef Types39<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
539
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
540
T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail;
543
template <typename T1, typename T2, typename T3, typename T4, typename T5,
544
typename T6, typename T7, typename T8, typename T9, typename T10,
545
typename T11, typename T12, typename T13, typename T14, typename T15,
546
typename T16, typename T17, typename T18, typename T19, typename T20,
547
typename T21, typename T22, typename T23, typename T24, typename T25,
548
typename T26, typename T27, typename T28, typename T29, typename T30,
549
typename T31, typename T32, typename T33, typename T34, typename T35,
550
typename T36, typename T37, typename T38, typename T39, typename T40,
554
typedef Types40<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
555
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
556
T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail;
559
template <typename T1, typename T2, typename T3, typename T4, typename T5,
560
typename T6, typename T7, typename T8, typename T9, typename T10,
561
typename T11, typename T12, typename T13, typename T14, typename T15,
562
typename T16, typename T17, typename T18, typename T19, typename T20,
563
typename T21, typename T22, typename T23, typename T24, typename T25,
564
typename T26, typename T27, typename T28, typename T29, typename T30,
565
typename T31, typename T32, typename T33, typename T34, typename T35,
566
typename T36, typename T37, typename T38, typename T39, typename T40,
567
typename T41, typename T42>
570
typedef Types41<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
571
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
572
T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42> Tail;
575
template <typename T1, typename T2, typename T3, typename T4, typename T5,
576
typename T6, typename T7, typename T8, typename T9, typename T10,
577
typename T11, typename T12, typename T13, typename T14, typename T15,
578
typename T16, typename T17, typename T18, typename T19, typename T20,
579
typename T21, typename T22, typename T23, typename T24, typename T25,
580
typename T26, typename T27, typename T28, typename T29, typename T30,
581
typename T31, typename T32, typename T33, typename T34, typename T35,
582
typename T36, typename T37, typename T38, typename T39, typename T40,
583
typename T41, typename T42, typename T43>
586
typedef Types42<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
587
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
588
T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
592
template <typename T1, typename T2, typename T3, typename T4, typename T5,
593
typename T6, typename T7, typename T8, typename T9, typename T10,
594
typename T11, typename T12, typename T13, typename T14, typename T15,
595
typename T16, typename T17, typename T18, typename T19, typename T20,
596
typename T21, typename T22, typename T23, typename T24, typename T25,
597
typename T26, typename T27, typename T28, typename T29, typename T30,
598
typename T31, typename T32, typename T33, typename T34, typename T35,
599
typename T36, typename T37, typename T38, typename T39, typename T40,
600
typename T41, typename T42, typename T43, typename T44>
603
typedef Types43<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
604
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
605
T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
609
template <typename T1, typename T2, typename T3, typename T4, typename T5,
610
typename T6, typename T7, typename T8, typename T9, typename T10,
611
typename T11, typename T12, typename T13, typename T14, typename T15,
612
typename T16, typename T17, typename T18, typename T19, typename T20,
613
typename T21, typename T22, typename T23, typename T24, typename T25,
614
typename T26, typename T27, typename T28, typename T29, typename T30,
615
typename T31, typename T32, typename T33, typename T34, typename T35,
616
typename T36, typename T37, typename T38, typename T39, typename T40,
617
typename T41, typename T42, typename T43, typename T44, typename T45>
620
typedef Types44<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
621
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
622
T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
626
template <typename T1, typename T2, typename T3, typename T4, typename T5,
627
typename T6, typename T7, typename T8, typename T9, typename T10,
628
typename T11, typename T12, typename T13, typename T14, typename T15,
629
typename T16, typename T17, typename T18, typename T19, typename T20,
630
typename T21, typename T22, typename T23, typename T24, typename T25,
631
typename T26, typename T27, typename T28, typename T29, typename T30,
632
typename T31, typename T32, typename T33, typename T34, typename T35,
633
typename T36, typename T37, typename T38, typename T39, typename T40,
634
typename T41, typename T42, typename T43, typename T44, typename T45,
638
typedef Types45<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
639
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
640
T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
644
template <typename T1, typename T2, typename T3, typename T4, typename T5,
645
typename T6, typename T7, typename T8, typename T9, typename T10,
646
typename T11, typename T12, typename T13, typename T14, typename T15,
647
typename T16, typename T17, typename T18, typename T19, typename T20,
648
typename T21, typename T22, typename T23, typename T24, typename T25,
649
typename T26, typename T27, typename T28, typename T29, typename T30,
650
typename T31, typename T32, typename T33, typename T34, typename T35,
651
typename T36, typename T37, typename T38, typename T39, typename T40,
652
typename T41, typename T42, typename T43, typename T44, typename T45,
653
typename T46, typename T47>
656
typedef Types46<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
657
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
658
T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
659
T44, T45, T46, T47> Tail;
662
template <typename T1, typename T2, typename T3, typename T4, typename T5,
663
typename T6, typename T7, typename T8, typename T9, typename T10,
664
typename T11, typename T12, typename T13, typename T14, typename T15,
665
typename T16, typename T17, typename T18, typename T19, typename T20,
666
typename T21, typename T22, typename T23, typename T24, typename T25,
667
typename T26, typename T27, typename T28, typename T29, typename T30,
668
typename T31, typename T32, typename T33, typename T34, typename T35,
669
typename T36, typename T37, typename T38, typename T39, typename T40,
670
typename T41, typename T42, typename T43, typename T44, typename T45,
671
typename T46, typename T47, typename T48>
674
typedef Types47<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
675
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
676
T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
677
T44, T45, T46, T47, T48> Tail;
680
template <typename T1, typename T2, typename T3, typename T4, typename T5,
681
typename T6, typename T7, typename T8, typename T9, typename T10,
682
typename T11, typename T12, typename T13, typename T14, typename T15,
683
typename T16, typename T17, typename T18, typename T19, typename T20,
684
typename T21, typename T22, typename T23, typename T24, typename T25,
685
typename T26, typename T27, typename T28, typename T29, typename T30,
686
typename T31, typename T32, typename T33, typename T34, typename T35,
687
typename T36, typename T37, typename T38, typename T39, typename T40,
688
typename T41, typename T42, typename T43, typename T44, typename T45,
689
typename T46, typename T47, typename T48, typename T49>
692
typedef Types48<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
693
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
694
T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
695
T44, T45, T46, T47, T48, T49> Tail;
698
template <typename T1, typename T2, typename T3, typename T4, typename T5,
699
typename T6, typename T7, typename T8, typename T9, typename T10,
700
typename T11, typename T12, typename T13, typename T14, typename T15,
701
typename T16, typename T17, typename T18, typename T19, typename T20,
702
typename T21, typename T22, typename T23, typename T24, typename T25,
703
typename T26, typename T27, typename T28, typename T29, typename T30,
704
typename T31, typename T32, typename T33, typename T34, typename T35,
705
typename T36, typename T37, typename T38, typename T39, typename T40,
706
typename T41, typename T42, typename T43, typename T44, typename T45,
707
typename T46, typename T47, typename T48, typename T49, typename T50>
710
typedef Types49<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
711
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
712
T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
713
T44, T45, T46, T47, T48, T49, T50> Tail;
717
} // namespace internal
719
// We don't want to require the users to write TypesN<...> directly,
720
// as that would require them to count the length. Types<...> is much
721
// easier to write, but generates horrible messages when there is a
722
// compiler error, as gcc insists on printing out each template
723
// argument, even if it has the default value (this means Types<int>
724
// will appear as Types<int, None, None, ..., None> in the compiler
727
// Our solution is to combine the best part of the two approaches: a
728
// user would write Types<T1, ..., TN>, and Google Test will translate
729
// that to TypesN<T1, ..., TN> internally to make error messages
730
// readable. The translation is done by the 'type' member of the
732
template <typename T1 = internal::None, typename T2 = internal::None,
733
typename T3 = internal::None, typename T4 = internal::None,
734
typename T5 = internal::None, typename T6 = internal::None,
735
typename T7 = internal::None, typename T8 = internal::None,
736
typename T9 = internal::None, typename T10 = internal::None,
737
typename T11 = internal::None, typename T12 = internal::None,
738
typename T13 = internal::None, typename T14 = internal::None,
739
typename T15 = internal::None, typename T16 = internal::None,
740
typename T17 = internal::None, typename T18 = internal::None,
741
typename T19 = internal::None, typename T20 = internal::None,
742
typename T21 = internal::None, typename T22 = internal::None,
743
typename T23 = internal::None, typename T24 = internal::None,
744
typename T25 = internal::None, typename T26 = internal::None,
745
typename T27 = internal::None, typename T28 = internal::None,
746
typename T29 = internal::None, typename T30 = internal::None,
747
typename T31 = internal::None, typename T32 = internal::None,
748
typename T33 = internal::None, typename T34 = internal::None,
749
typename T35 = internal::None, typename T36 = internal::None,
750
typename T37 = internal::None, typename T38 = internal::None,
751
typename T39 = internal::None, typename T40 = internal::None,
752
typename T41 = internal::None, typename T42 = internal::None,
753
typename T43 = internal::None, typename T44 = internal::None,
754
typename T45 = internal::None, typename T46 = internal::None,
755
typename T47 = internal::None, typename T48 = internal::None,
756
typename T49 = internal::None, typename T50 = internal::None>
758
typedef internal::Types50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
759
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
760
T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
761
T41, T42, T43, T44, T45, T46, T47, T48, T49, T50> type;
765
struct Types<internal::None, internal::None, internal::None, internal::None,
766
internal::None, internal::None, internal::None, internal::None,
767
internal::None, internal::None, internal::None, internal::None,
768
internal::None, internal::None, internal::None, internal::None,
769
internal::None, internal::None, internal::None, internal::None,
770
internal::None, internal::None, internal::None, internal::None,
771
internal::None, internal::None, internal::None, internal::None,
772
internal::None, internal::None, internal::None, internal::None,
773
internal::None, internal::None, internal::None, internal::None,
774
internal::None, internal::None, internal::None, internal::None,
775
internal::None, internal::None, internal::None, internal::None,
776
internal::None, internal::None, internal::None, internal::None,
777
internal::None, internal::None> {
778
typedef internal::Types0 type;
780
template <typename T1>
781
struct Types<T1, internal::None, internal::None, internal::None,
782
internal::None, internal::None, internal::None, internal::None,
783
internal::None, internal::None, internal::None, internal::None,
784
internal::None, internal::None, internal::None, internal::None,
785
internal::None, internal::None, internal::None, internal::None,
786
internal::None, internal::None, internal::None, internal::None,
787
internal::None, internal::None, internal::None, internal::None,
788
internal::None, internal::None, internal::None, internal::None,
789
internal::None, internal::None, internal::None, internal::None,
790
internal::None, internal::None, internal::None, internal::None,
791
internal::None, internal::None, internal::None, internal::None,
792
internal::None, internal::None, internal::None, internal::None,
793
internal::None, internal::None> {
794
typedef internal::Types1<T1> type;
796
template <typename T1, typename T2>
797
struct Types<T1, T2, internal::None, internal::None, internal::None,
798
internal::None, internal::None, internal::None, internal::None,
799
internal::None, internal::None, internal::None, internal::None,
800
internal::None, internal::None, internal::None, internal::None,
801
internal::None, internal::None, internal::None, internal::None,
802
internal::None, internal::None, internal::None, internal::None,
803
internal::None, internal::None, internal::None, internal::None,
804
internal::None, internal::None, internal::None, internal::None,
805
internal::None, internal::None, internal::None, internal::None,
806
internal::None, internal::None, internal::None, internal::None,
807
internal::None, internal::None, internal::None, internal::None,
808
internal::None, internal::None, internal::None, internal::None,
810
typedef internal::Types2<T1, T2> type;
812
template <typename T1, typename T2, typename T3>
813
struct Types<T1, T2, T3, internal::None, internal::None, internal::None,
814
internal::None, internal::None, internal::None, internal::None,
815
internal::None, internal::None, internal::None, internal::None,
816
internal::None, internal::None, internal::None, internal::None,
817
internal::None, internal::None, internal::None, internal::None,
818
internal::None, internal::None, internal::None, internal::None,
819
internal::None, internal::None, internal::None, internal::None,
820
internal::None, internal::None, internal::None, internal::None,
821
internal::None, internal::None, internal::None, internal::None,
822
internal::None, internal::None, internal::None, internal::None,
823
internal::None, internal::None, internal::None, internal::None,
824
internal::None, internal::None, internal::None, internal::None> {
825
typedef internal::Types3<T1, T2, T3> type;
827
template <typename T1, typename T2, typename T3, typename T4>
828
struct Types<T1, T2, T3, T4, internal::None, internal::None, internal::None,
829
internal::None, internal::None, internal::None, internal::None,
830
internal::None, internal::None, internal::None, internal::None,
831
internal::None, internal::None, internal::None, internal::None,
832
internal::None, internal::None, internal::None, internal::None,
833
internal::None, internal::None, internal::None, internal::None,
834
internal::None, internal::None, internal::None, internal::None,
835
internal::None, internal::None, internal::None, internal::None,
836
internal::None, internal::None, internal::None, internal::None,
837
internal::None, internal::None, internal::None, internal::None,
838
internal::None, internal::None, internal::None, internal::None,
839
internal::None, internal::None, internal::None> {
840
typedef internal::Types4<T1, T2, T3, T4> type;
842
template <typename T1, typename T2, typename T3, typename T4, typename T5>
843
struct Types<T1, T2, T3, T4, T5, internal::None, internal::None,
844
internal::None, internal::None, internal::None, internal::None,
845
internal::None, internal::None, internal::None, internal::None,
846
internal::None, internal::None, internal::None, internal::None,
847
internal::None, internal::None, internal::None, internal::None,
848
internal::None, internal::None, internal::None, internal::None,
849
internal::None, internal::None, internal::None, internal::None,
850
internal::None, internal::None, internal::None, internal::None,
851
internal::None, internal::None, internal::None, internal::None,
852
internal::None, internal::None, internal::None, internal::None,
853
internal::None, internal::None, internal::None, internal::None,
854
internal::None, internal::None, internal::None> {
855
typedef internal::Types5<T1, T2, T3, T4, T5> type;
857
template <typename T1, typename T2, typename T3, typename T4, typename T5,
859
struct Types<T1, T2, T3, T4, T5, T6, internal::None, internal::None,
860
internal::None, internal::None, internal::None, internal::None,
861
internal::None, internal::None, internal::None, internal::None,
862
internal::None, internal::None, internal::None, internal::None,
863
internal::None, internal::None, internal::None, internal::None,
864
internal::None, internal::None, internal::None, internal::None,
865
internal::None, internal::None, internal::None, internal::None,
866
internal::None, internal::None, internal::None, internal::None,
867
internal::None, internal::None, internal::None, internal::None,
868
internal::None, internal::None, internal::None, internal::None,
869
internal::None, internal::None, internal::None, internal::None,
870
internal::None, internal::None> {
871
typedef internal::Types6<T1, T2, T3, T4, T5, T6> type;
873
template <typename T1, typename T2, typename T3, typename T4, typename T5,
874
typename T6, typename T7>
875
struct Types<T1, T2, T3, T4, T5, T6, T7, internal::None, internal::None,
876
internal::None, internal::None, internal::None, internal::None,
877
internal::None, internal::None, internal::None, internal::None,
878
internal::None, internal::None, internal::None, internal::None,
879
internal::None, internal::None, internal::None, internal::None,
880
internal::None, internal::None, internal::None, internal::None,
881
internal::None, internal::None, internal::None, internal::None,
882
internal::None, internal::None, internal::None, internal::None,
883
internal::None, internal::None, internal::None, internal::None,
884
internal::None, internal::None, internal::None, internal::None,
885
internal::None, internal::None, internal::None, internal::None,
887
typedef internal::Types7<T1, T2, T3, T4, T5, T6, T7> type;
889
template <typename T1, typename T2, typename T3, typename T4, typename T5,
890
typename T6, typename T7, typename T8>
891
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, internal::None, internal::None,
892
internal::None, internal::None, internal::None, internal::None,
893
internal::None, internal::None, internal::None, internal::None,
894
internal::None, internal::None, internal::None, internal::None,
895
internal::None, internal::None, internal::None, internal::None,
896
internal::None, internal::None, internal::None, internal::None,
897
internal::None, internal::None, internal::None, internal::None,
898
internal::None, internal::None, internal::None, internal::None,
899
internal::None, internal::None, internal::None, internal::None,
900
internal::None, internal::None, internal::None, internal::None,
901
internal::None, internal::None, internal::None, internal::None> {
902
typedef internal::Types8<T1, T2, T3, T4, T5, T6, T7, T8> type;
904
template <typename T1, typename T2, typename T3, typename T4, typename T5,
905
typename T6, typename T7, typename T8, typename T9>
906
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, internal::None,
907
internal::None, internal::None, internal::None, internal::None,
908
internal::None, internal::None, internal::None, internal::None,
909
internal::None, internal::None, internal::None, internal::None,
910
internal::None, internal::None, internal::None, internal::None,
911
internal::None, internal::None, internal::None, internal::None,
912
internal::None, internal::None, internal::None, internal::None,
913
internal::None, internal::None, internal::None, internal::None,
914
internal::None, internal::None, internal::None, internal::None,
915
internal::None, internal::None, internal::None, internal::None,
916
internal::None, internal::None, internal::None, internal::None> {
917
typedef internal::Types9<T1, T2, T3, T4, T5, T6, T7, T8, T9> type;
919
template <typename T1, typename T2, typename T3, typename T4, typename T5,
920
typename T6, typename T7, typename T8, typename T9, typename T10>
921
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, internal::None,
922
internal::None, internal::None, internal::None, internal::None,
923
internal::None, internal::None, internal::None, internal::None,
924
internal::None, internal::None, internal::None, internal::None,
925
internal::None, internal::None, internal::None, internal::None,
926
internal::None, internal::None, internal::None, internal::None,
927
internal::None, internal::None, internal::None, internal::None,
928
internal::None, internal::None, internal::None, internal::None,
929
internal::None, internal::None, internal::None, internal::None,
930
internal::None, internal::None, internal::None, internal::None,
931
internal::None, internal::None, internal::None> {
932
typedef internal::Types10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> type;
934
template <typename T1, typename T2, typename T3, typename T4, typename T5,
935
typename T6, typename T7, typename T8, typename T9, typename T10,
937
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, internal::None,
938
internal::None, internal::None, internal::None, internal::None,
939
internal::None, internal::None, internal::None, internal::None,
940
internal::None, internal::None, internal::None, internal::None,
941
internal::None, internal::None, internal::None, internal::None,
942
internal::None, internal::None, internal::None, internal::None,
943
internal::None, internal::None, internal::None, internal::None,
944
internal::None, internal::None, internal::None, internal::None,
945
internal::None, internal::None, internal::None, internal::None,
946
internal::None, internal::None, internal::None, internal::None,
947
internal::None, internal::None> {
948
typedef internal::Types11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> type;
950
template <typename T1, typename T2, typename T3, typename T4, typename T5,
951
typename T6, typename T7, typename T8, typename T9, typename T10,
952
typename T11, typename T12>
953
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, internal::None,
954
internal::None, internal::None, internal::None, internal::None,
955
internal::None, internal::None, internal::None, internal::None,
956
internal::None, internal::None, internal::None, internal::None,
957
internal::None, internal::None, internal::None, internal::None,
958
internal::None, internal::None, internal::None, internal::None,
959
internal::None, internal::None, internal::None, internal::None,
960
internal::None, internal::None, internal::None, internal::None,
961
internal::None, internal::None, internal::None, internal::None,
962
internal::None, internal::None, internal::None, internal::None,
964
typedef internal::Types12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
967
template <typename T1, typename T2, typename T3, typename T4, typename T5,
968
typename T6, typename T7, typename T8, typename T9, typename T10,
969
typename T11, typename T12, typename T13>
970
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
971
internal::None, internal::None, internal::None, internal::None,
972
internal::None, internal::None, internal::None, internal::None,
973
internal::None, internal::None, internal::None, internal::None,
974
internal::None, internal::None, internal::None, internal::None,
975
internal::None, internal::None, internal::None, internal::None,
976
internal::None, internal::None, internal::None, internal::None,
977
internal::None, internal::None, internal::None, internal::None,
978
internal::None, internal::None, internal::None, internal::None,
979
internal::None, internal::None, internal::None, internal::None,
981
typedef internal::Types13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
984
template <typename T1, typename T2, typename T3, typename T4, typename T5,
985
typename T6, typename T7, typename T8, typename T9, typename T10,
986
typename T11, typename T12, typename T13, typename T14>
987
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
988
internal::None, internal::None, internal::None, internal::None,
989
internal::None, internal::None, internal::None, internal::None,
990
internal::None, internal::None, internal::None, internal::None,
991
internal::None, internal::None, internal::None, internal::None,
992
internal::None, internal::None, internal::None, internal::None,
993
internal::None, internal::None, internal::None, internal::None,
994
internal::None, internal::None, internal::None, internal::None,
995
internal::None, internal::None, internal::None, internal::None,
996
internal::None, internal::None, internal::None, internal::None> {
997
typedef internal::Types14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1000
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1001
typename T6, typename T7, typename T8, typename T9, typename T10,
1002
typename T11, typename T12, typename T13, typename T14, typename T15>
1003
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1004
internal::None, internal::None, internal::None, internal::None,
1005
internal::None, internal::None, internal::None, internal::None,
1006
internal::None, internal::None, internal::None, internal::None,
1007
internal::None, internal::None, internal::None, internal::None,
1008
internal::None, internal::None, internal::None, internal::None,
1009
internal::None, internal::None, internal::None, internal::None,
1010
internal::None, internal::None, internal::None, internal::None,
1011
internal::None, internal::None, internal::None, internal::None,
1012
internal::None, internal::None, internal::None> {
1013
typedef internal::Types15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1014
T13, T14, T15> type;
1016
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1017
typename T6, typename T7, typename T8, typename T9, typename T10,
1018
typename T11, typename T12, typename T13, typename T14, typename T15,
1020
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1021
T16, internal::None, internal::None, internal::None, internal::None,
1022
internal::None, internal::None, internal::None, internal::None,
1023
internal::None, internal::None, internal::None, internal::None,
1024
internal::None, internal::None, internal::None, internal::None,
1025
internal::None, internal::None, internal::None, internal::None,
1026
internal::None, internal::None, internal::None, internal::None,
1027
internal::None, internal::None, internal::None, internal::None,
1028
internal::None, internal::None, internal::None, internal::None,
1029
internal::None, internal::None> {
1030
typedef internal::Types16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1031
T13, T14, T15, T16> type;
1033
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1034
typename T6, typename T7, typename T8, typename T9, typename T10,
1035
typename T11, typename T12, typename T13, typename T14, typename T15,
1036
typename T16, typename T17>
1037
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1038
T16, T17, internal::None, internal::None, internal::None, internal::None,
1039
internal::None, internal::None, internal::None, internal::None,
1040
internal::None, internal::None, internal::None, internal::None,
1041
internal::None, internal::None, internal::None, internal::None,
1042
internal::None, internal::None, internal::None, internal::None,
1043
internal::None, internal::None, internal::None, internal::None,
1044
internal::None, internal::None, internal::None, internal::None,
1045
internal::None, internal::None, internal::None, internal::None,
1047
typedef internal::Types17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1048
T13, T14, T15, T16, T17> type;
1050
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1051
typename T6, typename T7, typename T8, typename T9, typename T10,
1052
typename T11, typename T12, typename T13, typename T14, typename T15,
1053
typename T16, typename T17, typename T18>
1054
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1055
T16, T17, T18, internal::None, internal::None, internal::None,
1056
internal::None, internal::None, internal::None, internal::None,
1057
internal::None, internal::None, internal::None, internal::None,
1058
internal::None, internal::None, internal::None, internal::None,
1059
internal::None, internal::None, internal::None, internal::None,
1060
internal::None, internal::None, internal::None, internal::None,
1061
internal::None, internal::None, internal::None, internal::None,
1062
internal::None, internal::None, internal::None, internal::None,
1064
typedef internal::Types18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1065
T13, T14, T15, T16, T17, T18> type;
1067
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1068
typename T6, typename T7, typename T8, typename T9, typename T10,
1069
typename T11, typename T12, typename T13, typename T14, typename T15,
1070
typename T16, typename T17, typename T18, typename T19>
1071
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1072
T16, T17, T18, T19, internal::None, internal::None, internal::None,
1073
internal::None, internal::None, internal::None, internal::None,
1074
internal::None, internal::None, internal::None, internal::None,
1075
internal::None, internal::None, internal::None, internal::None,
1076
internal::None, internal::None, internal::None, internal::None,
1077
internal::None, internal::None, internal::None, internal::None,
1078
internal::None, internal::None, internal::None, internal::None,
1079
internal::None, internal::None, internal::None, internal::None> {
1080
typedef internal::Types19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1081
T13, T14, T15, T16, T17, T18, T19> type;
1083
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1084
typename T6, typename T7, typename T8, typename T9, typename T10,
1085
typename T11, typename T12, typename T13, typename T14, typename T15,
1086
typename T16, typename T17, typename T18, typename T19, typename T20>
1087
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1088
T16, T17, T18, T19, T20, internal::None, internal::None, internal::None,
1089
internal::None, internal::None, internal::None, internal::None,
1090
internal::None, internal::None, internal::None, internal::None,
1091
internal::None, internal::None, internal::None, internal::None,
1092
internal::None, internal::None, internal::None, internal::None,
1093
internal::None, internal::None, internal::None, internal::None,
1094
internal::None, internal::None, internal::None, internal::None,
1095
internal::None, internal::None, internal::None> {
1096
typedef internal::Types20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1097
T13, T14, T15, T16, T17, T18, T19, T20> type;
1099
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1100
typename T6, typename T7, typename T8, typename T9, typename T10,
1101
typename T11, typename T12, typename T13, typename T14, typename T15,
1102
typename T16, typename T17, typename T18, typename T19, typename T20,
1104
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1105
T16, T17, T18, T19, T20, T21, internal::None, internal::None,
1106
internal::None, internal::None, internal::None, internal::None,
1107
internal::None, internal::None, internal::None, internal::None,
1108
internal::None, internal::None, internal::None, internal::None,
1109
internal::None, internal::None, internal::None, internal::None,
1110
internal::None, internal::None, internal::None, internal::None,
1111
internal::None, internal::None, internal::None, internal::None,
1112
internal::None, internal::None, internal::None> {
1113
typedef internal::Types21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1114
T13, T14, T15, T16, T17, T18, T19, T20, T21> type;
1116
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1117
typename T6, typename T7, typename T8, typename T9, typename T10,
1118
typename T11, typename T12, typename T13, typename T14, typename T15,
1119
typename T16, typename T17, typename T18, typename T19, typename T20,
1120
typename T21, typename T22>
1121
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1122
T16, T17, T18, T19, T20, T21, T22, internal::None, internal::None,
1123
internal::None, internal::None, internal::None, internal::None,
1124
internal::None, internal::None, internal::None, internal::None,
1125
internal::None, internal::None, internal::None, internal::None,
1126
internal::None, internal::None, internal::None, internal::None,
1127
internal::None, internal::None, internal::None, internal::None,
1128
internal::None, internal::None, internal::None, internal::None,
1129
internal::None, internal::None> {
1130
typedef internal::Types22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1131
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> type;
1133
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1134
typename T6, typename T7, typename T8, typename T9, typename T10,
1135
typename T11, typename T12, typename T13, typename T14, typename T15,
1136
typename T16, typename T17, typename T18, typename T19, typename T20,
1137
typename T21, typename T22, typename T23>
1138
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1139
T16, T17, T18, T19, T20, T21, T22, T23, internal::None, internal::None,
1140
internal::None, internal::None, internal::None, internal::None,
1141
internal::None, internal::None, internal::None, internal::None,
1142
internal::None, internal::None, internal::None, internal::None,
1143
internal::None, internal::None, internal::None, internal::None,
1144
internal::None, internal::None, internal::None, internal::None,
1145
internal::None, internal::None, internal::None, internal::None,
1147
typedef internal::Types23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1148
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> type;
1150
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1151
typename T6, typename T7, typename T8, typename T9, typename T10,
1152
typename T11, typename T12, typename T13, typename T14, typename T15,
1153
typename T16, typename T17, typename T18, typename T19, typename T20,
1154
typename T21, typename T22, typename T23, typename T24>
1155
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1156
T16, T17, T18, T19, T20, T21, T22, T23, T24, internal::None,
1157
internal::None, internal::None, internal::None, internal::None,
1158
internal::None, internal::None, internal::None, internal::None,
1159
internal::None, internal::None, internal::None, internal::None,
1160
internal::None, internal::None, internal::None, internal::None,
1161
internal::None, internal::None, internal::None, internal::None,
1162
internal::None, internal::None, internal::None, internal::None,
1164
typedef internal::Types24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1165
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> type;
1167
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1168
typename T6, typename T7, typename T8, typename T9, typename T10,
1169
typename T11, typename T12, typename T13, typename T14, typename T15,
1170
typename T16, typename T17, typename T18, typename T19, typename T20,
1171
typename T21, typename T22, typename T23, typename T24, typename T25>
1172
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1173
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, internal::None,
1174
internal::None, internal::None, internal::None, internal::None,
1175
internal::None, internal::None, internal::None, internal::None,
1176
internal::None, internal::None, internal::None, internal::None,
1177
internal::None, internal::None, internal::None, internal::None,
1178
internal::None, internal::None, internal::None, internal::None,
1179
internal::None, internal::None, internal::None, internal::None> {
1180
typedef internal::Types25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1181
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> type;
1183
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1184
typename T6, typename T7, typename T8, typename T9, typename T10,
1185
typename T11, typename T12, typename T13, typename T14, typename T15,
1186
typename T16, typename T17, typename T18, typename T19, typename T20,
1187
typename T21, typename T22, typename T23, typename T24, typename T25,
1189
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1190
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, internal::None,
1191
internal::None, internal::None, internal::None, internal::None,
1192
internal::None, internal::None, internal::None, internal::None,
1193
internal::None, internal::None, internal::None, internal::None,
1194
internal::None, internal::None, internal::None, internal::None,
1195
internal::None, internal::None, internal::None, internal::None,
1196
internal::None, internal::None, internal::None> {
1197
typedef internal::Types26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1198
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
1201
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1202
typename T6, typename T7, typename T8, typename T9, typename T10,
1203
typename T11, typename T12, typename T13, typename T14, typename T15,
1204
typename T16, typename T17, typename T18, typename T19, typename T20,
1205
typename T21, typename T22, typename T23, typename T24, typename T25,
1206
typename T26, typename T27>
1207
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1208
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, internal::None,
1209
internal::None, internal::None, internal::None, internal::None,
1210
internal::None, internal::None, internal::None, internal::None,
1211
internal::None, internal::None, internal::None, internal::None,
1212
internal::None, internal::None, internal::None, internal::None,
1213
internal::None, internal::None, internal::None, internal::None,
1214
internal::None, internal::None> {
1215
typedef internal::Types27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1216
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1219
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1220
typename T6, typename T7, typename T8, typename T9, typename T10,
1221
typename T11, typename T12, typename T13, typename T14, typename T15,
1222
typename T16, typename T17, typename T18, typename T19, typename T20,
1223
typename T21, typename T22, typename T23, typename T24, typename T25,
1224
typename T26, typename T27, typename T28>
1225
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1226
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
1227
internal::None, internal::None, internal::None, internal::None,
1228
internal::None, internal::None, internal::None, internal::None,
1229
internal::None, internal::None, internal::None, internal::None,
1230
internal::None, internal::None, internal::None, internal::None,
1231
internal::None, internal::None, internal::None, internal::None,
1232
internal::None, internal::None> {
1233
typedef internal::Types28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1234
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1237
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1238
typename T6, typename T7, typename T8, typename T9, typename T10,
1239
typename T11, typename T12, typename T13, typename T14, typename T15,
1240
typename T16, typename T17, typename T18, typename T19, typename T20,
1241
typename T21, typename T22, typename T23, typename T24, typename T25,
1242
typename T26, typename T27, typename T28, typename T29>
1243
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1244
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
1245
internal::None, internal::None, internal::None, internal::None,
1246
internal::None, internal::None, internal::None, internal::None,
1247
internal::None, internal::None, internal::None, internal::None,
1248
internal::None, internal::None, internal::None, internal::None,
1249
internal::None, internal::None, internal::None, internal::None,
1251
typedef internal::Types29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1252
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1253
T27, T28, T29> type;
1255
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1256
typename T6, typename T7, typename T8, typename T9, typename T10,
1257
typename T11, typename T12, typename T13, typename T14, typename T15,
1258
typename T16, typename T17, typename T18, typename T19, typename T20,
1259
typename T21, typename T22, typename T23, typename T24, typename T25,
1260
typename T26, typename T27, typename T28, typename T29, typename T30>
1261
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1262
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1263
internal::None, internal::None, internal::None, internal::None,
1264
internal::None, internal::None, internal::None, internal::None,
1265
internal::None, internal::None, internal::None, internal::None,
1266
internal::None, internal::None, internal::None, internal::None,
1267
internal::None, internal::None, internal::None, internal::None> {
1268
typedef internal::Types30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1269
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1270
T27, T28, T29, T30> type;
1272
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1273
typename T6, typename T7, typename T8, typename T9, typename T10,
1274
typename T11, typename T12, typename T13, typename T14, typename T15,
1275
typename T16, typename T17, typename T18, typename T19, typename T20,
1276
typename T21, typename T22, typename T23, typename T24, typename T25,
1277
typename T26, typename T27, typename T28, typename T29, typename T30,
1279
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1280
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1281
T31, internal::None, internal::None, internal::None, internal::None,
1282
internal::None, internal::None, internal::None, internal::None,
1283
internal::None, internal::None, internal::None, internal::None,
1284
internal::None, internal::None, internal::None, internal::None,
1285
internal::None, internal::None, internal::None> {
1286
typedef internal::Types31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1287
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1288
T27, T28, T29, T30, T31> type;
1290
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1291
typename T6, typename T7, typename T8, typename T9, typename T10,
1292
typename T11, typename T12, typename T13, typename T14, typename T15,
1293
typename T16, typename T17, typename T18, typename T19, typename T20,
1294
typename T21, typename T22, typename T23, typename T24, typename T25,
1295
typename T26, typename T27, typename T28, typename T29, typename T30,
1296
typename T31, typename T32>
1297
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1298
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1299
T31, T32, internal::None, internal::None, internal::None, internal::None,
1300
internal::None, internal::None, internal::None, internal::None,
1301
internal::None, internal::None, internal::None, internal::None,
1302
internal::None, internal::None, internal::None, internal::None,
1303
internal::None, internal::None> {
1304
typedef internal::Types32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1305
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1306
T27, T28, T29, T30, T31, T32> type;
1308
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1309
typename T6, typename T7, typename T8, typename T9, typename T10,
1310
typename T11, typename T12, typename T13, typename T14, typename T15,
1311
typename T16, typename T17, typename T18, typename T19, typename T20,
1312
typename T21, typename T22, typename T23, typename T24, typename T25,
1313
typename T26, typename T27, typename T28, typename T29, typename T30,
1314
typename T31, typename T32, typename T33>
1315
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1316
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1317
T31, T32, T33, internal::None, internal::None, internal::None,
1318
internal::None, internal::None, internal::None, internal::None,
1319
internal::None, internal::None, internal::None, internal::None,
1320
internal::None, internal::None, internal::None, internal::None,
1321
internal::None, internal::None> {
1322
typedef internal::Types33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1323
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1324
T27, T28, T29, T30, T31, T32, T33> type;
1326
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1327
typename T6, typename T7, typename T8, typename T9, typename T10,
1328
typename T11, typename T12, typename T13, typename T14, typename T15,
1329
typename T16, typename T17, typename T18, typename T19, typename T20,
1330
typename T21, typename T22, typename T23, typename T24, typename T25,
1331
typename T26, typename T27, typename T28, typename T29, typename T30,
1332
typename T31, typename T32, typename T33, typename T34>
1333
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1334
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1335
T31, T32, T33, T34, internal::None, internal::None, internal::None,
1336
internal::None, internal::None, internal::None, internal::None,
1337
internal::None, internal::None, internal::None, internal::None,
1338
internal::None, internal::None, internal::None, internal::None,
1340
typedef internal::Types34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1341
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1342
T27, T28, T29, T30, T31, T32, T33, T34> type;
1344
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1345
typename T6, typename T7, typename T8, typename T9, typename T10,
1346
typename T11, typename T12, typename T13, typename T14, typename T15,
1347
typename T16, typename T17, typename T18, typename T19, typename T20,
1348
typename T21, typename T22, typename T23, typename T24, typename T25,
1349
typename T26, typename T27, typename T28, typename T29, typename T30,
1350
typename T31, typename T32, typename T33, typename T34, typename T35>
1351
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1352
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1353
T31, T32, T33, T34, T35, internal::None, internal::None, internal::None,
1354
internal::None, internal::None, internal::None, internal::None,
1355
internal::None, internal::None, internal::None, internal::None,
1356
internal::None, internal::None, internal::None, internal::None> {
1357
typedef internal::Types35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1358
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1359
T27, T28, T29, T30, T31, T32, T33, T34, T35> type;
1361
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1362
typename T6, typename T7, typename T8, typename T9, typename T10,
1363
typename T11, typename T12, typename T13, typename T14, typename T15,
1364
typename T16, typename T17, typename T18, typename T19, typename T20,
1365
typename T21, typename T22, typename T23, typename T24, typename T25,
1366
typename T26, typename T27, typename T28, typename T29, typename T30,
1367
typename T31, typename T32, typename T33, typename T34, typename T35,
1369
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1370
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1371
T31, T32, T33, T34, T35, T36, internal::None, internal::None,
1372
internal::None, internal::None, internal::None, internal::None,
1373
internal::None, internal::None, internal::None, internal::None,
1374
internal::None, internal::None, internal::None, internal::None> {
1375
typedef internal::Types36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1376
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1377
T27, T28, T29, T30, T31, T32, T33, T34, T35, T36> type;
1379
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1380
typename T6, typename T7, typename T8, typename T9, typename T10,
1381
typename T11, typename T12, typename T13, typename T14, typename T15,
1382
typename T16, typename T17, typename T18, typename T19, typename T20,
1383
typename T21, typename T22, typename T23, typename T24, typename T25,
1384
typename T26, typename T27, typename T28, typename T29, typename T30,
1385
typename T31, typename T32, typename T33, typename T34, typename T35,
1386
typename T36, typename T37>
1387
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1388
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1389
T31, T32, T33, T34, T35, T36, T37, internal::None, internal::None,
1390
internal::None, internal::None, internal::None, internal::None,
1391
internal::None, internal::None, internal::None, internal::None,
1392
internal::None, internal::None, internal::None> {
1393
typedef internal::Types37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1394
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1395
T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> type;
1397
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1398
typename T6, typename T7, typename T8, typename T9, typename T10,
1399
typename T11, typename T12, typename T13, typename T14, typename T15,
1400
typename T16, typename T17, typename T18, typename T19, typename T20,
1401
typename T21, typename T22, typename T23, typename T24, typename T25,
1402
typename T26, typename T27, typename T28, typename T29, typename T30,
1403
typename T31, typename T32, typename T33, typename T34, typename T35,
1404
typename T36, typename T37, typename T38>
1405
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1406
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1407
T31, T32, T33, T34, T35, T36, T37, T38, internal::None, internal::None,
1408
internal::None, internal::None, internal::None, internal::None,
1409
internal::None, internal::None, internal::None, internal::None,
1410
internal::None, internal::None> {
1411
typedef internal::Types38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1412
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1413
T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> type;
1415
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1416
typename T6, typename T7, typename T8, typename T9, typename T10,
1417
typename T11, typename T12, typename T13, typename T14, typename T15,
1418
typename T16, typename T17, typename T18, typename T19, typename T20,
1419
typename T21, typename T22, typename T23, typename T24, typename T25,
1420
typename T26, typename T27, typename T28, typename T29, typename T30,
1421
typename T31, typename T32, typename T33, typename T34, typename T35,
1422
typename T36, typename T37, typename T38, typename T39>
1423
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1424
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1425
T31, T32, T33, T34, T35, T36, T37, T38, T39, internal::None,
1426
internal::None, internal::None, internal::None, internal::None,
1427
internal::None, internal::None, internal::None, internal::None,
1428
internal::None, internal::None> {
1429
typedef internal::Types39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1430
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1431
T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> type;
1433
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1434
typename T6, typename T7, typename T8, typename T9, typename T10,
1435
typename T11, typename T12, typename T13, typename T14, typename T15,
1436
typename T16, typename T17, typename T18, typename T19, typename T20,
1437
typename T21, typename T22, typename T23, typename T24, typename T25,
1438
typename T26, typename T27, typename T28, typename T29, typename T30,
1439
typename T31, typename T32, typename T33, typename T34, typename T35,
1440
typename T36, typename T37, typename T38, typename T39, typename T40>
1441
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1442
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1443
T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, internal::None,
1444
internal::None, internal::None, internal::None, internal::None,
1445
internal::None, internal::None, internal::None, internal::None,
1447
typedef internal::Types40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1448
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1449
T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
1452
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1453
typename T6, typename T7, typename T8, typename T9, typename T10,
1454
typename T11, typename T12, typename T13, typename T14, typename T15,
1455
typename T16, typename T17, typename T18, typename T19, typename T20,
1456
typename T21, typename T22, typename T23, typename T24, typename T25,
1457
typename T26, typename T27, typename T28, typename T29, typename T30,
1458
typename T31, typename T32, typename T33, typename T34, typename T35,
1459
typename T36, typename T37, typename T38, typename T39, typename T40,
1461
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1462
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1463
T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, internal::None,
1464
internal::None, internal::None, internal::None, internal::None,
1465
internal::None, internal::None, internal::None, internal::None> {
1466
typedef internal::Types41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1467
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1468
T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
1471
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1472
typename T6, typename T7, typename T8, typename T9, typename T10,
1473
typename T11, typename T12, typename T13, typename T14, typename T15,
1474
typename T16, typename T17, typename T18, typename T19, typename T20,
1475
typename T21, typename T22, typename T23, typename T24, typename T25,
1476
typename T26, typename T27, typename T28, typename T29, typename T30,
1477
typename T31, typename T32, typename T33, typename T34, typename T35,
1478
typename T36, typename T37, typename T38, typename T39, typename T40,
1479
typename T41, typename T42>
1480
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1481
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1482
T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, internal::None,
1483
internal::None, internal::None, internal::None, internal::None,
1484
internal::None, internal::None, internal::None> {
1485
typedef internal::Types42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1486
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1487
T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
1490
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1491
typename T6, typename T7, typename T8, typename T9, typename T10,
1492
typename T11, typename T12, typename T13, typename T14, typename T15,
1493
typename T16, typename T17, typename T18, typename T19, typename T20,
1494
typename T21, typename T22, typename T23, typename T24, typename T25,
1495
typename T26, typename T27, typename T28, typename T29, typename T30,
1496
typename T31, typename T32, typename T33, typename T34, typename T35,
1497
typename T36, typename T37, typename T38, typename T39, typename T40,
1498
typename T41, typename T42, typename T43>
1499
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1500
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1501
T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
1502
internal::None, internal::None, internal::None, internal::None,
1503
internal::None, internal::None, internal::None> {
1504
typedef internal::Types43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1505
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1506
T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
1507
T41, T42, T43> type;
1509
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1510
typename T6, typename T7, typename T8, typename T9, typename T10,
1511
typename T11, typename T12, typename T13, typename T14, typename T15,
1512
typename T16, typename T17, typename T18, typename T19, typename T20,
1513
typename T21, typename T22, typename T23, typename T24, typename T25,
1514
typename T26, typename T27, typename T28, typename T29, typename T30,
1515
typename T31, typename T32, typename T33, typename T34, typename T35,
1516
typename T36, typename T37, typename T38, typename T39, typename T40,
1517
typename T41, typename T42, typename T43, typename T44>
1518
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1519
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1520
T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
1521
internal::None, internal::None, internal::None, internal::None,
1522
internal::None, internal::None> {
1523
typedef internal::Types44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1524
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1525
T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
1526
T41, T42, T43, T44> type;
1528
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1529
typename T6, typename T7, typename T8, typename T9, typename T10,
1530
typename T11, typename T12, typename T13, typename T14, typename T15,
1531
typename T16, typename T17, typename T18, typename T19, typename T20,
1532
typename T21, typename T22, typename T23, typename T24, typename T25,
1533
typename T26, typename T27, typename T28, typename T29, typename T30,
1534
typename T31, typename T32, typename T33, typename T34, typename T35,
1535
typename T36, typename T37, typename T38, typename T39, typename T40,
1536
typename T41, typename T42, typename T43, typename T44, typename T45>
1537
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1538
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1539
T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
1540
internal::None, internal::None, internal::None, internal::None,
1542
typedef internal::Types45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1543
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1544
T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
1545
T41, T42, T43, T44, T45> type;
1547
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1548
typename T6, typename T7, typename T8, typename T9, typename T10,
1549
typename T11, typename T12, typename T13, typename T14, typename T15,
1550
typename T16, typename T17, typename T18, typename T19, typename T20,
1551
typename T21, typename T22, typename T23, typename T24, typename T25,
1552
typename T26, typename T27, typename T28, typename T29, typename T30,
1553
typename T31, typename T32, typename T33, typename T34, typename T35,
1554
typename T36, typename T37, typename T38, typename T39, typename T40,
1555
typename T41, typename T42, typename T43, typename T44, typename T45,
1557
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1558
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1559
T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
1560
T46, internal::None, internal::None, internal::None, internal::None> {
1561
typedef internal::Types46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1562
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1563
T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
1564
T41, T42, T43, T44, T45, T46> type;
1566
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1567
typename T6, typename T7, typename T8, typename T9, typename T10,
1568
typename T11, typename T12, typename T13, typename T14, typename T15,
1569
typename T16, typename T17, typename T18, typename T19, typename T20,
1570
typename T21, typename T22, typename T23, typename T24, typename T25,
1571
typename T26, typename T27, typename T28, typename T29, typename T30,
1572
typename T31, typename T32, typename T33, typename T34, typename T35,
1573
typename T36, typename T37, typename T38, typename T39, typename T40,
1574
typename T41, typename T42, typename T43, typename T44, typename T45,
1575
typename T46, typename T47>
1576
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1577
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1578
T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
1579
T46, T47, internal::None, internal::None, internal::None> {
1580
typedef internal::Types47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1581
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1582
T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
1583
T41, T42, T43, T44, T45, T46, T47> type;
1585
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1586
typename T6, typename T7, typename T8, typename T9, typename T10,
1587
typename T11, typename T12, typename T13, typename T14, typename T15,
1588
typename T16, typename T17, typename T18, typename T19, typename T20,
1589
typename T21, typename T22, typename T23, typename T24, typename T25,
1590
typename T26, typename T27, typename T28, typename T29, typename T30,
1591
typename T31, typename T32, typename T33, typename T34, typename T35,
1592
typename T36, typename T37, typename T38, typename T39, typename T40,
1593
typename T41, typename T42, typename T43, typename T44, typename T45,
1594
typename T46, typename T47, typename T48>
1595
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1596
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1597
T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
1598
T46, T47, T48, internal::None, internal::None> {
1599
typedef internal::Types48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1600
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1601
T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
1602
T41, T42, T43, T44, T45, T46, T47, T48> type;
1604
template <typename T1, typename T2, typename T3, typename T4, typename T5,
1605
typename T6, typename T7, typename T8, typename T9, typename T10,
1606
typename T11, typename T12, typename T13, typename T14, typename T15,
1607
typename T16, typename T17, typename T18, typename T19, typename T20,
1608
typename T21, typename T22, typename T23, typename T24, typename T25,
1609
typename T26, typename T27, typename T28, typename T29, typename T30,
1610
typename T31, typename T32, typename T33, typename T34, typename T35,
1611
typename T36, typename T37, typename T38, typename T39, typename T40,
1612
typename T41, typename T42, typename T43, typename T44, typename T45,
1613
typename T46, typename T47, typename T48, typename T49>
1614
struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
1615
T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1616
T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
1617
T46, T47, T48, T49, internal::None> {
1618
typedef internal::Types49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
1619
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1620
T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
1621
T41, T42, T43, T44, T45, T46, T47, T48, T49> type;
1624
namespace internal {
1626
# define GTEST_TEMPLATE_ template <typename T> class
110
#define GTEST_TEMPLATE_ \
111
template <typename T> \
1628
114
// The template "selector" struct TemplateSel<Tmpl> is used to
1629
115
// represent Tmpl, which must be a class template with one type
1644
# define GTEST_BIND_(TmplSel, T) \
1645
TmplSel::template Bind<T>::type
1647
// A unique struct template used as the default value for the
1648
// arguments of class template Templates. This allows us to simulate
1649
// variadic templates (e.g. Templates<int>, Templates<int, double>,
1650
// and etc), which C++ doesn't support directly.
1651
template <typename T>
1654
// The following family of struct and struct templates are used to
1655
// represent template lists. In particular, TemplatesN<T1, T2, ...,
1656
// TN> represents a list of N templates (T1, T2, ..., and TN). Except
1657
// for Templates0, every struct in the family has two member types:
1658
// Head for the selector of the first template in the list, and Tail
1659
// for the rest of the list.
1661
// The empty template list.
1662
struct Templates0 {};
1664
// Template lists of length 1, 2, 3, and so on.
1666
template <GTEST_TEMPLATE_ T1>
1668
typedef TemplateSel<T1> Head;
1669
typedef Templates0 Tail;
1671
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2>
1673
typedef TemplateSel<T1> Head;
1674
typedef Templates1<T2> Tail;
1677
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3>
1679
typedef TemplateSel<T1> Head;
1680
typedef Templates2<T2, T3> Tail;
1683
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1686
typedef TemplateSel<T1> Head;
1687
typedef Templates3<T2, T3, T4> Tail;
1690
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1691
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5>
1693
typedef TemplateSel<T1> Head;
1694
typedef Templates4<T2, T3, T4, T5> Tail;
1697
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1698
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6>
1700
typedef TemplateSel<T1> Head;
1701
typedef Templates5<T2, T3, T4, T5, T6> Tail;
1704
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1705
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1708
typedef TemplateSel<T1> Head;
1709
typedef Templates6<T2, T3, T4, T5, T6, T7> Tail;
1712
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1713
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1714
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8>
1716
typedef TemplateSel<T1> Head;
1717
typedef Templates7<T2, T3, T4, T5, T6, T7, T8> Tail;
1720
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1721
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1722
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9>
1724
typedef TemplateSel<T1> Head;
1725
typedef Templates8<T2, T3, T4, T5, T6, T7, T8, T9> Tail;
1728
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1729
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1730
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1731
GTEST_TEMPLATE_ T10>
1732
struct Templates10 {
1733
typedef TemplateSel<T1> Head;
1734
typedef Templates9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail;
1737
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1738
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1739
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1740
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11>
1741
struct Templates11 {
1742
typedef TemplateSel<T1> Head;
1743
typedef Templates10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail;
1746
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1747
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1748
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1749
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12>
1750
struct Templates12 {
1751
typedef TemplateSel<T1> Head;
1752
typedef Templates11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail;
1755
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1756
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1757
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1758
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1759
GTEST_TEMPLATE_ T13>
1760
struct Templates13 {
1761
typedef TemplateSel<T1> Head;
1762
typedef Templates12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail;
1765
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1766
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1767
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1768
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1769
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14>
1770
struct Templates14 {
1771
typedef TemplateSel<T1> Head;
1772
typedef Templates13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
1776
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1777
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1778
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1779
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1780
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15>
1781
struct Templates15 {
1782
typedef TemplateSel<T1> Head;
1783
typedef Templates14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
1787
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1788
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1789
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1790
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1791
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1792
GTEST_TEMPLATE_ T16>
1793
struct Templates16 {
1794
typedef TemplateSel<T1> Head;
1795
typedef Templates15<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
1799
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1800
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1801
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1802
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1803
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1804
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17>
1805
struct Templates17 {
1806
typedef TemplateSel<T1> Head;
1807
typedef Templates16<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
1808
T15, T16, T17> Tail;
1811
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1812
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1813
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1814
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1815
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1816
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18>
1817
struct Templates18 {
1818
typedef TemplateSel<T1> Head;
1819
typedef Templates17<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
1820
T15, T16, T17, T18> Tail;
1823
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1824
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1825
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1826
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1827
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1828
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1829
GTEST_TEMPLATE_ T19>
1830
struct Templates19 {
1831
typedef TemplateSel<T1> Head;
1832
typedef Templates18<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
1833
T15, T16, T17, T18, T19> Tail;
1836
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1837
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1838
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1839
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1840
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1841
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1842
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20>
1843
struct Templates20 {
1844
typedef TemplateSel<T1> Head;
1845
typedef Templates19<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
1846
T15, T16, T17, T18, T19, T20> Tail;
1849
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1850
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1851
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1852
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1853
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1854
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1855
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21>
1856
struct Templates21 {
1857
typedef TemplateSel<T1> Head;
1858
typedef Templates20<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
1859
T15, T16, T17, T18, T19, T20, T21> Tail;
1862
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1863
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1864
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1865
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1866
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1867
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1868
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
1869
GTEST_TEMPLATE_ T22>
1870
struct Templates22 {
1871
typedef TemplateSel<T1> Head;
1872
typedef Templates21<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
1873
T15, T16, T17, T18, T19, T20, T21, T22> Tail;
1876
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1877
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1878
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1879
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1880
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1881
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1882
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
1883
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23>
1884
struct Templates23 {
1885
typedef TemplateSel<T1> Head;
1886
typedef Templates22<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
1887
T15, T16, T17, T18, T19, T20, T21, T22, T23> Tail;
1890
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1891
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1892
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1893
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1894
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1895
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1896
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
1897
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24>
1898
struct Templates24 {
1899
typedef TemplateSel<T1> Head;
1900
typedef Templates23<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
1901
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail;
1904
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1905
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1906
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1907
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1908
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1909
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1910
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
1911
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
1912
GTEST_TEMPLATE_ T25>
1913
struct Templates25 {
1914
typedef TemplateSel<T1> Head;
1915
typedef Templates24<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
1916
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail;
1919
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1920
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1921
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1922
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1923
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1924
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1925
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
1926
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
1927
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26>
1928
struct Templates26 {
1929
typedef TemplateSel<T1> Head;
1930
typedef Templates25<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
1931
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail;
1934
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1935
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1936
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1937
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1938
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1939
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1940
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
1941
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
1942
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27>
1943
struct Templates27 {
1944
typedef TemplateSel<T1> Head;
1945
typedef Templates26<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
1946
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail;
1949
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1950
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1951
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1952
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1953
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1954
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1955
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
1956
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
1957
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
1958
GTEST_TEMPLATE_ T28>
1959
struct Templates28 {
1960
typedef TemplateSel<T1> Head;
1961
typedef Templates27<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
1962
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
1966
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1967
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1968
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1969
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1970
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1971
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1972
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
1973
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
1974
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
1975
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29>
1976
struct Templates29 {
1977
typedef TemplateSel<T1> Head;
1978
typedef Templates28<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
1979
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
1983
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
1984
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1985
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1986
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1987
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1988
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1989
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
1990
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
1991
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
1992
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30>
1993
struct Templates30 {
1994
typedef TemplateSel<T1> Head;
1995
typedef Templates29<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
1996
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2000
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2001
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2002
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2003
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2004
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2005
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2006
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2007
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2008
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2009
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2010
GTEST_TEMPLATE_ T31>
2011
struct Templates31 {
2012
typedef TemplateSel<T1> Head;
2013
typedef Templates30<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2014
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2015
T29, T30, T31> Tail;
2018
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2019
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2020
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2021
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2022
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2023
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2024
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2025
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2026
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2027
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2028
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32>
2029
struct Templates32 {
2030
typedef TemplateSel<T1> Head;
2031
typedef Templates31<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2032
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2033
T29, T30, T31, T32> Tail;
2036
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2037
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2038
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2039
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2040
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2041
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2042
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2043
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2044
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2045
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2046
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33>
2047
struct Templates33 {
2048
typedef TemplateSel<T1> Head;
2049
typedef Templates32<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2050
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2051
T29, T30, T31, T32, T33> Tail;
2054
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2055
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2056
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2057
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2058
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2059
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2060
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2061
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2062
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2063
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2064
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2065
GTEST_TEMPLATE_ T34>
2066
struct Templates34 {
2067
typedef TemplateSel<T1> Head;
2068
typedef Templates33<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2069
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2070
T29, T30, T31, T32, T33, T34> Tail;
2073
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2074
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2075
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2076
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2077
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2078
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2079
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2080
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2081
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2082
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2083
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2084
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35>
2085
struct Templates35 {
2086
typedef TemplateSel<T1> Head;
2087
typedef Templates34<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2088
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2089
T29, T30, T31, T32, T33, T34, T35> Tail;
2092
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2093
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2094
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2095
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2096
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2097
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2098
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2099
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2100
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2101
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2102
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2103
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36>
2104
struct Templates36 {
2105
typedef TemplateSel<T1> Head;
2106
typedef Templates35<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2107
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2108
T29, T30, T31, T32, T33, T34, T35, T36> Tail;
2111
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2112
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2113
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2114
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2115
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2116
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2117
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2118
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2119
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2120
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2121
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2122
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2123
GTEST_TEMPLATE_ T37>
2124
struct Templates37 {
2125
typedef TemplateSel<T1> Head;
2126
typedef Templates36<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2127
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2128
T29, T30, T31, T32, T33, T34, T35, T36, T37> Tail;
2131
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2132
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2133
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2134
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2135
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2136
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2137
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2138
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2139
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2140
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2141
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2142
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2143
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38>
2144
struct Templates38 {
2145
typedef TemplateSel<T1> Head;
2146
typedef Templates37<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2147
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2148
T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail;
2151
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2152
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2153
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2154
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2155
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2156
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2157
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2158
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2159
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2160
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2161
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2162
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2163
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39>
2164
struct Templates39 {
2165
typedef TemplateSel<T1> Head;
2166
typedef Templates38<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2167
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2168
T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail;
2171
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2172
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2173
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2174
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2175
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2176
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2177
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2178
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2179
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2180
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2181
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2182
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2183
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
2184
GTEST_TEMPLATE_ T40>
2185
struct Templates40 {
2186
typedef TemplateSel<T1> Head;
2187
typedef Templates39<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2188
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2189
T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail;
2192
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2193
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2194
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2195
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2196
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2197
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2198
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2199
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2200
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2201
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2202
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2203
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2204
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
2205
GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41>
2206
struct Templates41 {
2207
typedef TemplateSel<T1> Head;
2208
typedef Templates40<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2209
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2210
T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail;
2213
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2214
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2215
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2216
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2217
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2218
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2219
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2220
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2221
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2222
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2223
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2224
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2225
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
2226
GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42>
2227
struct Templates42 {
2228
typedef TemplateSel<T1> Head;
2229
typedef Templates41<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2230
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2231
T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
2235
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2236
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2237
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2238
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2239
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2240
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2241
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2242
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2243
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2244
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2245
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2246
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2247
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
2248
GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
2249
GTEST_TEMPLATE_ T43>
2250
struct Templates43 {
2251
typedef TemplateSel<T1> Head;
2252
typedef Templates42<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2253
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2254
T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
2258
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2259
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2260
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2261
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2262
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2263
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2264
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2265
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2266
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2267
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2268
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2269
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2270
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
2271
GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
2272
GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44>
2273
struct Templates44 {
2274
typedef TemplateSel<T1> Head;
2275
typedef Templates43<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2276
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2277
T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
2281
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2282
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2283
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2284
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2285
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2286
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2287
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2288
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2289
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2290
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2291
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2292
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2293
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
2294
GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
2295
GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45>
2296
struct Templates45 {
2297
typedef TemplateSel<T1> Head;
2298
typedef Templates44<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2299
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2300
T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
2301
T43, T44, T45> Tail;
2304
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2305
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2306
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2307
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2308
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2309
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2310
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2311
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2312
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2313
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2314
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2315
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2316
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
2317
GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
2318
GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
2319
GTEST_TEMPLATE_ T46>
2320
struct Templates46 {
2321
typedef TemplateSel<T1> Head;
2322
typedef Templates45<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2323
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2324
T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
2325
T43, T44, T45, T46> Tail;
2328
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2329
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2330
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2331
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2332
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2333
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2334
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2335
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2336
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2337
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2338
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2339
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2340
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
2341
GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
2342
GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
2343
GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47>
2344
struct Templates47 {
2345
typedef TemplateSel<T1> Head;
2346
typedef Templates46<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2347
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2348
T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
2349
T43, T44, T45, T46, T47> Tail;
2352
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2353
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2354
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2355
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2356
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2357
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2358
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2359
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2360
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2361
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2362
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2363
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2364
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
2365
GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
2366
GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
2367
GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48>
2368
struct Templates48 {
2369
typedef TemplateSel<T1> Head;
2370
typedef Templates47<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2371
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2372
T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
2373
T43, T44, T45, T46, T47, T48> Tail;
2376
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2377
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2378
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2379
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2380
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2381
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2382
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2383
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2384
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2385
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2386
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2387
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2388
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
2389
GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
2390
GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
2391
GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
2392
GTEST_TEMPLATE_ T49>
2393
struct Templates49 {
2394
typedef TemplateSel<T1> Head;
2395
typedef Templates48<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2396
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2397
T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
2398
T43, T44, T45, T46, T47, T48, T49> Tail;
2401
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2402
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2403
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2404
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2405
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2406
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2407
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2408
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2409
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2410
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2411
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2412
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2413
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
2414
GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
2415
GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
2416
GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
2417
GTEST_TEMPLATE_ T49, GTEST_TEMPLATE_ T50>
2418
struct Templates50 {
2419
typedef TemplateSel<T1> Head;
2420
typedef Templates49<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2421
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2422
T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
2423
T43, T44, T45, T46, T47, T48, T49, T50> Tail;
2427
// We don't want to require the users to write TemplatesN<...> directly,
2428
// as that would require them to count the length. Templates<...> is much
2429
// easier to write, but generates horrible messages when there is a
2430
// compiler error, as gcc insists on printing out each template
2431
// argument, even if it has the default value (this means Templates<list>
2432
// will appear as Templates<list, NoneT, NoneT, ..., NoneT> in the compiler
2435
// Our solution is to combine the best part of the two approaches: a
2436
// user would write Templates<T1, ..., TN>, and Google Test will translate
2437
// that to TemplatesN<T1, ..., TN> internally to make error messages
2438
// readable. The translation is done by the 'type' member of the
2439
// Templates template.
2440
template <GTEST_TEMPLATE_ T1 = NoneT, GTEST_TEMPLATE_ T2 = NoneT,
2441
GTEST_TEMPLATE_ T3 = NoneT, GTEST_TEMPLATE_ T4 = NoneT,
2442
GTEST_TEMPLATE_ T5 = NoneT, GTEST_TEMPLATE_ T6 = NoneT,
2443
GTEST_TEMPLATE_ T7 = NoneT, GTEST_TEMPLATE_ T8 = NoneT,
2444
GTEST_TEMPLATE_ T9 = NoneT, GTEST_TEMPLATE_ T10 = NoneT,
2445
GTEST_TEMPLATE_ T11 = NoneT, GTEST_TEMPLATE_ T12 = NoneT,
2446
GTEST_TEMPLATE_ T13 = NoneT, GTEST_TEMPLATE_ T14 = NoneT,
2447
GTEST_TEMPLATE_ T15 = NoneT, GTEST_TEMPLATE_ T16 = NoneT,
2448
GTEST_TEMPLATE_ T17 = NoneT, GTEST_TEMPLATE_ T18 = NoneT,
2449
GTEST_TEMPLATE_ T19 = NoneT, GTEST_TEMPLATE_ T20 = NoneT,
2450
GTEST_TEMPLATE_ T21 = NoneT, GTEST_TEMPLATE_ T22 = NoneT,
2451
GTEST_TEMPLATE_ T23 = NoneT, GTEST_TEMPLATE_ T24 = NoneT,
2452
GTEST_TEMPLATE_ T25 = NoneT, GTEST_TEMPLATE_ T26 = NoneT,
2453
GTEST_TEMPLATE_ T27 = NoneT, GTEST_TEMPLATE_ T28 = NoneT,
2454
GTEST_TEMPLATE_ T29 = NoneT, GTEST_TEMPLATE_ T30 = NoneT,
2455
GTEST_TEMPLATE_ T31 = NoneT, GTEST_TEMPLATE_ T32 = NoneT,
2456
GTEST_TEMPLATE_ T33 = NoneT, GTEST_TEMPLATE_ T34 = NoneT,
2457
GTEST_TEMPLATE_ T35 = NoneT, GTEST_TEMPLATE_ T36 = NoneT,
2458
GTEST_TEMPLATE_ T37 = NoneT, GTEST_TEMPLATE_ T38 = NoneT,
2459
GTEST_TEMPLATE_ T39 = NoneT, GTEST_TEMPLATE_ T40 = NoneT,
2460
GTEST_TEMPLATE_ T41 = NoneT, GTEST_TEMPLATE_ T42 = NoneT,
2461
GTEST_TEMPLATE_ T43 = NoneT, GTEST_TEMPLATE_ T44 = NoneT,
2462
GTEST_TEMPLATE_ T45 = NoneT, GTEST_TEMPLATE_ T46 = NoneT,
2463
GTEST_TEMPLATE_ T47 = NoneT, GTEST_TEMPLATE_ T48 = NoneT,
2464
GTEST_TEMPLATE_ T49 = NoneT, GTEST_TEMPLATE_ T50 = NoneT>
130
#define GTEST_BIND_(TmplSel, T) TmplSel::template Bind<T>::type
132
template <GTEST_TEMPLATE_ Head_, GTEST_TEMPLATE_... Tail_>
2465
133
struct Templates {
2466
typedef Templates50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2467
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
2468
T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
2469
T42, T43, T44, T45, T46, T47, T48, T49, T50> type;
2473
struct Templates<NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2474
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2475
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2476
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2477
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2479
typedef Templates0 type;
2481
template <GTEST_TEMPLATE_ T1>
2482
struct Templates<T1, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2483
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2484
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2485
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2486
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2488
typedef Templates1<T1> type;
2490
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2>
2491
struct Templates<T1, T2, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2492
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2493
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2494
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2495
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2497
typedef Templates2<T1, T2> type;
2499
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3>
2500
struct Templates<T1, T2, T3, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2501
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2502
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2503
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2504
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2505
typedef Templates3<T1, T2, T3> type;
2507
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2509
struct Templates<T1, T2, T3, T4, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2510
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2511
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2512
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2513
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2514
typedef Templates4<T1, T2, T3, T4> type;
2516
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2517
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5>
2518
struct Templates<T1, T2, T3, T4, T5, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2519
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2520
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2521
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2522
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2523
typedef Templates5<T1, T2, T3, T4, T5> type;
2525
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2526
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6>
2527
struct Templates<T1, T2, T3, T4, T5, T6, NoneT, NoneT, NoneT, NoneT, NoneT,
2528
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2529
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2530
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2531
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2532
typedef Templates6<T1, T2, T3, T4, T5, T6> type;
2534
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2535
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2537
struct Templates<T1, T2, T3, T4, T5, T6, T7, NoneT, NoneT, NoneT, NoneT, NoneT,
2538
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2539
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2540
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2541
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2542
typedef Templates7<T1, T2, T3, T4, T5, T6, T7> type;
2544
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2545
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2546
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8>
2547
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, NoneT, NoneT, NoneT, NoneT,
2548
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2549
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2550
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2551
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2552
typedef Templates8<T1, T2, T3, T4, T5, T6, T7, T8> type;
2554
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2555
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2556
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9>
2557
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, NoneT, NoneT, NoneT,
2558
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2559
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2560
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2561
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2562
typedef Templates9<T1, T2, T3, T4, T5, T6, T7, T8, T9> type;
2564
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2565
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2566
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2567
GTEST_TEMPLATE_ T10>
2568
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, NoneT, NoneT, NoneT,
2569
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2570
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2571
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2572
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2573
typedef Templates10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> type;
2575
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2576
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2577
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2578
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11>
2579
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, NoneT, NoneT,
2580
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2581
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2582
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2583
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2584
typedef Templates11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> type;
2586
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2587
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2588
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2589
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12>
2590
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, NoneT,
2591
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2592
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2593
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2594
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2595
typedef Templates12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> type;
2597
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2598
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2599
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2600
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2601
GTEST_TEMPLATE_ T13>
2602
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, NoneT,
2603
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2604
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2605
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2606
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2607
typedef Templates13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
2610
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2611
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2612
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2613
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2614
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14>
2615
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2616
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2617
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2618
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2619
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2620
typedef Templates14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2623
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2624
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2625
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2626
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2627
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15>
2628
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2629
T15, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2630
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2631
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2632
NoneT, NoneT, NoneT, NoneT, NoneT> {
2633
typedef Templates15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2636
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2637
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2638
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2639
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2640
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2641
GTEST_TEMPLATE_ T16>
2642
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2643
T15, T16, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2644
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2645
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2646
NoneT, NoneT, NoneT, NoneT, NoneT> {
2647
typedef Templates16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2648
T14, T15, T16> type;
2650
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2651
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2652
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2653
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2654
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2655
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17>
2656
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2657
T15, T16, T17, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2658
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2659
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2660
NoneT, NoneT, NoneT, NoneT, NoneT> {
2661
typedef Templates17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2662
T14, T15, T16, T17> type;
2664
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2665
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2666
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2667
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2668
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2669
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18>
2670
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2671
T15, T16, T17, T18, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2672
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2673
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2674
NoneT, NoneT, NoneT, NoneT> {
2675
typedef Templates18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2676
T14, T15, T16, T17, T18> type;
2678
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2679
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2680
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2681
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2682
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2683
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2684
GTEST_TEMPLATE_ T19>
2685
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2686
T15, T16, T17, T18, T19, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2687
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2688
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2689
NoneT, NoneT, NoneT, NoneT> {
2690
typedef Templates19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2691
T14, T15, T16, T17, T18, T19> type;
2693
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2694
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2695
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2696
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2697
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2698
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2699
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20>
2700
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2701
T15, T16, T17, T18, T19, T20, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2702
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2703
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2704
NoneT, NoneT, NoneT, NoneT> {
2705
typedef Templates20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2706
T14, T15, T16, T17, T18, T19, T20> type;
2708
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2709
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2710
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2711
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2712
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2713
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2714
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21>
2715
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2716
T15, T16, T17, T18, T19, T20, T21, NoneT, NoneT, NoneT, NoneT, NoneT,
2717
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2718
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2719
NoneT, NoneT, NoneT, NoneT> {
2720
typedef Templates21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2721
T14, T15, T16, T17, T18, T19, T20, T21> type;
2723
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2724
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2725
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2726
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2727
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2728
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2729
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2730
GTEST_TEMPLATE_ T22>
2731
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2732
T15, T16, T17, T18, T19, T20, T21, T22, NoneT, NoneT, NoneT, NoneT, NoneT,
2733
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2734
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2735
NoneT, NoneT, NoneT> {
2736
typedef Templates22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2737
T14, T15, T16, T17, T18, T19, T20, T21, T22> type;
2739
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2740
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2741
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2742
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2743
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2744
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2745
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2746
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23>
2747
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2748
T15, T16, T17, T18, T19, T20, T21, T22, T23, NoneT, NoneT, NoneT, NoneT,
2749
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2750
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2751
NoneT, NoneT, NoneT> {
2752
typedef Templates23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2753
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> type;
2755
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2756
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2757
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2758
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2759
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2760
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2761
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2762
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24>
2763
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2764
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, NoneT, NoneT, NoneT,
2765
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2766
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2767
NoneT, NoneT, NoneT> {
2768
typedef Templates24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2769
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> type;
2771
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2772
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2773
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2774
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2775
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2776
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2777
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2778
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2779
GTEST_TEMPLATE_ T25>
2780
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2781
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, NoneT, NoneT, NoneT,
2782
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2783
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2785
typedef Templates25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2786
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> type;
2788
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2789
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2790
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2791
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2792
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2793
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2794
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2795
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2796
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26>
2797
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2798
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, NoneT, NoneT,
2799
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2800
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2802
typedef Templates26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2803
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> type;
2805
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2806
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2807
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2808
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2809
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2810
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2811
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2812
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2813
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27>
2814
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2815
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, NoneT,
2816
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2817
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2819
typedef Templates27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2820
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
2823
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2824
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2825
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2826
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2827
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2828
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2829
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2830
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2831
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2832
GTEST_TEMPLATE_ T28>
2833
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2834
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2835
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2836
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2838
typedef Templates28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2839
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
2842
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2843
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2844
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2845
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2846
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2847
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2848
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2849
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2850
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2851
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29>
2852
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2853
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
2854
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2855
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2857
typedef Templates29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2858
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
2861
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2862
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2863
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2864
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2865
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2866
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2867
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2868
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2869
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2870
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30>
2871
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2872
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
2873
T30, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2874
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2875
typedef Templates30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2876
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
2877
T28, T29, T30> type;
2879
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2880
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2881
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2882
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2883
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2884
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2885
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2886
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2887
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2888
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2889
GTEST_TEMPLATE_ T31>
2890
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2891
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
2892
T30, T31, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2893
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2894
typedef Templates31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2895
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
2896
T28, T29, T30, T31> type;
2898
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2899
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2900
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2901
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2902
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2903
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2904
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2905
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2906
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2907
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2908
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32>
2909
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2910
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
2911
T30, T31, T32, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2912
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2913
typedef Templates32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2914
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
2915
T28, T29, T30, T31, T32> type;
2917
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2918
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2919
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2920
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2921
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2922
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2923
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2924
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2925
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2926
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2927
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33>
2928
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2929
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
2930
T30, T31, T32, T33, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2931
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2932
typedef Templates33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2933
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
2934
T28, T29, T30, T31, T32, T33> type;
2936
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2937
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2938
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2939
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2940
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2941
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2942
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2943
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2944
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2945
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2946
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2947
GTEST_TEMPLATE_ T34>
2948
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2949
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
2950
T30, T31, T32, T33, T34, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2951
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2952
typedef Templates34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2953
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
2954
T28, T29, T30, T31, T32, T33, T34> type;
2956
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2957
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2958
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2959
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2960
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2961
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2962
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2963
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2964
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2965
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2966
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2967
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35>
2968
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2969
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
2970
T30, T31, T32, T33, T34, T35, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2971
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2972
typedef Templates35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2973
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
2974
T28, T29, T30, T31, T32, T33, T34, T35> type;
2976
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2977
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2978
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2979
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2980
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2981
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2982
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2983
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2984
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2985
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2986
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2987
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36>
2988
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
2989
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
2990
T30, T31, T32, T33, T34, T35, T36, NoneT, NoneT, NoneT, NoneT, NoneT,
2991
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2992
typedef Templates36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2993
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
2994
T28, T29, T30, T31, T32, T33, T34, T35, T36> type;
2996
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
2997
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2998
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2999
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3000
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3001
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3002
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3003
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3004
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3005
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3006
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3007
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3008
GTEST_TEMPLATE_ T37>
3009
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
3010
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3011
T30, T31, T32, T33, T34, T35, T36, T37, NoneT, NoneT, NoneT, NoneT, NoneT,
3012
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
3013
typedef Templates37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3014
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3015
T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> type;
3017
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
3018
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3019
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3020
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3021
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3022
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3023
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3024
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3025
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3026
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3027
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3028
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3029
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38>
3030
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
3031
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3032
T30, T31, T32, T33, T34, T35, T36, T37, T38, NoneT, NoneT, NoneT, NoneT,
3033
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
3034
typedef Templates38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3035
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3036
T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> type;
3038
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
3039
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3040
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3041
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3042
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3043
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3044
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3045
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3046
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3047
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3048
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3049
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3050
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39>
3051
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
3052
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3053
T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, NoneT, NoneT, NoneT,
3054
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
3055
typedef Templates39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3056
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3057
T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> type;
3059
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
3060
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3061
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3062
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3063
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3064
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3065
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3066
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3067
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3068
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3069
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3070
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3071
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
3072
GTEST_TEMPLATE_ T40>
3073
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
3074
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3075
T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, NoneT, NoneT, NoneT,
3076
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
3077
typedef Templates40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3078
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3079
T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> type;
3081
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
3082
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3083
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3084
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3085
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3086
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3087
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3088
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3089
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3090
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3091
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3092
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3093
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
3094
GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41>
3095
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
3096
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3097
T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, NoneT, NoneT,
3098
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
3099
typedef Templates41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3100
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3101
T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
3104
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
3105
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3106
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3107
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3108
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3109
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3110
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3111
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3112
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3113
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3114
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3115
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3116
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
3117
GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42>
3118
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
3119
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3120
T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, NoneT,
3121
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
3122
typedef Templates42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3123
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3124
T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
3127
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
3128
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3129
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3130
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3131
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3132
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3133
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3134
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3135
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3136
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3137
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3138
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3139
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
3140
GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
3141
GTEST_TEMPLATE_ T43>
3142
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
3143
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3144
T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
3145
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
3146
typedef Templates43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3147
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3148
T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
3151
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
3152
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3153
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3154
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3155
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3156
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3157
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3158
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3159
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3160
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3161
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3162
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3163
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
3164
GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
3165
GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44>
3166
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
3167
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3168
T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
3169
NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
3170
typedef Templates44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3171
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3172
T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
3173
T42, T43, T44> type;
3175
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
3176
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3177
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3178
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3179
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3180
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3181
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3182
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3183
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3184
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3185
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3186
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3187
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
3188
GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
3189
GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45>
3190
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
3191
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3192
T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
3193
T45, NoneT, NoneT, NoneT, NoneT, NoneT> {
3194
typedef Templates45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3195
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3196
T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
3197
T42, T43, T44, T45> type;
3199
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
3200
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3201
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3202
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3203
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3204
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3205
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3206
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3207
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3208
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3209
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3210
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3211
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
3212
GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
3213
GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
3214
GTEST_TEMPLATE_ T46>
3215
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
3216
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3217
T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
3218
T45, T46, NoneT, NoneT, NoneT, NoneT> {
3219
typedef Templates46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3220
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3221
T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
3222
T42, T43, T44, T45, T46> type;
3224
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
3225
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3226
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3227
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3228
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3229
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3230
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3231
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3232
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3233
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3234
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3235
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3236
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
3237
GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
3238
GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
3239
GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47>
3240
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
3241
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3242
T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
3243
T45, T46, T47, NoneT, NoneT, NoneT> {
3244
typedef Templates47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3245
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3246
T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
3247
T42, T43, T44, T45, T46, T47> type;
3249
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
3250
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3251
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3252
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3253
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3254
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3255
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3256
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3257
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3258
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3259
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3260
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3261
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
3262
GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
3263
GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
3264
GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48>
3265
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
3266
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3267
T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
3268
T45, T46, T47, T48, NoneT, NoneT> {
3269
typedef Templates48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3270
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3271
T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
3272
T42, T43, T44, T45, T46, T47, T48> type;
3274
template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
3275
GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3276
GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3277
GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3278
GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3279
GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3280
GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3281
GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3282
GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3283
GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3284
GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3285
GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3286
GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
3287
GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
3288
GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
3289
GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
3290
GTEST_TEMPLATE_ T49>
3291
struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
3292
T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3293
T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
3294
T45, T46, T47, T48, T49, NoneT> {
3295
typedef Templates49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3296
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3297
T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
3298
T42, T43, T44, T45, T46, T47, T48, T49> type;
3301
// The TypeList template makes it possible to use either a single type
3302
// or a Types<...> list in TYPED_TEST_SUITE() and
3303
// INSTANTIATE_TYPED_TEST_SUITE_P().
134
using Head = TemplateSel<Head_>;
135
using Tail = Templates<Tail_...>;
138
template <GTEST_TEMPLATE_ Head_>
139
struct Templates<Head_> {
140
using Head = TemplateSel<Head_>;
144
// Tuple-like type lists
145
template <typename Head_, typename... Tail_>
148
using Tail = Types<Tail_...>;
151
template <typename Head_>
152
struct Types<Head_> {
157
// Helper metafunctions to tell apart a single type from types
158
// generated by ::testing::Types
159
template <typename... Ts>
160
struct ProxyTypeList {
161
using type = Types<Ts...>;
165
struct is_proxy_type_list : std::false_type {};
167
template <typename... Ts>
168
struct is_proxy_type_list<ProxyTypeList<Ts...>> : std::true_type {};
170
// Generator which conditionally creates type lists.
171
// It recognizes if a requested type list should be created
172
// and prevents creating a new type list nested within another one.
3305
173
template <typename T>
3307
typedef Types1<T> type;
3310
template <typename T1, typename T2, typename T3, typename T4, typename T5,
3311
typename T6, typename T7, typename T8, typename T9, typename T10,
3312
typename T11, typename T12, typename T13, typename T14, typename T15,
3313
typename T16, typename T17, typename T18, typename T19, typename T20,
3314
typename T21, typename T22, typename T23, typename T24, typename T25,
3315
typename T26, typename T27, typename T28, typename T29, typename T30,
3316
typename T31, typename T32, typename T33, typename T34, typename T35,
3317
typename T36, typename T37, typename T38, typename T39, typename T40,
3318
typename T41, typename T42, typename T43, typename T44, typename T45,
3319
typename T46, typename T47, typename T48, typename T49, typename T50>
3320
struct TypeList<Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3321
T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3322
T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
3323
T44, T45, T46, T47, T48, T49, T50> > {
3324
typedef typename Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
3325
T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
3326
T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
3327
T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>::type type;
3330
#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
174
struct GenerateTypeList {
176
using proxy = typename std::conditional<is_proxy_type_list<T>::value, T,
177
ProxyTypeList<T>>::type;
180
using type = typename proxy::type;
3332
183
} // namespace internal
185
template <typename... Ts>
186
using Types = internal::ProxyTypeList<Ts...>;
3333
188
} // namespace testing
3335
#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
190
#endif // GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_