jieba-rb 5.0.0

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