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