Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5564 serge 1
// This file was GENERATED by command:
2
//     pump.py gtest-type-util.h.pump
3
// DO NOT EDIT BY HAND!!!
4
 
5
// Copyright 2008 Google Inc.
6
// All Rights Reserved.
7
//
8
// Redistribution and use in source and binary forms, with or without
9
// modification, are permitted provided that the following conditions are
10
// met:
11
//
12
//     * Redistributions of source code must retain the above copyright
13
// notice, this list of conditions and the following disclaimer.
14
//     * Redistributions in binary form must reproduce the above
15
// copyright notice, this list of conditions and the following disclaimer
16
// in the documentation and/or other materials provided with the
17
// distribution.
18
//     * Neither the name of Google Inc. nor the names of its
19
// contributors may be used to endorse or promote products derived from
20
// this software without specific prior written permission.
21
//
22
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33
//
34
// Author: wan@google.com (Zhanyong Wan)
35
 
36
// Type utilities needed for implementing typed and type-parameterized
37
// tests.  This file is generated by a SCRIPT.  DO NOT EDIT BY HAND!
38
//
39
// Currently we support at most 50 types in a list, and at most 50
40
// type-parameterized tests in one type-parameterized test case.
41
// Please contact googletestframework@googlegroups.com if you need
42
// more.
43
 
44
#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
45
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
46
 
47
#include "gtest/internal/gtest-port.h"
48
 
49
// #ifdef __GNUC__ is too general here.  It is possible to use gcc without using
50
// libstdc++ (which is where cxxabi.h comes from).
51
# if GTEST_HAS_CXXABI_H_
52
#  include 
53
# elif defined(__HP_aCC)
54
#  include 
55
# endif  // GTEST_HASH_CXXABI_H_
56
 
