Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

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