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