57
namespace testing {
58
namespace internal {
59
 
60
// GetTypeName() returns a human-readable name of type T.
61
// NB: This function is also used in Google Mock, so don't move it inside of
62
// the typed-test-only section below.
63
template 
64
std::string GetTypeName() {
65
# if GTEST_HAS_RTTI
66
 
67
  const char* const name = typeid(T).name();
68
#  if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC)
69
  int status = 0;
70
  // gcc's implementation of typeid(T).name() mangles the type name,
71
  // so we have to demangle it.
72
#   if GTEST_HAS_CXXABI_H_
73
  using abi::__cxa_demangle;
74
#   endif  // GTEST_HAS_CXXABI_H_
75
  char* const readable_name = __cxa_demangle(name, 0, 0, &status);
76
  const std::string name_str(status == 0 ? readable_name : name);
77
  free(readable_name);
78
  return name_str;
79
#  else
80
  return name;
81
#  endif  // GTEST_HAS_CXXABI_H_ || __HP_aCC
82
 
83
# else
84
 
85
  return "";
86
 
87
# endif  // GTEST_HAS_RTTI
88
}
89
 
90
#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
91
 
92
// AssertyTypeEq::type is defined iff T1 and T2 are the same
93
// type.  This can be used as a compile-time assertion to ensure that
94
// two types are equal.
95
 
96
template 
97
struct AssertTypeEq;
98
 
99
template 
100
struct AssertTypeEq {
101
  typedef bool type;
102
};
103
 
104
// A unique type used as the default value for the arguments of class
105
// template Types.  This allows us to simulate variadic templates
106
// (e.g. Types, Type, and etc), which C++ doesn't
107
// support directly.
108
struct None {};
109
 
110
// The following family of struct and struct templates are used to
111
// represent type lists.  In particular, TypesN
112
// represents a type list with N types (T1, T2, ..., and TN) in it.
113
// Except for Types0, every struct in the family has two member types:
114
// Head for the first type in the list, and Tail for the rest of the
115
// list.
116
 
117
// The empty type list.
118
struct Types0 {};
119
 
120
// Type lists of length 1, 2, 3, and so on.
121
 
122
template 
123
struct Types1 {
124
  typedef T1 Head;
125
  typedef Types0 Tail;
126
};
127
template 
128
struct Types2 {
129
  typedef T1 Head;
130
  typedef Types1 Tail;
131
};
132
 
133
template 
134
struct Types3 {
135
  typedef T1 Head;
136
  typedef Types2 Tail;
137
};
138
 
139
template 
140
struct Types4 {
141
  typedef T1 Head;
142
  typedef Types3 Tail;
143
};
144
 
145
template 
146
struct Types5 {
147
  typedef T1 Head;
148
  typedef Types4 Tail;
149
};
150
 
151
template 
152
    typename T6>
153
struct Types6 {
154
  typedef T1 Head;
155
  typedef Types5 Tail;
156
};
157
 
158
template 
159
    typename T6, typename T7>
160
struct Types7 {
161
  typedef T1 Head;
162
  typedef Types6 Tail;
163
};
164
 
165
template 
166
    typename T6, typename T7, typename T8>
167
struct Types8 {
168
  typedef T1 Head;
169
  typedef Types7 Tail;
170
};
171
 
172
template 
173
    typename T6, typename T7, typename T8, typename T9>
174
struct Types9 {
175
  typedef T1 Head;
176
  typedef Types8 Tail;
177
};
178
 
179
template 
180
    typename T6, typename T7, typename T8, typename T9, typename T10>
181
struct Types10 {
182
  typedef T1 Head;
183
  typedef Types9 Tail;
184
};
185
 
186
template 
187
    typename T6, typename T7, typename T8, typename T9, typename T10,
188
    typename T11>
189
struct Types11 {
190
  typedef T1 Head;
191
  typedef Types10 Tail;
192
};
193
 
194
template 
195
    typename T6, typename T7, typename T8, typename T9, typename T10,
196
    typename T11, typename T12>
197
struct Types12 {
198
  typedef T1 Head;
199
  typedef Types11 Tail;
200
};
201
 
202
template 
203
    typename T6, typename T7, typename T8, typename T9, typename T10,
204
    typename T11, typename T12, typename T13>
205
struct Types13 {
206
  typedef T1 Head;
207
  typedef Types12 Tail;
208
};
209
 
210
template 
211
    typename T6, typename T7, typename T8, typename T9, typename T10,
212
    typename T11, typename T12, typename T13, typename T14>
213
struct Types14 {
214
  typedef T1 Head;
215
  typedef Types13 Tail;
216
};
217
 
218
template 
219
    typename T6, typename T7, typename T8, typename T9, typename T10,
220
    typename T11, typename T12, typename T13, typename T14, typename T15>
221
struct Types15 {
222
  typedef T1 Head;
223
  typedef Types14
224
      T15> Tail;
225
};
226
 
227
template 
228
    typename T6, typename T7, typename T8, typename T9, typename T10,
229
    typename T11, typename T12, typename T13, typename T14, typename T15,
230
    typename T16>
231
struct Types16 {
232
  typedef T1 Head;
233
  typedef Types15
234
      T16> Tail;
235
};
236
 
237
template 
238
    typename T6, typename T7, typename T8, typename T9, typename T10,
239
    typename T11, typename T12, typename T13, typename T14, typename T15,
240
    typename T16, typename T17>
241
struct Types17 {
242
  typedef T1 Head;
243
  typedef Types16
244
      T16, T17> Tail;
245
};
246
 
247
template 
248
    typename T6, typename T7, typename T8, typename T9, typename T10,
249
    typename T11, typename T12, typename T13, typename T14, typename T15,
250
    typename T16, typename T17, typename T18>
251
struct Types18 {
252
  typedef T1 Head;
253
  typedef Types17
254
      T16, T17, T18> Tail;
255
};
256
 
257
template 
258
    typename T6, typename T7, typename T8, typename T9, typename T10,
259
    typename T11, typename T12, typename T13, typename T14, typename T15,
260
    typename T16, typename T17, typename T18, typename T19>
261
struct Types19 {
262
  typedef T1 Head;
263
  typedef Types18
264
      T16, T17, T18, T19> Tail;
265
};
266
 
267
template 
268
    typename T6, typename T7, typename T8, typename T9, typename T10,
269
    typename T11, typename T12, typename T13, typename T14, typename T15,
270
    typename T16, typename T17, typename T18, typename T19, typename T20>
271
struct Types20 {
272
  typedef T1 Head;
273
  typedef Types19
274
      T16, T17, T18, T19, T20> Tail;
275
};
276
 
277
template 
278
    typename T6, typename T7, typename T8, typename T9, typename T10,
279
    typename T11, typename T12, typename T13, typename T14, typename T15,
280
    typename T16, typename T17, typename T18, typename T19, typename T20,
281
    typename T21>
282
struct Types21 {
283
  typedef T1 Head;
284
  typedef Types20
285
      T16, T17, T18, T19, T20, T21> Tail;
286
};
287
 
288
template 
289
    typename T6, typename T7, typename T8, typename T9, typename T10,
290
    typename T11, typename T12, typename T13, typename T14, typename T15,
291
    typename T16, typename T17, typename T18, typename T19, typename T20,
292
    typename T21, typename T22>
293
struct Types22 {
294
  typedef T1 Head;
295
  typedef Types21
296
      T16, T17, T18, T19, T20, T21, T22> Tail;
297
};
298
 
299
template 
300
    typename T6, typename T7, typename T8, typename T9, typename T10,
301
    typename T11, typename T12, typename T13, typename T14, typename T15,
302
    typename T16, typename T17, typename T18, typename T19, typename T20,
303
    typename T21, typename T22, typename T23>
304
struct Types23 {
305
  typedef T1 Head;
306
  typedef Types22
307
      T16, T17, T18, T19, T20, T21, T22, T23> Tail;
308
};
309
 
310
template 
311
    typename T6, typename T7, typename T8, typename T9, typename T10,
312
    typename T11, typename T12, typename T13, typename T14, typename T15,
313
    typename T16, typename T17, typename T18, typename T19, typename T20,
314
    typename T21, typename T22, typename T23, typename T24>
315
struct Types24 {
316
  typedef T1 Head;
317
  typedef Types23
318
      T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail;
319
};
320
 
321
template 
322
    typename T6, typename T7, typename T8, typename T9, typename T10,
323
    typename T11, typename T12, typename T13, typename T14, typename T15,
324
    typename T16, typename T17, typename T18, typename T19, typename T20,
325
    typename T21, typename T22, typename T23, typename T24, typename T25>
326
struct Types25 {
327
  typedef T1 Head;
328
  typedef Types24
329
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail;
330
};
331
 
332
template 
333
    typename T6, typename T7, typename T8, typename T9, typename T10,
334
    typename T11, typename T12, typename T13, typename T14, typename T15,
335
    typename T16, typename T17, typename T18, typename T19, typename T20,
336
    typename T21, typename T22, typename T23, typename T24, typename T25,
337
    typename T26>
338
struct Types26 {
339
  typedef T1 Head;
340
  typedef Types25
341
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail;
342
};
343
 
344
template 
345
    typename T6, typename T7, typename T8, typename T9, typename T10,
346
    typename T11, typename T12, typename T13, typename T14, typename T15,
347
    typename T16, typename T17, typename T18, typename T19, typename T20,
348
    typename T21, typename T22, typename T23, typename T24, typename T25,
349
    typename T26, typename T27>
350
struct Types27 {
351
  typedef T1 Head;
352
  typedef Types26
353
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail;
354
};
355
 
356
template 
357
    typename T6, typename T7, typename T8, typename T9, typename T10,
358
    typename T11, typename T12, typename T13, typename T14, typename T15,
359
    typename T16, typename T17, typename T18, typename T19, typename T20,
360
    typename T21, typename T22, typename T23, typename T24, typename T25,
361
    typename T26, typename T27, typename T28>
362
struct Types28 {
363
  typedef T1 Head;
364
  typedef Types27
365
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28> Tail;
366
};
367
 
368
template 
369
    typename T6, typename T7, typename T8, typename T9, typename T10,
370
    typename T11, typename T12, typename T13, typename T14, typename T15,
371
    typename T16, typename T17, typename T18, typename T19, typename T20,
372
    typename T21, typename T22, typename T23, typename T24, typename T25,
373
    typename T26, typename T27, typename T28, typename T29>
374
struct Types29 {
375
  typedef T1 Head;
376
  typedef Types28
377
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
378
      T29> Tail;
379
};
380
 
381
template 
382
    typename T6, typename T7, typename T8, typename T9, typename T10,
383
    typename T11, typename T12, typename T13, typename T14, typename T15,
384
    typename T16, typename T17, typename T18, typename T19, typename T20,
385
    typename T21, typename T22, typename T23, typename T24, typename T25,
386
    typename T26, typename T27, typename T28, typename T29, typename T30>
387
struct Types30 {
388
  typedef T1 Head;
389
  typedef Types29
390
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
391
      T30> Tail;
392
};
393
 
394
template 
395
    typename T6, typename T7, typename T8, typename T9, typename T10,
396
    typename T11, typename T12, typename T13, typename T14, typename T15,
397
    typename T16, typename T17, typename T18, typename T19, typename T20,
398
    typename T21, typename T22, typename T23, typename T24, typename T25,
399
    typename T26, typename T27, typename T28, typename T29, typename T30,
400
    typename T31>
401
struct Types31 {
402
  typedef T1 Head;
403
  typedef Types30
404
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
405
      T30, T31> Tail;
406
};
407
 
408
template 
409
    typename T6, typename T7, typename T8, typename T9, typename T10,
410
    typename T11, typename T12, typename T13, typename T14, typename T15,
411
    typename T16, typename T17, typename T18, typename T19, typename T20,
412
    typename T21, typename T22, typename T23, typename T24, typename T25,
413
    typename T26, typename T27, typename T28, typename T29, typename T30,
414
    typename T31, typename T32>
415
struct Types32 {
416
  typedef T1 Head;
417
  typedef Types31
418
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
419
      T30, T31, T32> Tail;
420
};
421
 
422
template 
423
    typename T6, typename T7, typename T8, typename T9, typename T10,
424
    typename T11, typename T12, typename T13, typename T14, typename T15,
425
    typename T16, typename T17, typename T18, typename T19, typename T20,
426
    typename T21, typename T22, typename T23, typename T24, typename T25,
427
    typename T26, typename T27, typename T28, typename T29, typename T30,
428
    typename T31, typename T32, typename T33>
429
struct Types33 {
430
  typedef T1 Head;
431
  typedef Types32
432
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
433
      T30, T31, T32, T33> Tail;
434
};
435
 
436
template 
437
    typename T6, typename T7, typename T8, typename T9, typename T10,
438
    typename T11, typename T12, typename T13, typename T14, typename T15,
439
    typename T16, typename T17, typename T18, typename T19, typename T20,
440
    typename T21, typename T22, typename T23, typename T24, typename T25,
441
    typename T26, typename T27, typename T28, typename T29, typename T30,
442
    typename T31, typename T32, typename T33, typename T34>
443
struct Types34 {
444
  typedef T1 Head;
445
  typedef Types33
446
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
447
      T30, T31, T32, T33, T34> Tail;
448
};
449
 
450
template 
451
    typename T6, typename T7, typename T8, typename T9, typename T10,
452
    typename T11, typename T12, typename T13, typename T14, typename T15,
453
    typename T16, typename T17, typename T18, typename T19, typename T20,
454
    typename T21, typename T22, typename T23, typename T24, typename T25,
455
    typename T26, typename T27, typename T28, typename T29, typename T30,
456
    typename T31, typename T32, typename T33, typename T34, typename T35>
457
struct Types35 {
458
  typedef T1 Head;
459
  typedef Types34
460
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
461
      T30, T31, T32, T33, T34, T35> Tail;
462
};
463
 
464
template 
465
    typename T6, typename T7, typename T8, typename T9, typename T10,
466
    typename T11, typename T12, typename T13, typename T14, typename T15,
467
    typename T16, typename T17, typename T18, typename T19, typename T20,
468
    typename T21, typename T22, typename T23, typename T24, typename T25,
469
    typename T26, typename T27, typename T28, typename T29, typename T30,
470
    typename T31, typename T32, typename T33, typename T34, typename T35,
471
    typename T36>
472
struct Types36 {
473
  typedef T1 Head;
474
  typedef Types35
475
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
476
      T30, T31, T32, T33, T34, T35, T36> Tail;
477
};
478
 
479
template 
480
    typename T6, typename T7, typename T8, typename T9, typename T10,
481
    typename T11, typename T12, typename T13, typename T14, typename T15,
482
    typename T16, typename T17, typename T18, typename T19, typename T20,
483
    typename T21, typename T22, typename T23, typename T24, typename T25,
484
    typename T26, typename T27, typename T28, typename T29, typename T30,
485
    typename T31, typename T32, typename T33, typename T34, typename T35,
486
    typename T36, typename T37>
487
struct Types37 {
488
  typedef T1 Head;
489
  typedef Types36
490
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
491
      T30, T31, T32, T33, T34, T35, T36, T37> Tail;
492
};
493
 
494
template 
495
    typename T6, typename T7, typename T8, typename T9, typename T10,
496
    typename T11, typename T12, typename T13, typename T14, typename T15,
497
    typename T16, typename T17, typename T18, typename T19, typename T20,
498
    typename T21, typename T22, typename T23, typename T24, typename T25,
499
    typename T26, typename T27, typename T28, typename T29, typename T30,
500
    typename T31, typename T32, typename T33, typename T34, typename T35,
501
    typename T36, typename T37, typename T38>
502
struct Types38 {
503
  typedef T1 Head;
504
  typedef Types37
505
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
506
      T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail;
507
};
508
 
509
template 
510
    typename T6, typename T7, typename T8, typename T9, typename T10,
511
    typename T11, typename T12, typename T13, typename T14, typename T15,
512
    typename T16, typename T17, typename T18, typename T19, typename T20,
513
    typename T21, typename T22, typename T23, typename T24, typename T25,
514
    typename T26, typename T27, typename T28, typename T29, typename T30,
515
    typename T31, typename T32, typename T33, typename T34, typename T35,
516
    typename T36, typename T37, typename T38, typename T39>
517
struct Types39 {
518
  typedef T1 Head;
519
  typedef Types38
520
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
521
      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail;
522
};
523
 
524
template 
525
    typename T6, typename T7, typename T8, typename T9, typename T10,
526
    typename T11, typename T12, typename T13, typename T14, typename T15,
527
    typename T16, typename T17, typename T18, typename T19, typename T20,
528
    typename T21, typename T22, typename T23, typename T24, typename T25,
529
    typename T26, typename T27, typename T28, typename T29, typename T30,
530
    typename T31, typename T32, typename T33, typename T34, typename T35,
531
    typename T36, typename T37, typename T38, typename T39, typename T40>
532
struct Types40 {
533
  typedef T1 Head;
534
  typedef Types39
535
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
536
      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail;
537
};
538
 
539
template 
540
    typename T6, typename T7, typename T8, typename T9, typename T10,
541
    typename T11, typename T12, typename T13, typename T14, typename T15,
542
    typename T16, typename T17, typename T18, typename T19, typename T20,
543
    typename T21, typename T22, typename T23, typename T24, typename T25,
544
    typename T26, typename T27, typename T28, typename T29, typename T30,
545
    typename T31, typename T32, typename T33, typename T34, typename T35,
546
    typename T36, typename T37, typename T38, typename T39, typename T40,
547
    typename T41>
548
struct Types41 {
549
  typedef T1 Head;
550
  typedef Types40
551
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
552
      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail;
553
};
554
 
555
template 
556
    typename T6, typename T7, typename T8, typename T9, typename T10,
557
    typename T11, typename T12, typename T13, typename T14, typename T15,
558
    typename T16, typename T17, typename T18, typename T19, typename T20,
559
    typename T21, typename T22, typename T23, typename T24, typename T25,
560
    typename T26, typename T27, typename T28, typename T29, typename T30,
561
    typename T31, typename T32, typename T33, typename T34, typename T35,
562
    typename T36, typename T37, typename T38, typename T39, typename T40,
563
    typename T41, typename T42>
564
struct Types42 {
565
  typedef T1 Head;
566
  typedef Types41
567
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
568
      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42> Tail;
569
};
570
 
571
template 
572
    typename T6, typename T7, typename T8, typename T9, typename T10,
573
    typename T11, typename T12, typename T13, typename T14, typename T15,
574
    typename T16, typename T17, typename T18, typename T19, typename T20,
575
    typename T21, typename T22, typename T23, typename T24, typename T25,
576
    typename T26, typename T27, typename T28, typename T29, typename T30,
577
    typename T31, typename T32, typename T33, typename T34, typename T35,
578
    typename T36, typename T37, typename T38, typename T39, typename T40,
579
    typename T41, typename T42, typename T43>
580
struct Types43 {
581
  typedef T1 Head;
582
  typedef Types42
583
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
584
      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
585
      T43> Tail;
586
};
587
 
588
template 
589
    typename T6, typename T7, typename T8, typename T9, typename T10,
590
    typename T11, typename T12, typename T13, typename T14, typename T15,
591
    typename T16, typename T17, typename T18, typename T19, typename T20,
592
    typename T21, typename T22, typename T23, typename T24, typename T25,
593
    typename T26, typename T27, typename T28, typename T29, typename T30,
594
    typename T31, typename T32, typename T33, typename T34, typename T35,
595
    typename T36, typename T37, typename T38, typename T39, typename T40,
596
    typename T41, typename T42, typename T43, typename T44>
597
struct Types44 {
598
  typedef T1 Head;
599
  typedef Types43
600
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
601
      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
602
      T44> Tail;
603
};
604
 
605
template 
606
    typename T6, typename T7, typename T8, typename T9, typename T10,
607
    typename T11, typename T12, typename T13, typename T14, typename T15,
608
    typename T16, typename T17, typename T18, typename T19, typename T20,
609
    typename T21, typename T22, typename T23, typename T24, typename T25,
610
    typename T26, typename T27, typename T28, typename T29, typename T30,
611
    typename T31, typename T32, typename T33, typename T34, typename T35,
612
    typename T36, typename T37, typename T38, typename T39, typename T40,
613
    typename T41, typename T42, typename T43, typename T44, typename T45>
614
struct Types45 {
615
  typedef T1 Head;
616
  typedef Types44
617
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
618
      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
619
      T44, T45> Tail;
620
};
621
 
622
template 
623
    typename T6, typename T7, typename T8, typename T9, typename T10,
624
    typename T11, typename T12, typename T13, typename T14, typename T15,
625
    typename T16, typename T17, typename T18, typename T19, typename T20,
626
    typename T21, typename T22, typename T23, typename T24, typename T25,
627
    typename T26, typename T27, typename T28, typename T29, typename T30,
628
    typename T31, typename T32, typename T33, typename T34, typename T35,
629
    typename T36, typename T37, typename T38, typename T39, typename T40,
630
    typename T41, typename T42, typename T43, typename T44, typename T45,
631
    typename T46>
632
struct Types46 {
633
  typedef T1 Head;
634
  typedef Types45
635
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
636
      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
637
      T44, T45, T46> Tail;
638
};
639
 
640
template 
641
    typename T6, typename T7, typename T8, typename T9, typename T10,
642
    typename T11, typename T12, typename T13, typename T14, typename T15,
643
    typename T16, typename T17, typename T18, typename T19, typename T20,
644
    typename T21, typename T22, typename T23, typename T24, typename T25,
645
    typename T26, typename T27, typename T28, typename T29, typename T30,
646
    typename T31, typename T32, typename T33, typename T34, typename T35,
647
    typename T36, typename T37, typename T38, typename T39, typename T40,
648
    typename T41, typename T42, typename T43, typename T44, typename T45,
649
    typename T46, typename T47>
650
struct Types47 {
651
  typedef T1 Head;
652
  typedef Types46
653
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
654
      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
655
      T44, T45, T46, T47> Tail;
656
};
657
 
658
template 
659
    typename T6, typename T7, typename T8, typename T9, typename T10,
660
    typename T11, typename T12, typename T13, typename T14, typename T15,
661
    typename T16, typename T17, typename T18, typename T19, typename T20,
662
    typename T21, typename T22, typename T23, typename T24, typename T25,
663
    typename T26, typename T27, typename T28, typename T29, typename T30,
664
    typename T31, typename T32, typename T33, typename T34, typename T35,
665
    typename T36, typename T37, typename T38, typename T39, typename T40,
666
    typename T41, typename T42, typename T43, typename T44, typename T45,
667
    typename T46, typename T47, typename T48>
668
struct Types48 {
669
  typedef T1 Head;
670
  typedef Types47
671
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
672
      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
673
      T44, T45, T46, T47, T48> Tail;
674
};
675
 
676
template 
677
    typename T6, typename T7, typename T8, typename T9, typename T10,
678
    typename T11, typename T12, typename T13, typename T14, typename T15,
679
    typename T16, typename T17, typename T18, typename T19, typename T20,
680
    typename T21, typename T22, typename T23, typename T24, typename T25,
681
    typename T26, typename T27, typename T28, typename T29, typename T30,
682
    typename T31, typename T32, typename T33, typename T34, typename T35,
683
    typename T36, typename T37, typename T38, typename T39, typename T40,
684
    typename T41, typename T42, typename T43, typename T44, typename T45,
685
    typename T46, typename T47, typename T48, typename T49>
686
struct Types49 {
687
  typedef T1 Head;
688
  typedef Types48
689
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
690
      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
691
      T44, T45, T46, T47, T48, T49> Tail;
692
};
693
 
694
template 
695
    typename T6, typename T7, typename T8, typename T9, typename T10,
696
    typename T11, typename T12, typename T13, typename T14, typename T15,
697
    typename T16, typename T17, typename T18, typename T19, typename T20,
698
    typename T21, typename T22, typename T23, typename T24, typename T25,
699
    typename T26, typename T27, typename T28, typename T29, typename T30,
700
    typename T31, typename T32, typename T33, typename T34, typename T35,
701
    typename T36, typename T37, typename T38, typename T39, typename T40,
702
    typename T41, typename T42, typename T43, typename T44, typename T45,
703
    typename T46, typename T47, typename T48, typename T49, typename T50>
704
struct Types50 {
705
  typedef T1 Head;
706
  typedef Types49
707
      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
708
      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
709
      T44, T45, T46, T47, T48, T49, T50> Tail;
710
};
711
 
712
 
713
}  // namespace internal
714
 
715
// We don't want to require the users to write TypesN<...> directly,
716
// as that would require them to count the length.  Types<...> is much
717
// easier to write, but generates horrible messages when there is a
718
// compiler error, as gcc insists on printing out each template
719
// argument, even if it has the default value (this means Types
720
// will appear as Types in the compiler
721
// errors).
722
//
723
// Our solution is to combine the best part of the two approaches: a
724
// user would write Types, and Google Test will translate
725
// that to TypesN internally to make error messages
726
// readable.  The translation is done by the 'type' member of the
727
// Types template.
728
template 
729
    typename T3 = internal::None, typename T4 = internal::None,
730
    typename T5 = internal::None, typename T6 = internal::None,
731
    typename T7 = internal::None, typename T8 = internal::None,
732
    typename T9 = internal::None, typename T10 = internal::None,
733
    typename T11 = internal::None, typename T12 = internal::None,
734
    typename T13 = internal::None, typename T14 = internal::None,
735
    typename T15 = internal::None, typename T16 = internal::None,
736
    typename T17 = internal::None, typename T18 = internal::None,
737
    typename T19 = internal::None, typename T20 = internal::None,
738
    typename T21 = internal::None, typename T22 = internal::None,
739
    typename T23 = internal::None, typename T24 = internal::None,
740
    typename T25 = internal::None, typename T26 = internal::None,
741
    typename T27 = internal::None, typename T28 = internal::None,
742
    typename T29 = internal::None, typename T30 = internal::None,
743
    typename T31 = internal::None, typename T32 = internal::None,
744
    typename T33 = internal::None, typename T34 = internal::None,
745
    typename T35 = internal::None, typename T36 = internal::None,
746
    typename T37 = internal::None, typename T38 = internal::None,
747
    typename T39 = internal::None, typename T40 = internal::None,
748
    typename T41 = internal::None, typename T42 = internal::None,
749
    typename T43 = internal::None, typename T44 = internal::None,
750
    typename T45 = internal::None, typename T46 = internal::None,
751
    typename T47 = internal::None, typename T48 = internal::None,
752
    typename T49 = internal::None, typename T50 = internal::None>
753
struct Types {
754
  typedef internal::Types50
755
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
756
      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
757
      T41, T42, T43, T44, T45, T46, T47, T48, T49, T50> type;
758
};
759
 
760
template <>
761
struct Types
762
    internal::None, internal::None, internal::None, internal::None,
763
    internal::None, internal::None, internal::None, internal::None,
764
    internal::None, internal::None, internal::None, internal::None,
765
    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> {
774
  typedef internal::Types0 type;
775
};
776
template 
777
struct Types
778
    internal::None, internal::None, internal::None, internal::None,
779
    internal::None, internal::None, internal::None, internal::None,
780
    internal::None, internal::None, internal::None, internal::None,
781
    internal::None, 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> {
790
  typedef internal::Types1 type;
791
};
792
template 
793
struct Types
794
    internal::None, internal::None, internal::None, internal::None,
795
    internal::None, internal::None, internal::None, internal::None,
796
    internal::None, internal::None, internal::None, internal::None,
797
    internal::None, 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> {
806
  typedef internal::Types2 type;
807
};
808
template 
809
struct Types
810
    internal::None, internal::None, internal::None, internal::None,
811
    internal::None, internal::None, internal::None, internal::None,
812
    internal::None, internal::None, internal::None, internal::None,
813
    internal::None, 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
  typedef internal::Types3 type;
822
};
823
template 
824
struct Types
825
    internal::None, internal::None, internal::None, internal::None,
