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