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