826
    internal::None, internal::None, internal::None, internal::None,
827
    internal::None, internal::None, internal::None, internal::None,
828
    internal::None, 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> {
836
  typedef internal::Types4 type;
837
};
838
template 
839
struct Types
840
    internal::None, internal::None, internal::None, internal::None,
841
    internal::None, internal::None, internal::None, internal::None,
842
    internal::None, internal::None, internal::None, internal::None,
843
    internal::None, internal::None, 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> {
851
  typedef internal::Types5 type;
852
};
853
template 
854
    typename T6>
855
struct Types
856
    internal::None, internal::None, internal::None, internal::None,
857
    internal::None, internal::None, internal::None, internal::None,
858
    internal::None, internal::None, internal::None, internal::None,
859
    internal::None, internal::None, 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> {
867
  typedef internal::Types6 type;
868
};
869
template 
870
    typename T6, typename T7>
871
struct Types
872
    internal::None, internal::None, internal::None, internal::None,
873
    internal::None, internal::None, internal::None, internal::None,
874
    internal::None, internal::None, internal::None, internal::None,
875
    internal::None, internal::None, 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> {
883
  typedef internal::Types7 type;
884
};
885
template 
886
    typename T6, typename T7, typename T8>
887
struct Types
888
    internal::None, internal::None, internal::None, internal::None,
889
    internal::None, internal::None, internal::None, internal::None,
890
    internal::None, internal::None, internal::None, internal::None,
891
    internal::None, internal::None, 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
  typedef internal::Types8 type;
899
};
900
template 
901
    typename T6, typename T7, typename T8, typename T9>
902
struct Types
903
    internal::None, internal::None, internal::None, internal::None,
904
    internal::None, internal::None, internal::None, internal::None,
905
    internal::None, internal::None, internal::None, internal::None,
906
    internal::None, internal::None, internal::None, 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
  typedef internal::Types9 type;
914
};
915
template 
916
    typename T6, typename T7, typename T8, typename T9, typename T10>
917
struct Types
918
    internal::None, internal::None, internal::None, internal::None,
919
    internal::None, internal::None, internal::None, internal::None,
920
    internal::None, internal::None, internal::None, internal::None,
921
    internal::None, internal::None, internal::None, 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> {
928
  typedef internal::Types10 type;
929
};
930
template 
931
    typename T6, typename T7, typename T8, typename T9, typename T10,
932
    typename T11>
933
struct Types
934
    internal::None, internal::None, internal::None, internal::None,
935
    internal::None, internal::None, internal::None, internal::None,
936
    internal::None, internal::None, internal::None, internal::None,
937
    internal::None, internal::None, internal::None, 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> {
944
  typedef internal::Types11 type;
945
};
946
template 
947
    typename T6, typename T7, typename T8, typename T9, typename T10,
948
    typename T11, typename T12>
949
struct Types
950
    internal::None, internal::None, internal::None, internal::None,
951
    internal::None, internal::None, internal::None, internal::None,
952
    internal::None, internal::None, internal::None, internal::None,
953
    internal::None, internal::None, internal::None, 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> {
960
  typedef internal::Types12
961
      T12> type;
962
};
963
template 
964
    typename T6, typename T7, typename T8, typename T9, typename T10,
965
    typename T11, typename T12, typename T13>
966
struct Types
967
    internal::None, internal::None, internal::None, internal::None,
968
    internal::None, internal::None, internal::None, internal::None,
969
    internal::None, internal::None, internal::None, internal::None,
970
    internal::None, internal::None, internal::None, internal::None,
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> {
977
  typedef internal::Types13
978
      T13> type;
979
};
980
template 
981
    typename T6, typename T7, typename T8, typename T9, typename T10,
982
    typename T11, typename T12, typename T13, typename T14>
983
struct Types
984
    internal::None, internal::None, internal::None, internal::None,
985
    internal::None, internal::None, internal::None, internal::None,
986
    internal::None, internal::None, internal::None, internal::None,
987
    internal::None, internal::None, internal::None, internal::None,
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
  typedef internal::Types14
994
      T13, T14> type;
995
};
996
template 
997
    typename T6, typename T7, typename T8, typename T9, typename T10,
998
    typename T11, typename T12, typename T13, typename T14, typename T15>
999
struct Types
1000
    internal::None, internal::None, internal::None, internal::None,
1001
    internal::None, internal::None, internal::None, internal::None,
1002
    internal::None, internal::None, internal::None, internal::None,
1003
    internal::None, internal::None, internal::None, internal::None,
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> {
1009
  typedef internal::Types15
1010
      T13, T14, T15> type;
1011
};
1012
template 
1013
    typename T6, typename T7, typename T8, typename T9, typename T10,
1014
    typename T11, typename T12, typename T13, typename T14, typename T15,
1015
    typename T16>
1016
struct Types
1017
    T16, internal::None, internal::None, internal::None, internal::None,
1018
    internal::None, internal::None, internal::None, internal::None,
1019
    internal::None, internal::None, internal::None, internal::None,
1020
    internal::None, internal::None, internal::None, internal::None,
1021
    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> {
1026
  typedef internal::Types16
1027
      T13, T14, T15, T16> type;
1028
};
1029
template 
1030
    typename T6, typename T7, typename T8, typename T9, typename T10,
1031
    typename T11, typename T12, typename T13, typename T14, typename T15,
1032
    typename T16, typename T17>
1033
struct Types
1034
    T16, T17, internal::None, internal::None, internal::None, internal::None,
1035
    internal::None, internal::None, internal::None, internal::None,
1036
    internal::None, internal::None, internal::None, internal::None,
1037
    internal::None, internal::None, internal::None, internal::None,
1038
    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> {
1043
  typedef internal::Types17
1044
      T13, T14, T15, T16, T17> type;
1045
};
1046
template 
1047
    typename T6, typename T7, typename T8, typename T9, typename T10,
1048
    typename T11, typename T12, typename T13, typename T14, typename T15,
1049
    typename T16, typename T17, typename T18>
1050
struct Types
1051
    T16, T17, T18, internal::None, internal::None, internal::None,
1052
    internal::None, internal::None, internal::None, internal::None,
1053
    internal::None, internal::None, internal::None, internal::None,
1054
    internal::None, internal::None, internal::None, internal::None,
1055
    internal::None, 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> {
1060
  typedef internal::Types18
1061
      T13, T14, T15, T16, T17, T18> type;
1062
};
1063
template 
1064
    typename T6, typename T7, typename T8, typename T9, typename T10,
1065
    typename T11, typename T12, typename T13, typename T14, typename T15,
1066
    typename T16, typename T17, typename T18, typename T19>
1067
struct Types
1068
    T16, T17, T18, T19, internal::None, internal::None, internal::None,
1069
    internal::None, internal::None, internal::None, internal::None,
1070
    internal::None, internal::None, internal::None, internal::None,
1071
    internal::None, internal::None, internal::None, internal::None,
1072
    internal::None, 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
  typedef internal::Types19
1077
      T13, T14, T15, T16, T17, T18, T19> type;
1078
};
1079
template 
1080
    typename T6, typename T7, typename T8, typename T9, typename T10,
1081
    typename T11, typename T12, typename T13, typename T14, typename T15,
1082
    typename T16, typename T17, typename T18, typename T19, typename T20>
1083
struct Types
1084
    T16, T17, T18, T19, T20, internal::None, internal::None, internal::None,
1085
    internal::None, internal::None, internal::None, internal::None,
1086
    internal::None, internal::None, internal::None, internal::None,
1087
    internal::None, internal::None, internal::None, internal::None,
1088
    internal::None, 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> {
1092
  typedef internal::Types20
1093
      T13, T14, T15, T16, T17, T18, T19, T20> type;
1094
};
1095
template 
1096
    typename T6, typename T7, typename T8, typename T9, typename T10,
1097
    typename T11, typename T12, typename T13, typename T14, typename T15,
1098
    typename T16, typename T17, typename T18, typename T19, typename T20,
1099
    typename T21>
1100
struct Types
1101
    T16, T17, T18, T19, T20, T21, internal::None, internal::None,
1102
    internal::None, internal::None, internal::None, internal::None,
1103
    internal::None, internal::None, internal::None, internal::None,
1104
    internal::None, internal::None, internal::None, internal::None,
1105
    internal::None, internal::None, 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> {
1109
  typedef internal::Types21
1110
      T13, T14, T15, T16, T17, T18, T19, T20, T21> type;
1111
};
1112
template 
1113
    typename T6, typename T7, typename T8, typename T9, typename T10,
1114
    typename T11, typename T12, typename T13, typename T14, typename T15,
1115
    typename T16, typename T17, typename T18, typename T19, typename T20,
1116
    typename T21, typename T22>
1117
struct Types
1118
    T16, T17, T18, T19, T20, T21, T22, internal::None, internal::None,
1119
    internal::None, internal::None, internal::None, internal::None,
1120
    internal::None, internal::None, internal::None, internal::None,
1121
    internal::None, internal::None, internal::None, internal::None,
1122
    internal::None, internal::None, 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> {
1126
  typedef internal::Types22
1127
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> type;
1128
};
1129
template 
1130
    typename T6, typename T7, typename T8, typename T9, typename T10,
1131
    typename T11, typename T12, typename T13, typename T14, typename T15,
1132
    typename T16, typename T17, typename T18, typename T19, typename T20,
1133
    typename T21, typename T22, typename T23>
1134
struct Types
1135
    T16, T17, T18, T19, T20, T21, T22, T23, internal::None, internal::None,
1136
    internal::None, internal::None, internal::None, internal::None,
1137
    internal::None, internal::None, internal::None, internal::None,
1138
    internal::None, internal::None, internal::None, internal::None,
1139
    internal::None, internal::None, 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> {
1143
  typedef internal::Types23
1144
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> type;
1145
};
1146
template 
1147
    typename T6, typename T7, typename T8, typename T9, typename T10,
1148
    typename T11, typename T12, typename T13, typename T14, typename T15,
1149
    typename T16, typename T17, typename T18, typename T19, typename T20,
1150
    typename T21, typename T22, typename T23, typename T24>
1151
struct Types
1152
    T16, T17, T18, T19, T20, T21, T22, T23, T24, internal::None,
1153
    internal::None, internal::None, internal::None, internal::None,
1154
    internal::None, internal::None, internal::None, internal::None,
1155
    internal::None, internal::None, internal::None, internal::None,
1156
    internal::None, internal::None, internal::None, internal::None,
1157
    internal::None, internal::None, internal::None, internal::None,
1158
    internal::None, internal::None, internal::None, internal::None,
1159
    internal::None> {
1160
  typedef internal::Types24
1161
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> type;
1162
};
1163
template 
1164
    typename T6, typename T7, typename T8, typename T9, typename T10,
1165
    typename T11, typename T12, typename T13, typename T14, typename T15,
1166
    typename T16, typename T17, typename T18, typename T19, typename T20,
1167
    typename T21, typename T22, typename T23, typename T24, typename T25>
1168
struct Types
1169
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, internal::None,
1170
    internal::None, internal::None, internal::None, internal::None,
1171
    internal::None, internal::None, internal::None, internal::None,
1172
    internal::None, internal::None, internal::None, internal::None,
1173
    internal::None, internal::None, internal::None, internal::None,
1174
    internal::None, internal::None, internal::None, internal::None,
1175
    internal::None, internal::None, internal::None, internal::None> {
1176
  typedef internal::Types25
1177
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> type;
1178
};
1179
template 
1180
    typename T6, typename T7, typename T8, typename T9, typename T10,
1181
    typename T11, typename T12, typename T13, typename T14, typename T15,
1182
    typename T16, typename T17, typename T18, typename T19, typename T20,
1183
    typename T21, typename T22, typename T23, typename T24, typename T25,
1184
    typename T26>
1185
struct Types
1186
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, internal::None,
1187
    internal::None, internal::None, internal::None, internal::None,
1188
    internal::None, internal::None, internal::None, internal::None,
1189
    internal::None, internal::None, internal::None, internal::None,
1190
    internal::None, internal::None, internal::None, internal::None,
1191
    internal::None, internal::None, internal::None, internal::None,
1192
    internal::None, internal::None, internal::None> {
1193
  typedef internal::Types26
1194
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
1195
      T26> type;
1196
};
1197
template 
1198
    typename T6, typename T7, typename T8, typename T9, typename T10,
1199
    typename T11, typename T12, typename T13, typename T14, typename T15,
1200
    typename T16, typename T17, typename T18, typename T19, typename T20,
1201
    typename T21, typename T22, typename T23, typename T24, typename T25,
1202
    typename T26, typename T27>
1203
struct Types
1204
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, internal::None,
1205
    internal::None, internal::None, internal::None, internal::None,
1206
    internal::None, internal::None, internal::None, internal::None,
1207
    internal::None, internal::None, internal::None, internal::None,
1208
    internal::None, internal::None, internal::None, internal::None,
1209
    internal::None, internal::None, internal::None, internal::None,
1210
    internal::None, internal::None> {
1211
  typedef internal::Types27
1212
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1213
      T27> type;
1214
};
1215
template 
1216
    typename T6, typename T7, typename T8, typename T9, typename T10,
1217
    typename T11, typename T12, typename T13, typename T14, typename T15,
1218
    typename T16, typename T17, typename T18, typename T19, typename T20,
1219
    typename T21, typename T22, typename T23, typename T24, typename T25,
1220
    typename T26, typename T27, typename T28>
1221
struct Types
1222
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
1223
    internal::None, internal::None, internal::None, internal::None,
1224
    internal::None, internal::None, internal::None, internal::None,
1225
    internal::None, internal::None, internal::None, internal::None,
1226
    internal::None, internal::None, internal::None, internal::None,
1227
    internal::None, internal::None, internal::None, internal::None,
1228
    internal::None, internal::None> {
1229
  typedef internal::Types28
1230
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1231
      T27, T28> type;
1232
};
1233
template 
1234
    typename T6, typename T7, typename T8, typename T9, typename T10,
1235
    typename T11, typename T12, typename T13, typename T14, typename T15,
1236
    typename T16, typename T17, typename T18, typename T19, typename T20,
1237
    typename T21, typename T22, typename T23, typename T24, typename T25,
1238
    typename T26, typename T27, typename T28, typename T29>
1239
struct Types
1240
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
1241
    internal::None, internal::None, internal::None, internal::None,
1242
    internal::None, internal::None, internal::None, internal::None,
1243
    internal::None, internal::None, internal::None, internal::None,
1244
    internal::None, internal::None, internal::None, internal::None,
1245
    internal::None, internal::None, internal::None, internal::None,
1246
    internal::None> {
1247
  typedef internal::Types29
1248
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1249
      T27, T28, T29> type;
1250
};
1251
template 
1252
    typename T6, typename T7, typename T8, typename T9, typename T10,
1253
    typename T11, typename T12, typename T13, typename T14, typename T15,
1254
    typename T16, typename T17, typename T18, typename T19, typename T20,
1255
    typename T21, typename T22, typename T23, typename T24, typename T25,
1256
    typename T26, typename T27, typename T28, typename T29, typename T30>
1257
struct Types
1258
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1259
    internal::None, internal::None, internal::None, internal::None,
1260
    internal::None, internal::None, internal::None, internal::None,
1261
    internal::None, internal::None, internal::None, internal::None,
1262
    internal::None, internal::None, internal::None, internal::None,
1263
    internal::None, internal::None, internal::None, internal::None> {
1264
  typedef internal::Types30
1265
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1266
      T27, T28, T29, T30> type;
1267
};
1268
template 
1269
    typename T6, typename T7, typename T8, typename T9, typename T10,
1270
    typename T11, typename T12, typename T13, typename T14, typename T15,
1271
    typename T16, typename T17, typename T18, typename T19, typename T20,
1272
    typename T21, typename T22, typename T23, typename T24, typename T25,
1273
    typename T26, typename T27, typename T28, typename T29, typename T30,
1274
    typename T31>
1275
struct Types
1276
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1277
    T31, internal::None, internal::None, internal::None, internal::None,
1278
    internal::None, internal::None, internal::None, internal::None,
1279
    internal::None, internal::None, internal::None, internal::None,
1280
    internal::None, internal::None, internal::None, internal::None,
1281
    internal::None, internal::None, internal::None> {
1282
  typedef internal::Types31
1283
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1284
      T27, T28, T29, T30, T31> type;
1285
};
1286
template 
1287
    typename T6, typename T7, typename T8, typename T9, typename T10,
1288
    typename T11, typename T12, typename T13, typename T14, typename T15,
1289
    typename T16, typename T17, typename T18, typename T19, typename T20,
1290
    typename T21, typename T22, typename T23, typename T24, typename T25,
1291
    typename T26, typename T27, typename T28, typename T29, typename T30,
1292
    typename T31, typename T32>
1293
struct Types
1294
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1295
    T31, T32, internal::None, internal::None, internal::None, internal::None,
1296
    internal::None, internal::None, internal::None, internal::None,
1297
    internal::None, internal::None, internal::None, internal::None,
1298
    internal::None, internal::None, internal::None, internal::None,
1299
    internal::None, internal::None> {
1300
  typedef internal::Types32
1301
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1302
      T27, T28, T29, T30, T31, T32> type;
1303
};
1304
template 
1305
    typename T6, typename T7, typename T8, typename T9, typename T10,
1306
    typename T11, typename T12, typename T13, typename T14, typename T15,
1307
    typename T16, typename T17, typename T18, typename T19, typename T20,
1308
    typename T21, typename T22, typename T23, typename T24, typename T25,
1309
    typename T26, typename T27, typename T28, typename T29, typename T30,
1310
    typename T31, typename T32, typename T33>
1311
struct Types
1312
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1313
    T31, T32, T33, internal::None, internal::None, internal::None,
1314
    internal::None, internal::None, internal::None, internal::None,
1315
    internal::None, internal::None, internal::None, internal::None,
1316
    internal::None, internal::None, internal::None, internal::None,
1317
    internal::None, internal::None> {
1318
  typedef internal::Types33
1319
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1320
      T27, T28, T29, T30, T31, T32, T33> type;
1321
};
1322
template 
1323
    typename T6, typename T7, typename T8, typename T9, typename T10,
1324
    typename T11, typename T12, typename T13, typename T14, typename T15,
1325
    typename T16, typename T17, typename T18, typename T19, typename T20,
1326
    typename T21, typename T22, typename T23, typename T24, typename T25,
1327
    typename T26, typename T27, typename T28, typename T29, typename T30,
1328
    typename T31, typename T32, typename T33, typename T34>
1329
struct Types
1330
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1331
    T31, T32, T33, T34, internal::None, internal::None, internal::None,
1332
    internal::None, internal::None, internal::None, internal::None,
1333
    internal::None, internal::None, internal::None, internal::None,
1334
    internal::None, internal::None, internal::None, internal::None,
1335
    internal::None> {
1336
  typedef internal::Types34
1337
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1338
      T27, T28, T29, T30, T31, T32, T33, T34> type;
1339
};
1340
template 
1341
    typename T6, typename T7, typename T8, typename T9, typename T10,
1342
    typename T11, typename T12, typename T13, typename T14, typename T15,
1343
    typename T16, typename T17, typename T18, typename T19, typename T20,
1344
    typename T21, typename T22, typename T23, typename T24, typename T25,
1345
    typename T26, typename T27, typename T28, typename T29, typename T30,
1346
    typename T31, typename T32, typename T33, typename T34, typename T35>
1347
struct Types
1348
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1349
    T31, T32, T33, T34, T35, internal::None, internal::None, internal::None,
1350
    internal::None, internal::None, internal::None, internal::None,
1351
    internal::None, internal::None, internal::None, internal::None,
1352
    internal::None, internal::None, internal::None, internal::None> {
1353
  typedef internal::Types35
1354
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1355
      T27, T28, T29, T30, T31, T32, T33, T34, T35> type;
1356
};
1357
template 
1358
    typename T6, typename T7, typename T8, typename T9, typename T10,
1359
    typename T11, typename T12, typename T13, typename T14, typename T15,
1360
    typename T16, typename T17, typename T18, typename T19, typename T20,
1361
    typename T21, typename T22, typename T23, typename T24, typename T25,
1362
    typename T26, typename T27, typename T28, typename T29, typename T30,
1363
    typename T31, typename T32, typename T33, typename T34, typename T35,
1364
    typename T36>
1365
struct Types
1366
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1367
    T31, T32, T33, T34, T35, T36, internal::None, internal::None,
1368
    internal::None, internal::None, internal::None, internal::None,
1369
    internal::None, internal::None, internal::None, internal::None,
1370
    internal::None, internal::None, internal::None, internal::None> {
1371
  typedef internal::Types36
1372
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1373
      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36> type;
1374
};
1375
template 
1376
    typename T6, typename T7, typename T8, typename T9, typename T10,
1377
    typename T11, typename T12, typename T13, typename T14, typename T15,
1378
    typename T16, typename T17, typename T18, typename T19, typename T20,
1379
    typename T21, typename T22, typename T23, typename T24, typename T25,
1380
    typename T26, typename T27, typename T28, typename T29, typename T30,
1381
    typename T31, typename T32, typename T33, typename T34, typename T35,
1382
    typename T36, typename T37>
1383
struct Types
1384
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1385
    T31, T32, T33, T34, T35, T36, T37, internal::None, internal::None,
1386
    internal::None, internal::None, internal::None, internal::None,
1387
    internal::None, internal::None, internal::None, internal::None,
1388
    internal::None, internal::None, internal::None> {
1389
  typedef internal::Types37
1390
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1391
      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> type;
1392
};
1393
template 
1394
    typename T6, typename T7, typename T8, typename T9, typename T10,
1395
    typename T11, typename T12, typename T13, typename T14, typename T15,
1396
    typename T16, typename T17, typename T18, typename T19, typename T20,
1397
    typename T21, typename T22, typename T23, typename T24, typename T25,
1398
    typename T26, typename T27, typename T28, typename T29, typename T30,
1399
    typename T31, typename T32, typename T33, typename T34, typename T35,
1400
    typename T36, typename T37, typename T38>
1401
struct Types
1402
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1403
    T31, T32, T33, T34, T35, T36, T37, T38, internal::None, internal::None,
1404
    internal::None, internal::None, internal::None, internal::None,
1405
    internal::None, internal::None, internal::None, internal::None,
1406
    internal::None, internal::None> {
1407
  typedef internal::Types38
1408
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1409
      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> type;
1410
};
1411
template 
1412
    typename T6, typename T7, typename T8, typename T9, typename T10,
1413
    typename T11, typename T12, typename T13, typename T14, typename T15,
1414
    typename T16, typename T17, typename T18, typename T19, typename T20,
1415
    typename T21, typename T22, typename T23, typename T24, typename T25,
1416
    typename T26, typename T27, typename T28, typename T29, typename T30,
1417
    typename T31, typename T32, typename T33, typename T34, typename T35,
1418
    typename T36, typename T37, typename T38, typename T39>
1419
struct Types
1420
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1421
    T31, T32, T33, T34, T35, T36, T37, T38, T39, internal::None,
1422
    internal::None, internal::None, internal::None, internal::None,
1423
    internal::None, internal::None, internal::None, internal::None,
1424
    internal::None, internal::None> {
1425
  typedef internal::Types39
1426
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1427
      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> type;
1428
};
1429
template 
1430
    typename T6, typename T7, typename T8, typename T9, typename T10,
1431
    typename T11, typename T12, typename T13, typename T14, typename T15,
1432
    typename T16, typename T17, typename T18, typename T19, typename T20,
1433
    typename T21, typename T22, typename T23, typename T24, typename T25,
1434
    typename T26, typename T27, typename T28, typename T29, typename T30,
1435
    typename T31, typename T32, typename T33, typename T34, typename T35,
1436
    typename T36, typename T37, typename T38, typename T39, typename T40>
1437
struct Types
1438
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1439
    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, internal::None,
1440
    internal::None, internal::None, internal::None, internal::None,
1441
    internal::None, internal::None, internal::None, internal::None,
1442
    internal::None> {
1443
  typedef internal::Types40
1444
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1445
      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
1446
      T40> type;
1447
};
1448
template 
1449
    typename T6, typename T7, typename T8, typename T9, typename T10,
1450
    typename T11, typename T12, typename T13, typename T14, typename T15,
1451
    typename T16, typename T17, typename T18, typename T19, typename T20,
1452
    typename T21, typename T22, typename T23, typename T24, typename T25,
1453
    typename T26, typename T27, typename T28, typename T29, typename T30,
1454
    typename T31, typename T32, typename T33, typename T34, typename T35,
1455
    typename T36, typename T37, typename T38, typename T39, typename T40,
1456
    typename T41>
1457
struct Types
1458
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1459
    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, internal::None,
1460
    internal::None, internal::None, internal::None, internal::None,
1461
    internal::None, internal::None, internal::None, internal::None> {
1462
  typedef internal::Types41
1463
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1464
      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
1465
      T41> type;
1466
};
1467
template 
1468
    typename T6, typename T7, typename T8, typename T9, typename T10,
1469
    typename T11, typename T12, typename T13, typename T14, typename T15,
1470
    typename T16, typename T17, typename T18, typename T19, typename T20,
1471
    typename T21, typename T22, typename T23, typename T24, typename T25,
1472
    typename T26, typename T27, typename T28, typename T29, typename T30,
1473
    typename T31, typename T32, typename T33, typename T34, typename T35,
1474
    typename T36, typename T37, typename T38, typename T39, typename T40,
1475
    typename T41, typename T42>
1476
struct Types
1477
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1478
    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, internal::None,
1479
    internal::None, internal::None, internal::None, internal::None,
1480
    internal::None, internal::None, internal::None> {
1481
  typedef internal::Types42
1482
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1483
      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
1484
      T41, T42> type;
1485
};
1486
template 
1487
    typename T6, typename T7, typename T8, typename T9, typename T10,
1488
    typename T11, typename T12, typename T13, typename T14, typename T15,
1489
    typename T16, typename T17, typename T18, typename T19, typename T20,
1490
    typename T21, typename T22, typename T23, typename T24, typename T25,
1491
    typename T26, typename T27, typename T28, typename T29, typename T30,
1492
    typename T31, typename T32, typename T33, typename T34, typename T35,
1493
    typename T36, typename T37, typename T38, typename T39, typename T40,
1494
    typename T41, typename T42, typename T43>
1495
struct Types
1496
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1497
    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
1498
    internal::None, internal::None, internal::None, internal::None,
1499
    internal::None, internal::None, internal::None> {
1500
  typedef internal::Types43
1501
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1502
      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
1503
      T41, T42, T43> type;
1504
};
1505
template 
1506
    typename T6, typename T7, typename T8, typename T9, typename T10,
1507
    typename T11, typename T12, typename T13, typename T14, typename T15,
1508
    typename T16, typename T17, typename T18, typename T19, typename T20,
1509
    typename T21, typename T22, typename T23, typename T24, typename T25,
1510
    typename T26, typename T27, typename T28, typename T29, typename T30,
1511
    typename T31, typename T32, typename T33, typename T34, typename T35,
1512
    typename T36, typename T37, typename T38, typename T39, typename T40,
1513
    typename T41, typename T42, typename T43, typename T44>
1514
struct Types
1515
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1516
    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
1517
    internal::None, internal::None, internal::None, internal::None,
1518
    internal::None, internal::None> {
1519
  typedef internal::Types44
1520
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1521
      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
1522
      T41, T42, T43, T44> type;
1523
};
1524
template 
1525
    typename T6, typename T7, typename T8, typename T9, typename T10,
1526
    typename T11, typename T12, typename T13, typename T14, typename T15,
1527
    typename T16, typename T17, typename T18, typename T19, typename T20,
1528
    typename T21, typename T22, typename T23, typename T24, typename T25,
1529
    typename T26, typename T27, typename T28, typename T29, typename T30,
1530
    typename T31, typename T32, typename T33, typename T34, typename T35,
1531
    typename T36, typename T37, typename T38, typename T39, typename T40,
1532
    typename T41, typename T42, typename T43, typename T44, typename T45>
1533
struct Types
1534
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1535
    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
1536
    internal::None, internal::None, internal::None, internal::None,
1537
    internal::None> {
1538
  typedef internal::Types45
1539
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1540
      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
1541
      T41, T42, T43, T44, T45> type;
1542
};
1543
template 
1544
    typename T6, typename T7, typename T8, typename T9, typename T10,
1545
    typename T11, typename T12, typename T13, typename T14, typename T15,
1546
    typename T16, typename T17, typename T18, typename T19, typename T20,
1547
    typename T21, typename T22, typename T23, typename T24, typename T25,
1548
    typename T26, typename T27, typename T28, typename T29, typename T30,
1549
    typename T31, typename T32, typename T33, typename T34, typename T35,
1550
    typename T36, typename T37, typename T38, typename T39, typename T40,
1551
    typename T41, typename T42, typename T43, typename T44, typename T45,
1552
    typename T46>
1553
struct Types
1554
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1555
    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
1556
    T46, internal::None, internal::None, internal::None, internal::None> {
1557
  typedef internal::Types46
1558
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1559
      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
1560
      T41, T42, T43, T44, T45, T46> type;
1561
};
1562
template 
1563
    typename T6, typename T7, typename T8, typename T9, typename T10,
1564
    typename T11, typename T12, typename T13, typename T14, typename T15,
1565
    typename T16, typename T17, typename T18, typename T19, typename T20,
1566
    typename T21, typename T22, typename T23, typename T24, typename T25,
1567
    typename T26, typename T27, typename T28, typename T29, typename T30,
1568
    typename T31, typename T32, typename T33, typename T34, typename T35,
1569
    typename T36, typename T37, typename T38, typename T39, typename T40,
1570
    typename T41, typename T42, typename T43, typename T44, typename T45,
1571
    typename T46, typename T47>
1572
struct Types
1573
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1574
    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
1575
    T46, T47, internal::None, internal::None, internal::None> {
1576
  typedef internal::Types47
1577
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1578
      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
1579
      T41, T42, T43, T44, T45, T46, T47> type;
1580
};
1581
template 
1582
    typename T6, typename T7, typename T8, typename T9, typename T10,
1583
    typename T11, typename T12, typename T13, typename T14, typename T15,
1584
    typename T16, typename T17, typename T18, typename T19, typename T20,
1585
    typename T21, typename T22, typename T23, typename T24, typename T25,
1586
    typename T26, typename T27, typename T28, typename T29, typename T30,
1587
    typename T31, typename T32, typename T33, typename T34, typename T35,
1588
    typename T36, typename T37, typename T38, typename T39, typename T40,
1589
    typename T41, typename T42, typename T43, typename T44, typename T45,
1590
    typename T46, typename T47, typename T48>
1591
struct Types
1592
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1593
    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
1594
    T46, T47, T48, internal::None, internal::None> {
1595
  typedef internal::Types48
1596
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1597
      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
1598
      T41, T42, T43, T44, T45, T46, T47, T48> type;
1599
};
1600
template 
1601
    typename T6, typename T7, typename T8, typename T9, typename T10,
1602
    typename T11, typename T12, typename T13, typename T14, typename T15,
1603
    typename T16, typename T17, typename T18, typename T19, typename T20,
1604
    typename T21, typename T22, typename T23, typename T24, typename T25,
1605
    typename T26, typename T27, typename T28, typename T29, typename T30,
1606
    typename T31, typename T32, typename T33, typename T34, typename T35,
1607
    typename T36, typename T37, typename T38, typename T39, typename T40,
1608
    typename T41, typename T42, typename T43, typename T44, typename T45,
1609
    typename T46, typename T47, typename T48, typename T49>
1610
struct Types
1611
    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
1612
    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
1613
    T46, T47, T48, T49, internal::None> {
1614
  typedef internal::Types49
1615
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
1616
      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
1617
      T41, T42, T43, T44, T45, T46, T47, T48, T49> type;
1618
};
1619
 
1620
namespace internal {
1621
 
1622
# define GTEST_TEMPLATE_ template  class
1623
 
1624
// The template "selector" struct TemplateSel is used to
1625
// represent Tmpl, which must be a class template with one type
1626
// parameter, as a type.  TemplateSel::Bind::type is defined
1627
// as the type Tmpl.  This allows us to actually instantiate the
1628
// template "selected" by TemplateSel.
1629
//
1630
// This trick is necessary for simulating typedef for class templates,
1631
// which C++ doesn't support directly.
1632
template 
1633
struct TemplateSel {
1634
  template 
1635
  struct Bind {
1636
    typedef Tmpl type;
1637
  };
1638
};
1639
 
1640
# define GTEST_BIND_(TmplSel, T) \
1641
  TmplSel::template Bind::type
1642
 
1643
// A unique struct template used as the default value for the
1644
// arguments of class template Templates.  This allows us to simulate
1645
// variadic templates (e.g. Templates, Templates,
1646
// and etc), which C++ doesn't support directly.
1647
template 
1648
struct NoneT {};
1649
 
1650
// The following family of struct and struct templates are used to
1651
// represent template lists.  In particular, TemplatesN
1652
// TN> represents a list of N templates (T1, T2, ..., and TN).  Except
1653
// for Templates0, every struct in the family has two member types:
1654
// Head for the selector of the first template in the list, and Tail
1655
// for the rest of the list.
1656
 
1657
// The empty template list.
1658
struct Templates0 {};
1659
 
1660
// Template lists of length 1, 2, 3, and so on.
1661
 
1662
template 
1663
struct Templates1 {
1664
  typedef TemplateSel Head;
1665
  typedef Templates0 Tail;
1666
};
1667
template 
1668
struct Templates2 {
1669
  typedef TemplateSel Head;
1670
  typedef Templates1 Tail;
1671
};
1672
 
1673
template 
1674
struct Templates3 {
1675
  typedef TemplateSel Head;
1676
  typedef Templates2 Tail;
1677
};
1678
 
1679
template 
1680
    GTEST_TEMPLATE_ T4>
1681
struct Templates4 {
1682
  typedef TemplateSel Head;
1683
  typedef Templates3 Tail;
1684
};
1685
 
1686
template 
1687
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5>
1688
struct Templates5 {
1689
  typedef TemplateSel Head;
1690
  typedef Templates4 Tail;
1691
};
1692
 
1693
template 
1694
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6>
1695
struct Templates6 {
1696
  typedef TemplateSel Head;
1697
  typedef Templates5 Tail;
1698
};
1699
 
1700
template 
1701
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1702
    GTEST_TEMPLATE_ T7>
1703
struct Templates7 {
1704
  typedef TemplateSel Head;
1705
  typedef Templates6 Tail;
1706
};
1707
 
1708
template 
1709
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1710
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8>
1711
struct Templates8 {
1712
  typedef TemplateSel Head;
1713
  typedef Templates7 Tail;
1714
};
1715
 
1716
template 
1717
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1718
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9>
1719
struct Templates9 {
1720
  typedef TemplateSel Head;
1721
  typedef Templates8 Tail;
1722
};
1723
 
1724
template 
1725
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1726
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1727
    GTEST_TEMPLATE_ T10>
1728
struct Templates10 {
1729
  typedef TemplateSel Head;
1730
  typedef Templates9 Tail;
1731
};
1732
 
1733
template 
1734
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1735
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1736
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11>
1737
struct Templates11 {
1738
  typedef TemplateSel Head;
1739
  typedef Templates10 Tail;
1740
};
1741
 
1742
template 
1743
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1744
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1745
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12>
1746
struct Templates12 {
1747
  typedef TemplateSel Head;
1748
  typedef Templates11 Tail;
1749
};
1750
 
1751
template 
1752
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1753
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1754
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1755
    GTEST_TEMPLATE_ T13>
1756
struct Templates13 {
1757
  typedef TemplateSel Head;
1758
  typedef Templates12 Tail;
1759
};
1760
 
1761
template 
1762
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1763
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1764
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1765
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14>
1766
struct Templates14 {
1767
  typedef TemplateSel Head;
1768
  typedef Templates13
1769
      T14> Tail;
1770
};
1771
 
1772
template 
1773
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1774
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1775
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1776
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15>
1777
struct Templates15 {
1778
  typedef TemplateSel Head;
1779
  typedef Templates14
1780
      T15> Tail;
1781
};
1782
 
1783
template 
1784
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1785
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1786
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1787
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1788
    GTEST_TEMPLATE_ T16>
1789
struct Templates16 {
1790
  typedef TemplateSel Head;
1791
  typedef Templates15
1792
      T15, T16> Tail;
1793
};
1794
 
1795
template 
1796
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1797
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1798
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1799
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1800
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17>
1801
struct Templates17 {
1802
  typedef TemplateSel Head;
1803
  typedef Templates16
1804
      T15, T16, T17> Tail;
1805
};
1806
 
1807
template 
1808
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1809
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1810
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1811
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1812
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18>
1813
struct Templates18 {
1814
  typedef TemplateSel Head;
1815
  typedef Templates17
1816
      T15, T16, T17, T18> Tail;
1817
};
1818
 
1819
template 
1820
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1821
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1822
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1823
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1824
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1825
    GTEST_TEMPLATE_ T19>
1826
struct Templates19 {
1827
  typedef TemplateSel Head;
1828
  typedef Templates18
1829
      T15, T16, T17, T18, T19> Tail;
1830
};
1831
 
1832
template 
1833
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1834
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1835
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1836
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1837
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1838
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20>
1839
struct Templates20 {
1840
  typedef TemplateSel Head;
1841
  typedef Templates19
1842
      T15, T16, T17, T18, T19, T20> Tail;
1843
};
1844
 
1845
template 
1846
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1847
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1848
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1849
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1850
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1851
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21>
1852
struct Templates21 {
1853
  typedef TemplateSel Head;
1854
  typedef Templates20
1855
      T15, T16, T17, T18, T19, T20, T21> Tail;
1856
};
1857
 
1858
template 
1859
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1860
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1861
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1862
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1863
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1864
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
1865
    GTEST_TEMPLATE_ T22>
1866
struct Templates22 {
1867
  typedef TemplateSel Head;
1868
  typedef Templates21
1869
      T15, T16, T17, T18, T19, T20, T21, T22> Tail;
1870
};
1871
 
1872
template 
1873
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1874
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1875
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1876
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1877
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1878
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
1879
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23>
1880
struct Templates23 {
1881
  typedef TemplateSel Head;
1882
  typedef Templates22
1883
      T15, T16, T17, T18, T19, T20, T21, T22, T23> Tail;
1884
};
1885
 
1886
template 
1887
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1888
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1889
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1890
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1891
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1892
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
1893
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24>
1894
struct Templates24 {
1895
  typedef TemplateSel Head;
1896
  typedef Templates23
1897
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail;
1898
};
1899
 
1900
template 
1901
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1902
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1903
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1904
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1905
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1906
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
1907
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
1908
    GTEST_TEMPLATE_ T25>
1909
struct Templates25 {
1910
  typedef TemplateSel Head;
1911
  typedef Templates24
1912
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail;
1913
};
1914
 
1915
template 
1916
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1917
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1918
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1919
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1920
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1921
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
1922
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
1923
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26>
1924
struct Templates26 {
1925
  typedef TemplateSel Head;
1926
  typedef Templates25
1927
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail;
1928
};
1929
 
1930
template 
1931
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1932
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1933
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1934
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1935
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1936
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
1937
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
1938
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27>
1939
struct Templates27 {
1940
  typedef TemplateSel Head;
1941
  typedef Templates26
1942
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail;
1943
};
1944
 
1945
template 
1946
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1947
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1948
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1949
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1950
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1951
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
1952
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
1953
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
1954
    GTEST_TEMPLATE_ T28>
1955
struct Templates28 {
1956
  typedef TemplateSel Head;
1957
  typedef Templates27
1958
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
1959
      T28> Tail;
1960
};
1961
 
1962
template 
1963
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1964
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1965
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1966
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1967
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1968
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
1969
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
1970
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
1971
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29>
1972
struct Templates29 {
1973
  typedef TemplateSel Head;
1974
  typedef Templates28
1975
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
1976
      T29> Tail;
1977
};
1978
 
1979
template 
1980
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1981
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1982
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
1983
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
1984
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
1985
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
1986
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
1987
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
1988
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30>
1989
struct Templates30 {
1990
  typedef TemplateSel Head;
1991
  typedef Templates29
1992
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
1993
      T29, T30> Tail;
1994
};
1995
 
1996
template 
1997
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
1998
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
1999
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2000
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2001
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2002
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2003
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2004
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2005
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2006
    GTEST_TEMPLATE_ T31>
2007
struct Templates31 {
2008
  typedef TemplateSel Head;
2009
  typedef Templates30
2010
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2011
      T29, T30, T31> Tail;
2012
};
2013
 
2014
template 
2015
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2016
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2017
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2018
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2019
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2020
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2021
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2022
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2023
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2024
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32>
2025
struct Templates32 {
2026
  typedef TemplateSel Head;
2027
  typedef Templates31
2028
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2029
      T29, T30, T31, T32> Tail;
2030
};
2031
 
2032
template 
2033
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2034
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2035
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2036
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2037
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2038
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2039
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2040
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2041
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2042
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33>
2043
struct Templates33 {
2044
  typedef TemplateSel Head;
2045
  typedef Templates32
2046
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2047
      T29, T30, T31, T32, T33> Tail;
2048
};
2049
 
2050
template 
2051
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2052
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2053
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2054
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2055
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2056
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2057
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2058
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2059
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2060
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2061
    GTEST_TEMPLATE_ T34>
2062
struct Templates34 {
2063
  typedef TemplateSel Head;
2064
  typedef Templates33
2065
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2066
      T29, T30, T31, T32, T33, T34> Tail;
2067
};
2068
 
2069
template 
2070
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2071
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2072
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2073
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2074
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2075
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2076
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2077
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2078
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2079
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2080
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35>
2081
struct Templates35 {
2082
  typedef TemplateSel Head;
2083
  typedef Templates34
2084
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2085
      T29, T30, T31, T32, T33, T34, T35> Tail;
2086
};
2087
 
2088
template 
2089
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2090
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2091
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2092
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2093
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2094
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2095
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2096
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2097
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2098
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2099
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36>
2100
struct Templates36 {
2101
  typedef TemplateSel Head;
2102
  typedef Templates35
2103
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2104
      T29, T30, T31, T32, T33, T34, T35, T36> Tail;
2105
};
2106
 
2107
template 
2108
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2109
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2110
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2111
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2112
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2113
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2114
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2115
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2116
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2117
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2118
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2119
    GTEST_TEMPLATE_ T37>
2120
struct Templates37 {
2121
  typedef TemplateSel Head;
2122
  typedef Templates36
2123
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2124
      T29, T30, T31, T32, T33, T34, T35, T36, T37> Tail;
2125
};
2126
 
2127
template 
2128
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2129
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2130
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2131
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2132
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2133
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2134
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2135
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2136
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2137
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2138
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2139
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38>
2140
struct Templates38 {
2141
  typedef TemplateSel Head;
2142
  typedef Templates37
2143
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2144
      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail;
2145
};
2146
 
2147
template 
2148
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2149
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2150
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2151
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2152
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2153
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2154
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2155
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2156
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2157
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2158
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2159
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39>
2160
struct Templates39 {
2161
  typedef TemplateSel Head;
2162
  typedef Templates38
2163
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2164
      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail;
2165
};
2166
 
2167
template 
2168
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2169
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2170
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2171
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2172
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2173
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2174
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2175
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2176
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2177
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2178
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2179
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
2180
    GTEST_TEMPLATE_ T40>
2181
struct Templates40 {
2182
  typedef TemplateSel Head;
2183
  typedef Templates39
2184
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2185
      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail;
2186
};
2187
 
2188
template 
2189
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2190
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2191
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2192
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2193
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2194
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2195
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2196
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2197
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2198
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2199
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2200
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
2201
    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41>
2202
struct Templates41 {
2203
  typedef TemplateSel Head;
2204
  typedef Templates40
2205
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2206
      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail;
2207
};
2208
 
2209
template 
2210
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2211
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2212
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2213
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2214
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2215
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2216
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2217
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2218
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2219
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2220
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2221
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
2222
    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42>
2223
struct Templates42 {
2224
  typedef TemplateSel Head;
2225
  typedef Templates41
2226
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2227
      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
2228
      T42> Tail;
2229
};
2230
 
2231
template 
2232
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2233
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2234
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2235
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2236
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2237
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2238
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2239
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2240
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2241
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2242
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2243
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
2244
    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
2245
    GTEST_TEMPLATE_ T43>
2246
struct Templates43 {
2247
  typedef TemplateSel Head;
2248
  typedef Templates42
2249
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2250
      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
2251
      T43> Tail;
2252
};
2253
 
2254
template 
2255
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2256
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2257
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2258
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2259
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2260
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2261
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2262
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2263
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2264
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2265
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2266
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
2267
    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
2268
    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44>
2269
struct Templates44 {
2270
  typedef TemplateSel Head;
2271
  typedef Templates43
2272
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2273
      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
2274
      T43, T44> Tail;
2275
};
2276
 
2277
template 
2278
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2279
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2280
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2281
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2282
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2283
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2284
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2285
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2286
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2287
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2288
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2289
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
2290
    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
2291
    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45>
2292
struct Templates45 {
2293
  typedef TemplateSel Head;
2294
  typedef Templates44
2295
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2296
      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
2297
      T43, T44, T45> Tail;
2298
};
2299
 
2300
template 
2301
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2302
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2303
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2304
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2305
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2306
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2307
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2308
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2309
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2310
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2311
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2312
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
2313
    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
2314
    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
2315
    GTEST_TEMPLATE_ T46>
2316
struct Templates46 {
2317
  typedef TemplateSel Head;
2318
  typedef Templates45
2319
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2320
      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
2321
      T43, T44, T45, T46> Tail;
2322
};
2323
 
2324
template 
2325
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2326
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2327
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2328
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2329
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2330
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2331
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2332
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2333
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2334
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2335
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2336
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
2337
    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
2338
    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
2339
    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47>
2340
struct Templates47 {
2341
  typedef TemplateSel Head;
2342
  typedef Templates46
2343
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2344
      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
2345
      T43, T44, T45, T46, T47> Tail;
2346
};
2347
 
2348
template 
2349
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2350
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2351
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2352
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2353
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2354
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2355
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2356
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2357
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2358
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2359
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2360
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
2361
    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
2362
    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
2363
    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48>
2364
struct Templates48 {
2365
  typedef TemplateSel Head;
2366
  typedef Templates47
2367
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2368
      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
2369
      T43, T44, T45, T46, T47, T48> Tail;
2370
};
2371
 
2372
template 
2373
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2374
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2375
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2376
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2377
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2378
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2379
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2380
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2381
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2382
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2383
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2384
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
2385
    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
2386
    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
2387
    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
2388
    GTEST_TEMPLATE_ T49>
2389
struct Templates49 {
2390
  typedef TemplateSel Head;
2391
  typedef Templates48
2392
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2393
      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
2394
      T43, T44, T45, T46, T47, T48, T49> Tail;
2395
};
2396
 
2397
template 
2398
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2399
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2400
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2401
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2402
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2403
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2404
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2405
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2406
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2407
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2408
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
2409
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
2410
    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
2411
    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
2412
    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
2413
    GTEST_TEMPLATE_ T49, GTEST_TEMPLATE_ T50>
2414
struct Templates50 {
2415
  typedef TemplateSel Head;
2416
  typedef Templates49
2417
      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2418
      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
2419
      T43, T44, T45, T46, T47, T48, T49, T50> Tail;
2420
};
2421
 
2422
 
2423
// We don't want to require the users to write TemplatesN<...> directly,
2424
// as that would require them to count the length.  Templates<...> is much
2425
// easier to write, but generates horrible messages when there is a
2426
// compiler error, as gcc insists on printing out each template
2427
// argument, even if it has the default value (this means Templates
2428
// will appear as Templates in the compiler
2429
// errors).
2430
//
2431
// Our solution is to combine the best part of the two approaches: a
2432
// user would write Templates, and Google Test will translate
2433
// that to TemplatesN internally to make error messages
2434
// readable.  The translation is done by the 'type' member of the
2435
// Templates template.
2436
template 
2437
    GTEST_TEMPLATE_ T3 = NoneT, GTEST_TEMPLATE_ T4 = NoneT,
2438
    GTEST_TEMPLATE_ T5 = NoneT, GTEST_TEMPLATE_ T6 = NoneT,
2439
    GTEST_TEMPLATE_ T7 = NoneT, GTEST_TEMPLATE_ T8 = NoneT,
2440
    GTEST_TEMPLATE_ T9 = NoneT, GTEST_TEMPLATE_ T10 = NoneT,
2441
    GTEST_TEMPLATE_ T11 = NoneT, GTEST_TEMPLATE_ T12 = NoneT,
2442
    GTEST_TEMPLATE_ T13 = NoneT, GTEST_TEMPLATE_ T14 = NoneT,
2443
    GTEST_TEMPLATE_ T15 = NoneT, GTEST_TEMPLATE_ T16 = NoneT,
2444
    GTEST_TEMPLATE_ T17 = NoneT, GTEST_TEMPLATE_ T18 = NoneT,
2445
    GTEST_TEMPLATE_ T19 = NoneT, GTEST_TEMPLATE_ T20 = NoneT,
2446
    GTEST_TEMPLATE_ T21 = NoneT, GTEST_TEMPLATE_ T22 = NoneT,
2447
    GTEST_TEMPLATE_ T23 = NoneT, GTEST_TEMPLATE_ T24 = NoneT,
2448
    GTEST_TEMPLATE_ T25 = NoneT, GTEST_TEMPLATE_ T26 = NoneT,
2449
    GTEST_TEMPLATE_ T27 = NoneT, GTEST_TEMPLATE_ T28 = NoneT,
2450
    GTEST_TEMPLATE_ T29 = NoneT, GTEST_TEMPLATE_ T30 = NoneT,
2451
    GTEST_TEMPLATE_ T31 = NoneT, GTEST_TEMPLATE_ T32 = NoneT,
2452
    GTEST_TEMPLATE_ T33 = NoneT, GTEST_TEMPLATE_ T34 = NoneT,
2453
    GTEST_TEMPLATE_ T35 = NoneT, GTEST_TEMPLATE_ T36 = NoneT,
2454
    GTEST_TEMPLATE_ T37 = NoneT, GTEST_TEMPLATE_ T38 = NoneT,
2455
    GTEST_TEMPLATE_ T39 = NoneT, GTEST_TEMPLATE_ T40 = NoneT,
2456
    GTEST_TEMPLATE_ T41 = NoneT, GTEST_TEMPLATE_ T42 = NoneT,
2457
    GTEST_TEMPLATE_ T43 = NoneT, GTEST_TEMPLATE_ T44 = NoneT,
2458
    GTEST_TEMPLATE_ T45 = NoneT, GTEST_TEMPLATE_ T46 = NoneT,
2459
    GTEST_TEMPLATE_ T47 = NoneT, GTEST_TEMPLATE_ T48 = NoneT,
2460
    GTEST_TEMPLATE_ T49 = NoneT, GTEST_TEMPLATE_ T50 = NoneT>
2461
struct Templates {
2462
  typedef Templates50
2463
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
2464
      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
2465
      T42, T43, T44, T45, T46, T47, T48, T49, T50> type;
2466
};
2467
 
2468
template <>
2469
struct Templates
2470
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2471
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2472
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2473
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2474
    NoneT> {
2475
  typedef Templates0 type;
2476
};
2477
template 
2478
struct Templates
2479
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2480
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2481
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2482
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2483
    NoneT> {
2484
  typedef Templates1 type;
2485
};
2486
template 
2487
struct Templates
2488
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2489
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2490
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2491
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2492
    NoneT> {
2493
  typedef Templates2 type;
2494
};
2495
template 
2496
struct Templates
2497
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2498
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2499
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2500
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2501
  typedef Templates3 type;
2502
};
2503
template 
2504
    GTEST_TEMPLATE_ T4>
2505
struct Templates
2506
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2507
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2508
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2509
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2510
  typedef Templates4 type;
2511
};
2512
template 
2513
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5>
2514
struct Templates
2515
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2516
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2517
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2518
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2519
  typedef Templates5 type;
2520
};
2521
template 
2522
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6>
2523
struct Templates
2524
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2525
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2526
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2527
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2528
  typedef Templates6 type;
2529
};
2530
template 
2531
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2532
    GTEST_TEMPLATE_ T7>
2533
struct Templates
2534
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2535
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2536
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2537
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2538
  typedef Templates7 type;
2539
};
2540
template 
2541
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2542
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8>
2543
struct Templates
2544
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2545
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2546
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2547
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2548
  typedef Templates8 type;
2549
};
2550
template 
2551
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2552
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9>
2553
struct Templates
2554
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2555
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2556
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2557
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2558
  typedef Templates9 type;
2559
};
2560
template 
2561
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2562
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2563
    GTEST_TEMPLATE_ T10>
2564
struct Templates
2565
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2566
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2567
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2568
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2569
  typedef Templates10 type;
2570
};
2571
template 
2572
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2573
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2574
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11>
2575
struct Templates
2576
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2577
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2578
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2579
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2580
  typedef Templates11 type;
2581
};
2582
template 
2583
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2584
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2585
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12>
2586
struct Templates
2587
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2588
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2589
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2590
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2591
  typedef Templates12 type;
2592
};
2593
template 
2594
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2595
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2596
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2597
    GTEST_TEMPLATE_ T13>
2598
struct Templates
2599
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2600
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2601
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2602
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2603
  typedef Templates13
2604
      T13> type;
2605
};
2606
template 
2607
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2608
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2609
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2610
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14>
2611
struct Templates
2612
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2613
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2614
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2615
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2616
  typedef Templates14
2617
      T14> type;
2618
};
2619
template 
2620
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2621
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2622
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2623
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15>
2624
struct Templates
2625
    T15, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2626
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2627
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2628
    NoneT, NoneT, NoneT, NoneT, NoneT> {
2629
  typedef Templates15
2630
      T14, T15> type;
2631
};
2632
template 
2633
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2634
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2635
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2636
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2637
    GTEST_TEMPLATE_ T16>
2638
struct Templates
2639
    T15, T16, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2640
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2641
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2642
    NoneT, NoneT, NoneT, NoneT, NoneT> {
2643
  typedef Templates16
2644
      T14, T15, T16> type;
2645
};
2646
template 
2647
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2648
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2649
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2650
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2651
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17>
2652
struct Templates
2653
    T15, T16, T17, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2654
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2655
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2656
    NoneT, NoneT, NoneT, NoneT, NoneT> {
2657
  typedef Templates17
2658
      T14, T15, T16, T17> type;
2659
};
2660
template 
2661
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2662
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2663
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2664
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2665
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18>
2666
struct Templates
2667
    T15, T16, T17, T18, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2668
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2669
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2670
    NoneT, NoneT, NoneT, NoneT> {
2671
  typedef Templates18
2672
      T14, T15, T16, T17, T18> type;
2673
};
2674
template 
2675
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2676
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2677
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2678
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2679
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2680
    GTEST_TEMPLATE_ T19>
2681
struct Templates
2682
    T15, T16, T17, T18, T19, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2683
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2684
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2685
    NoneT, NoneT, NoneT, NoneT> {
2686
  typedef Templates19
2687
      T14, T15, T16, T17, T18, T19> type;
2688
};
2689
template 
2690
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2691
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2692
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2693
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2694
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2695
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20>
2696
struct Templates
2697
    T15, T16, T17, T18, T19, T20, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2698
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2699
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2700
    NoneT, NoneT, NoneT, NoneT> {
2701
  typedef Templates20
2702
      T14, T15, T16, T17, T18, T19, T20> type;
2703
};
2704
template 
2705
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2706
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2707
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2708
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2709
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2710
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21>
2711
struct Templates
2712
    T15, T16, T17, T18, T19, T20, T21, NoneT, NoneT, NoneT, NoneT, NoneT,
2713
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2714
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2715
    NoneT, NoneT, NoneT, NoneT> {
2716
  typedef Templates21
2717
      T14, T15, T16, T17, T18, T19, T20, T21> type;
2718
};
2719
template 
2720
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2721
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2722
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2723
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2724
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2725
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2726
    GTEST_TEMPLATE_ T22>
2727
struct Templates
2728
    T15, T16, T17, T18, T19, T20, T21, T22, NoneT, NoneT, NoneT, NoneT, NoneT,
2729
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2730
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2731
    NoneT, NoneT, NoneT> {
2732
  typedef Templates22
2733
      T14, T15, T16, T17, T18, T19, T20, T21, T22> type;
2734
};
2735
template 
2736
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2737
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2738
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2739
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2740
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2741
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2742
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23>
2743
struct Templates
2744
    T15, T16, T17, T18, T19, T20, T21, T22, T23, NoneT, NoneT, NoneT, NoneT,
2745
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2746
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2747
    NoneT, NoneT, NoneT> {
2748
  typedef Templates23
2749
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> type;
2750
};
2751
template 
2752
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2753
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2754
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2755
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2756
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2757
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2758
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24>
2759
struct Templates
2760
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, NoneT, NoneT, NoneT,
2761
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2762
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2763
    NoneT, NoneT, NoneT> {
2764
  typedef Templates24
2765
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> type;
2766
};
2767
template 
2768
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2769
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2770
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2771
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2772
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2773
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2774
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2775
    GTEST_TEMPLATE_ T25>
2776
struct Templates
2777
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, NoneT, NoneT, NoneT,
2778
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2779
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2780
    NoneT, NoneT> {
2781
  typedef Templates25
2782
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> type;
2783
};
2784
template 
2785
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2786
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2787
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2788
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2789
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2790
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2791
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2792
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26>
2793
struct Templates
2794
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, NoneT, NoneT,
2795
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2796
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2797
    NoneT, NoneT> {
2798
  typedef Templates26
2799
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> type;
2800
};
2801
template 
2802
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2803
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2804
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2805
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2806
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2807
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2808
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2809
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27>
2810
struct Templates
2811
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, NoneT,
2812
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2813
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2814
    NoneT, NoneT> {
2815
  typedef Templates27
2816
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
2817
      T27> type;
2818
};
2819
template 
2820
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2821
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2822
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2823
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2824
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2825
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2826
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2827
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2828
    GTEST_TEMPLATE_ T28>
2829
struct Templates
2830
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
2831
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2832
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2833
    NoneT, NoneT> {
2834
  typedef Templates28
2835
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
2836
      T28> type;
2837
};
2838
template 
2839
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2840
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2841
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2842
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2843
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2844
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2845
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2846
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2847
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29>
2848
struct Templates
2849
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
2850
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2851
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2852
    NoneT> {
2853
  typedef Templates29
2854
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
2855
      T28, T29> type;
2856
};
2857
template 
2858
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2859
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2860
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2861
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2862
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2863
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2864
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2865
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2866
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30>
2867
struct Templates
2868
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
2869
    T30, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2870
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2871
  typedef Templates30
2872
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
2873
      T28, T29, T30> type;
2874
};
2875
template 
2876
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2877
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2878
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2879
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2880
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2881
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2882
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2883
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2884
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2885
    GTEST_TEMPLATE_ T31>
2886
struct Templates
2887
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
2888
    T30, T31, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2889
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2890
  typedef Templates31
2891
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
2892
      T28, T29, T30, T31> type;
2893
};
2894
template 
2895
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2896
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2897
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2898
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2899
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2900
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2901
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2902
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2903
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2904
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32>
2905
struct Templates
2906
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
2907
    T30, T31, T32, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2908
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2909
  typedef Templates32
2910
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
2911
      T28, T29, T30, T31, T32> type;
2912
};
2913
template 
2914
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2915
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2916
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2917
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2918
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2919
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2920
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2921
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2922
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2923
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33>
2924
struct Templates
2925
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
2926
    T30, T31, T32, T33, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2927
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2928
  typedef Templates33
2929
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
2930
      T28, T29, T30, T31, T32, T33> type;
2931
};
2932
template 
2933
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2934
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2935
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2936
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2937
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2938
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2939
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2940
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2941
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2942
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2943
    GTEST_TEMPLATE_ T34>
2944
struct Templates
2945
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
2946
    T30, T31, T32, T33, T34, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2947
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2948
  typedef Templates34
2949
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
2950
      T28, T29, T30, T31, T32, T33, T34> type;
2951
};
2952
template 
2953
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2954
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2955
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2956
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2957
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2958
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2959
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2960
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2961
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2962
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2963
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35>
2964
struct Templates
2965
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
2966
    T30, T31, T32, T33, T34, T35, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
2967
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2968
  typedef Templates35
2969
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
2970
      T28, T29, T30, T31, T32, T33, T34, T35> type;
2971
};
2972
template 
2973
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2974
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2975
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2976
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2977
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2978
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2979
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
2980
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
2981
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
2982
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
2983
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36>
2984
struct Templates
2985
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
2986
    T30, T31, T32, T33, T34, T35, T36, NoneT, NoneT, NoneT, NoneT, NoneT,
2987
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
2988
  typedef Templates36
2989
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
2990
      T28, T29, T30, T31, T32, T33, T34, T35, T36> type;
2991
};
2992
template 
2993
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
2994
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
2995
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
2996
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
2997
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
2998
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
2999
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3000
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3001
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3002
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3003
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3004
    GTEST_TEMPLATE_ T37>
3005
struct Templates
3006
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3007
    T30, T31, T32, T33, T34, T35, T36, T37, NoneT, NoneT, NoneT, NoneT, NoneT,
3008
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
3009
  typedef Templates37
3010
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3011
      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> type;
3012
};
3013
template 
3014
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3015
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3016
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3017
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3018
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3019
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3020
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3021
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3022
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3023
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3024
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3025
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38>
3026
struct Templates
3027
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3028
    T30, T31, T32, T33, T34, T35, T36, T37, T38, NoneT, NoneT, NoneT, NoneT,
3029
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
3030
  typedef Templates38
3031
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3032
      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> type;
3033
};
3034
template 
3035
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3036
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3037
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3038
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3039
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3040
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3041
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3042
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3043
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3044
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3045
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3046
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39>
3047
struct Templates
3048
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3049
    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, NoneT, NoneT, NoneT,
3050
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
3051
  typedef Templates39
3052
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3053
      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> type;
3054
};
3055
template 
3056
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3057
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3058
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3059
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3060
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3061
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3062
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3063
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3064
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3065
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3066
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3067
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
3068
    GTEST_TEMPLATE_ T40>
3069
struct Templates
3070
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3071
    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, NoneT, NoneT, NoneT,
3072
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
3073
  typedef Templates40
3074
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3075
      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> type;
3076
};
3077
template 
3078
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3079
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3080
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3081
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3082
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3083
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3084
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3085
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3086
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3087
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3088
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3089
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
3090
    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41>
3091
struct Templates
3092
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3093
    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, NoneT, NoneT,
3094
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
3095
  typedef Templates41
3096
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3097
      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
3098
      T41> type;
3099
};
3100
template 
3101
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3102
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3103
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3104
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3105
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3106
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3107
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3108
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3109
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3110
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3111
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3112
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
3113
    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42>
3114
struct Templates
3115
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3116
    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, NoneT,
3117
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
3118
  typedef Templates42
3119
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3120
      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
3121
      T42> type;
3122
};
3123
template 
3124
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3125
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3126
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3127
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3128
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3129
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3130
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3131
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3132
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3133
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3134
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3135
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
3136
    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
3137
    GTEST_TEMPLATE_ T43>
3138
struct Templates
3139
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3140
    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
3141
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
3142
  typedef Templates43
3143
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3144
      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
3145
      T42, T43> type;
3146
};
3147
template 
3148
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3149
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3150
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3151
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3152
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3153
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3154
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3155
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3156
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3157
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3158
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3159
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
3160
    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
3161
    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44>
3162
struct Templates
3163
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3164
    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
3165
    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
3166
  typedef Templates44
3167
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3168
      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
3169
      T42, T43, T44> type;
3170
};
3171
template 
3172
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3173
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3174
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3175
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3176
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3177
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3178
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3179
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3180
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3181
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3182
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3183
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
3184
    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
3185
    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45>
3186
struct Templates
3187
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3188
    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
3189
    T45, NoneT, NoneT, NoneT, NoneT, NoneT> {
3190
  typedef Templates45
3191
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3192
      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
3193
      T42, T43, T44, T45> type;
3194
};
3195
template 
3196
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3197
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3198
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3199
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3200
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3201
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3202
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3203
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3204
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3205
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3206
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3207
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
3208
    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
3209
    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
3210
    GTEST_TEMPLATE_ T46>
3211
struct Templates
3212
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3213
    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
3214
    T45, T46, NoneT, NoneT, NoneT, NoneT> {
3215
  typedef Templates46
3216
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3217
      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
3218
      T42, T43, T44, T45, T46> type;
3219
};
3220
template 
3221
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3222
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3223
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3224
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3225
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3226
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3227
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3228
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3229
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3230
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3231
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3232
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
3233
    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
3234
    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
3235
    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47>
3236
struct Templates
3237
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3238
    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
3239
    T45, T46, T47, NoneT, NoneT, NoneT> {
3240
  typedef Templates47
3241
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3242
      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
3243
      T42, T43, T44, T45, T46, T47> type;
3244
};
3245
template 
3246
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3247
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3248
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3249
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3250
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3251
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3252
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3253
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3254
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3255
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3256
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3257
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
3258
    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
3259
    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
3260
    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48>
3261
struct Templates
3262
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3263
    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
3264
    T45, T46, T47, T48, NoneT, NoneT> {
3265
  typedef Templates48
3266
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3267
      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
3268
      T42, T43, T44, T45, T46, T47, T48> type;
3269
};
3270
template 
3271
    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
3272
    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
3273
    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
3274
    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
3275
    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
3276
    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
3277
    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
3278
    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
3279
    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
3280
    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
3281
    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
3282
    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
3283
    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
3284
    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
3285
    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
3286
    GTEST_TEMPLATE_ T49>
3287
struct Templates
3288
    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3289
    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
3290
    T45, T46, T47, T48, T49, NoneT> {
3291
  typedef Templates49
3292
      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
3293
      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
3294
      T42, T43, T44, T45, T46, T47, T48, T49> type;
3295
};
3296
 
3297
// The TypeList template makes it possible to use either a single type
3298
// or a Types<...> list in TYPED_TEST_CASE() and
3299
// INSTANTIATE_TYPED_TEST_CASE_P().
3300
 
3301
template 
3302
struct TypeList {
3303
  typedef Types1 type;
3304
};
3305
 
3306
template 
3307
    typename T6, typename T7, typename T8, typename T9, typename T10,
3308
    typename T11, typename T12, typename T13, typename T14, typename T15,
3309
    typename T16, typename T17, typename T18, typename T19, typename T20,
3310
    typename T21, typename T22, typename T23, typename T24, typename T25,
3311
    typename T26, typename T27, typename T28, typename T29, typename T30,
3312
    typename T31, typename T32, typename T33, typename T34, typename T35,
3313
    typename T36, typename T37, typename T38, typename T39, typename T40,
3314
    typename T41, typename T42, typename T43, typename T44, typename T45,
3315
    typename T46, typename T47, typename T48, typename T49, typename T50>
3316
struct TypeList
3317
    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3318
    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
3319
    T44, T45, T46, T47, T48, T49, T50> > {
3320
  typedef typename Types
3321
      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
3322
      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
3323
      T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>::type type;
3324
};
3325
 
3326
#endif  // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
3327
 
3328
}  // namespace internal
3329
}  // namespace testing
3330
 
3331
#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_