#### /Unittests/googletest/include/gtest/internal/gtest-type-util.h

C++ Header | 3321 lines | 3077 code | 137 blank | 107 comment | 2 complexity | 2fdcedd689e1d34a38c667fe7ac38c15 MD5 | raw file

Large files files are truncated, but you can click here to view the full file

1// This file was GENERATED by a script. DO NOT EDIT BY HAND!!! 2 3// Copyright 2008 Google Inc. 4// All Rights Reserved. 5// 6// Redistribution and use in source and binary forms, with or without 7// modification, are permitted provided that the following conditions are 8// met: 9// 10// * Redistributions of source code must retain the above copyright 11// notice, this list of conditions and the following disclaimer. 12// * Redistributions in binary form must reproduce the above 13// copyright notice, this list of conditions and the following disclaimer 14// in the documentation and/or other materials provided with the 15// distribution. 16// * Neither the name of Google Inc. nor the names of its 17// contributors may be used to endorse or promote products derived from 18// this software without specific prior written permission. 19// 20// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31// 32// Author: wan@google.com (Zhanyong Wan) 33 34// Type utilities needed for implementing typed and type-parameterized 35// tests. This file is generated by a SCRIPT. DO NOT EDIT BY HAND! 36// 37// Currently we support at most 50 types in a list, and at most 50 38// type-parameterized tests in one type-parameterized test case. 39// Please contact googletestframework@googlegroups.com if you need 40// more. 41 42#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ 43#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ 44 45#include <gtest/internal/gtest-port.h> 46#include <gtest/internal/gtest-string.h> 47 48#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P 49 50// #ifdef __GNUC__ 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 56#include <typeinfo> 57 58namespace testing { 59namespace internal { 60 61// AssertyTypeEq<T1, T2>::type is defined iff T1 and T2 are the same 62// type. This can be used as a compile-time assertion to ensure that 63// two types are equal. 64 65template <typename T1, typename T2> 66struct AssertTypeEq; 67 68template <typename T> 69struct AssertTypeEq<T, T> { 70 typedef bool type; 71}; 72 73// GetTypeName<T>() returns a human-readable name of type T. 74template <typename T> 75String GetTypeName() { 76#if GTEST_HAS_RTTI 77 78 const char* const name = typeid(T).name(); 79#ifdef __GLIBCXX__ 80 int status = 0; 81 // gcc's implementation of typeid(T).name() mangles the type name, 82 // so we have to demangle it. 83 char* const readable_name = abi::__cxa_demangle(name, 0, 0, &status); 84 const String name_str(status == 0 ? readable_name : name); 85 free(readable_name); 86 return name_str; 87#else 88 return name; 89#endif // __GLIBCXX__ 90 91#else 92 return "<type>"; 93#endif // GTEST_HAS_RTTI 94} 95 96// A unique type used as the default value for the arguments of class 97// template Types. This allows us to simulate variadic templates 98// (e.g. Types<int>, Type<int, double>, and etc), which C++ doesn't 99// support directly. 100struct None {}; 101 102// The following family of struct and struct templates are used to 103// represent type lists. In particular, TypesN<T1, T2, ..., TN> 104// represents a type list with N types (T1, T2, ..., and TN) in it. 105// Except for Types0, every struct in the family has two member types: 106// Head for the first type in the list, and Tail for the rest of the 107// list. 108 109// The empty type list. 110struct Types0 {}; 111 112// Type lists of length 1, 2, 3, and so on. 113 114template <typename T1> 115struct Types1 { 116 typedef T1 Head; 117 typedef Types0 Tail; 118}; 119template <typename T1, typename T2> 120struct Types2 { 121 typedef T1 Head; 122 typedef Types1<T2> Tail; 123}; 124 125template <typename T1, typename T2, typename T3> 126struct Types3 { 127 typedef T1 Head; 128 typedef Types2<T2, T3> Tail; 129}; 130 131template <typename T1, typename T2, typename T3, typename T4> 132struct Types4 { 133 typedef T1 Head; 134 typedef Types3<T2, T3, T4> Tail; 135}; 136 137template <typename T1, typename T2, typename T3, typename T4, typename T5> 138struct Types5 { 139 typedef T1 Head; 140 typedef Types4<T2, T3, T4, T5> Tail; 141}; 142 143template <typename T1, typename T2, typename T3, typename T4, typename T5, 144 typename T6> 145struct Types6 { 146 typedef T1 Head; 147 typedef Types5<T2, T3, T4, T5, T6> Tail; 148}; 149 150template <typename T1, typename T2, typename T3, typename T4, typename T5, 151 typename T6, typename T7> 152struct Types7 { 153 typedef T1 Head; 154 typedef Types6<T2, T3, T4, T5, T6, T7> Tail; 155}; 156 157template <typename T1, typename T2, typename T3, typename T4, typename T5, 158 typename T6, typename T7, typename T8> 159struct Types8 { 160 typedef T1 Head; 161 typedef Types7<T2, T3, T4, T5, T6, T7, T8> Tail; 162}; 163 164template <typename T1, typename T2, typename T3, typename T4, typename T5, 165 typename T6, typename T7, typename T8, typename T9> 166struct Types9 { 167 typedef T1 Head; 168 typedef Types8<T2, T3, T4, T5, T6, T7, T8, T9> Tail; 169}; 170 171template <typename T1, typename T2, typename T3, typename T4, typename T5, 172 typename T6, typename T7, typename T8, typename T9, typename T10> 173struct Types10 { 174 typedef T1 Head; 175 typedef Types9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail; 176}; 177 178template <typename T1, typename T2, typename T3, typename T4, typename T5, 179 typename T6, typename T7, typename T8, typename T9, typename T10, 180 typename T11> 181struct Types11 { 182 typedef T1 Head; 183 typedef Types10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail; 184}; 185 186template <typename T1, typename T2, typename T3, typename T4, typename T5, 187 typename T6, typename T7, typename T8, typename T9, typename T10, 188 typename T11, typename T12> 189struct Types12 { 190 typedef T1 Head; 191 typedef Types11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail; 192}; 193 194template <typename T1, typename T2, typename T3, typename T4, typename T5, 195 typename T6, typename T7, typename T8, typename T9, typename T10, 196 typename T11, typename T12, typename T13> 197struct Types13 { 198 typedef T1 Head; 199 typedef Types12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail; 200}; 201 202template <typename T1, typename T2, typename T3, typename T4, typename T5, 203 typename T6, typename T7, typename T8, typename T9, typename T10, 204 typename T11, typename T12, typename T13, typename T14> 205struct Types14 { 206 typedef T1 Head; 207 typedef Types13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Tail; 208}; 209 210template <typename T1, typename T2, typename T3, typename T4, typename T5, 211 typename T6, typename T7, typename T8, typename T9, typename T10, 212 typename T11, typename T12, typename T13, typename T14, typename T15> 213struct Types15 { 214 typedef T1 Head; 215 typedef Types14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, 216 T15> Tail; 217}; 218 219template <typename T1, typename T2, typename T3, typename T4, typename T5, 220 typename T6, typename T7, typename T8, typename T9, typename T10, 221 typename T11, typename T12, typename T13, typename T14, typename T15, 222 typename T16> 223struct Types16 { 224 typedef T1 Head; 225 typedef Types15<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 226 T16> Tail; 227}; 228 229template <typename T1, typename T2, typename T3, typename T4, typename T5, 230 typename T6, typename T7, typename T8, typename T9, typename T10, 231 typename T11, typename T12, typename T13, typename T14, typename T15, 232 typename T16, typename T17> 233struct Types17 { 234 typedef T1 Head; 235 typedef Types16<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 236 T16, T17> Tail; 237}; 238 239template <typename T1, typename T2, typename T3, typename T4, typename T5, 240 typename T6, typename T7, typename T8, typename T9, typename T10, 241 typename T11, typename T12, typename T13, typename T14, typename T15, 242 typename T16, typename T17, typename T18> 243struct Types18 { 244 typedef T1 Head; 245 typedef Types17<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 246 T16, T17, T18> Tail; 247}; 248 249template <typename T1, typename T2, typename T3, typename T4, typename T5, 250 typename T6, typename T7, typename T8, typename T9, typename T10, 251 typename T11, typename T12, typename T13, typename T14, typename T15, 252 typename T16, typename T17, typename T18, typename T19> 253struct Types19 { 254 typedef T1 Head; 255 typedef Types18<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 256 T16, T17, T18, T19> Tail; 257}; 258 259template <typename T1, typename T2, typename T3, typename T4, typename T5, 260 typename T6, typename T7, typename T8, typename T9, typename T10, 261 typename T11, typename T12, typename T13, typename T14, typename T15, 262 typename T16, typename T17, typename T18, typename T19, typename T20> 263struct Types20 { 264 typedef T1 Head; 265 typedef Types19<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 266 T16, T17, T18, T19, T20> Tail; 267}; 268 269template <typename T1, typename T2, typename T3, typename T4, typename T5, 270 typename T6, typename T7, typename T8, typename T9, typename T10, 271 typename T11, typename T12, typename T13, typename T14, typename T15, 272 typename T16, typename T17, typename T18, typename T19, typename T20, 273 typename T21> 274struct Types21 { 275 typedef T1 Head; 276 typedef Types20<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 277 T16, T17, T18, T19, T20, T21> Tail; 278}; 279 280template <typename T1, typename T2, typename T3, typename T4, typename T5, 281 typename T6, typename T7, typename T8, typename T9, typename T10, 282 typename T11, typename T12, typename T13, typename T14, typename T15, 283 typename T16, typename T17, typename T18, typename T19, typename T20, 284 typename T21, typename T22> 285struct Types22 { 286 typedef T1 Head; 287 typedef Types21<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 288 T16, T17, T18, T19, T20, T21, T22> Tail; 289}; 290 291template <typename T1, typename T2, typename T3, typename T4, typename T5, 292 typename T6, typename T7, typename T8, typename T9, typename T10, 293 typename T11, typename T12, typename T13, typename T14, typename T15, 294 typename T16, typename T17, typename T18, typename T19, typename T20, 295 typename T21, typename T22, typename T23> 296struct Types23 { 297 typedef T1 Head; 298 typedef Types22<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 299 T16, T17, T18, T19, T20, T21, T22, T23> Tail; 300}; 301 302template <typename T1, typename T2, typename T3, typename T4, typename T5, 303 typename T6, typename T7, typename T8, typename T9, typename T10, 304 typename T11, typename T12, typename T13, typename T14, typename T15, 305 typename T16, typename T17, typename T18, typename T19, typename T20, 306 typename T21, typename T22, typename T23, typename T24> 307struct Types24 { 308 typedef T1 Head; 309 typedef Types23<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 310 T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail; 311}; 312 313template <typename T1, typename T2, typename T3, typename T4, typename T5, 314 typename T6, typename T7, typename T8, typename T9, typename T10, 315 typename T11, typename T12, typename T13, typename T14, typename T15, 316 typename T16, typename T17, typename T18, typename T19, typename T20, 317 typename T21, typename T22, typename T23, typename T24, typename T25> 318struct Types25 { 319 typedef T1 Head; 320 typedef Types24<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 321 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail; 322}; 323 324template <typename T1, typename T2, typename T3, typename T4, typename T5, 325 typename T6, typename T7, typename T8, typename T9, typename T10, 326 typename T11, typename T12, typename T13, typename T14, typename T15, 327 typename T16, typename T17, typename T18, typename T19, typename T20, 328 typename T21, typename T22, typename T23, typename T24, typename T25, 329 typename T26> 330struct Types26 { 331 typedef T1 Head; 332 typedef Types25<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 333 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail; 334}; 335 336template <typename T1, typename T2, typename T3, typename T4, typename T5, 337 typename T6, typename T7, typename T8, typename T9, typename T10, 338 typename T11, typename T12, typename T13, typename T14, typename T15, 339 typename T16, typename T17, typename T18, typename T19, typename T20, 340 typename T21, typename T22, typename T23, typename T24, typename T25, 341 typename T26, typename T27> 342struct Types27 { 343 typedef T1 Head; 344 typedef Types26<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 345 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail; 346}; 347 348template <typename T1, typename T2, typename T3, typename T4, typename T5, 349 typename T6, typename T7, typename T8, typename T9, typename T10, 350 typename T11, typename T12, typename T13, typename T14, typename T15, 351 typename T16, typename T17, typename T18, typename T19, typename T20, 352 typename T21, typename T22, typename T23, typename T24, typename T25, 353 typename T26, typename T27, typename T28> 354struct Types28 { 355 typedef T1 Head; 356 typedef Types27<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 357 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28> Tail; 358}; 359 360template <typename T1, typename T2, typename T3, typename T4, typename T5, 361 typename T6, typename T7, typename T8, typename T9, typename T10, 362 typename T11, typename T12, typename T13, typename T14, typename T15, 363 typename T16, typename T17, typename T18, typename T19, typename T20, 364 typename T21, typename T22, typename T23, typename T24, typename T25, 365 typename T26, typename T27, typename T28, typename T29> 366struct Types29 { 367 typedef T1 Head; 368 typedef Types28<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 369 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 370 T29> Tail; 371}; 372 373template <typename T1, typename T2, typename T3, typename T4, typename T5, 374 typename T6, typename T7, typename T8, typename T9, typename T10, 375 typename T11, typename T12, typename T13, typename T14, typename T15, 376 typename T16, typename T17, typename T18, typename T19, typename T20, 377 typename T21, typename T22, typename T23, typename T24, typename T25, 378 typename T26, typename T27, typename T28, typename T29, typename T30> 379struct Types30 { 380 typedef T1 Head; 381 typedef Types29<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 382 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, 383 T30> Tail; 384}; 385 386template <typename T1, typename T2, typename T3, typename T4, typename T5, 387 typename T6, typename T7, typename T8, typename T9, typename T10, 388 typename T11, typename T12, typename T13, typename T14, typename T15, 389 typename T16, typename T17, typename T18, typename T19, typename T20, 390 typename T21, typename T22, typename T23, typename T24, typename T25, 391 typename T26, typename T27, typename T28, typename T29, typename T30, 392 typename T31> 393struct Types31 { 394 typedef T1 Head; 395 typedef Types30<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 396 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, 397 T30, T31> Tail; 398}; 399 400template <typename T1, typename T2, typename T3, typename T4, typename T5, 401 typename T6, typename T7, typename T8, typename T9, typename T10, 402 typename T11, typename T12, typename T13, typename T14, typename T15, 403 typename T16, typename T17, typename T18, typename T19, typename T20, 404 typename T21, typename T22, typename T23, typename T24, typename T25, 405 typename T26, typename T27, typename T28, typename T29, typename T30, 406 typename T31, typename T32> 407struct Types32 { 408 typedef T1 Head; 409 typedef Types31<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 410 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, 411 T30, T31, T32> Tail; 412}; 413 414template <typename T1, typename T2, typename T3, typename T4, typename T5, 415 typename T6, typename T7, typename T8, typename T9, typename T10, 416 typename T11, typename T12, typename T13, typename T14, typename T15, 417 typename T16, typename T17, typename T18, typename T19, typename T20, 418 typename T21, typename T22, typename T23, typename T24, typename T25, 419 typename T26, typename T27, typename T28, typename T29, typename T30, 420 typename T31, typename T32, typename T33> 421struct Types33 { 422 typedef T1 Head; 423 typedef Types32<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 424 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, 425 T30, T31, T32, T33> Tail; 426}; 427 428template <typename T1, typename T2, typename T3, typename T4, typename T5, 429 typename T6, typename T7, typename T8, typename T9, typename T10, 430 typename T11, typename T12, typename T13, typename T14, typename T15, 431 typename T16, typename T17, typename T18, typename T19, typename T20, 432 typename T21, typename T22, typename T23, typename T24, typename T25, 433 typename T26, typename T27, typename T28, typename T29, typename T30, 434 typename T31, typename T32, typename T33, typename T34> 435struct Types34 { 436 typedef T1 Head; 437 typedef Types33<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 438 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, 439 T30, T31, T32, T33, T34> Tail; 440}; 441 442template <typename T1, typename T2, typename T3, typename T4, typename T5, 443 typename T6, typename T7, typename T8, typename T9, typename T10, 444 typename T11, typename T12, typename T13, typename T14, typename T15, 445 typename T16, typename T17, typename T18, typename T19, typename T20, 446 typename T21, typename T22, typename T23, typename T24, typename T25, 447 typename T26, typename T27, typename T28, typename T29, typename T30, 448 typename T31, typename T32, typename T33, typename T34, typename T35> 449struct Types35 { 450 typedef T1 Head; 451 typedef Types34<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 452 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, 453 T30, T31, T32, T33, T34, T35> Tail; 454}; 455 456template <typename T1, typename T2, typename T3, typename T4, typename T5, 457 typename T6, typename T7, typename T8, typename T9, typename T10, 458 typename T11, typename T12, typename T13, typename T14, typename T15, 459 typename T16, typename T17, typename T18, typename T19, typename T20, 460 typename T21, typename T22, typename T23, typename T24, typename T25, 461 typename T26, typename T27, typename T28, typename T29, typename T30, 462 typename T31, typename T32, typename T33, typename T34, typename T35, 463 typename T36> 464struct Types36 { 465 typedef T1 Head; 466 typedef Types35<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 467 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, 468 T30, T31, T32, T33, T34, T35, T36> Tail; 469}; 470 471template <typename T1, typename T2, typename T3, typename T4, typename T5, 472 typename T6, typename T7, typename T8, typename T9, typename T10, 473 typename T11, typename T12, typename T13, typename T14, typename T15, 474 typename T16, typename T17, typename T18, typename T19, typename T20, 475 typename T21, typename T22, typename T23, typename T24, typename T25, 476 typename T26, typename T27, typename T28, typename T29, typename T30, 477 typename T31, typename T32, typename T33, typename T34, typename T35, 478 typename T36, typename T37> 479struct Types37 { 480 typedef T1 Head; 481 typedef Types36<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 482 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, 483 T30, T31, T32, T33, T34, T35, T36, T37> Tail; 484}; 485 486template <typename T1, typename T2, typename T3, typename T4, typename T5, 487 typename T6, typename T7, typename T8, typename T9, typename T10, 488 typename T11, typename T12, typename T13, typename T14, typename T15, 489 typename T16, typename T17, typename T18, typename T19, typename T20, 490 typename T21, typename T22, typename T23, typename T24, typename T25, 491 typename T26, typename T27, typename T28, typename T29, typename T30, 492 typename T31, typename T32, typename T33, typename T34, typename T35, 493 typename T36, typename T37, typename T38> 494struct Types38 { 495 typedef T1 Head; 496 typedef Types37<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 497 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, 498 T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail; 499}; 500 501template <typename T1, typename T2, typename T3, typename T4, typename T5, 502 typename T6, typename T7, typename T8, typename T9, typename T10, 503 typename T11, typename T12, typename T13, typename T14, typename T15, 504 typename T16, typename T17, typename T18, typename T19, typename T20, 505 typename T21, typename T22, typename T23, typename T24, typename T25, 506 typename T26, typename T27, typename T28, typename T29, typename T30, 507 typename T31, typename T32, typename T33, typename T34, typename T35, 508 typename T36, typename T37, typename T38, typename T39> 509struct Types39 { 510 typedef T1 Head; 511 typedef Types38<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 512 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, 513 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail; 514}; 515 516template <typename T1, typename T2, typename T3, typename T4, typename T5, 517 typename T6, typename T7, typename T8, typename T9, typename T10, 518 typename T11, typename T12, typename T13, typename T14, typename T15, 519 typename T16, typename T17, typename T18, typename T19, typename T20, 520 typename T21, typename T22, typename T23, typename T24, typename T25, 521 typename T26, typename T27, typename T28, typename T29, typename T30, 522 typename T31, typename T32, typename T33, typename T34, typename T35, 523 typename T36, typename T37, typename T38, typename T39, typename T40> 524struct Types40 { 525 typedef T1 Head; 526 typedef Types39<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 527 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, 528 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail; 529}; 530 531template <typename T1, typename T2, typename T3, typename T4, typename T5, 532 typename T6, typename T7, typename T8, typename T9, typename T10, 533 typename T11, typename T12, typename T13, typename T14, typename T15, 534 typename T16, typename T17, typename T18, typename T19, typename T20, 535 typename T21, typename T22, typename T23, typename T24, typename T25, 536 typename T26, typename T27, typename T28, typename T29, typename T30, 537 typename T31, typename T32, typename T33, typename T34, typename T35, 538 typename T36, typename T37, typename T38, typename T39, typename T40, 539 typename T41> 540struct Types41 { 541 typedef T1 Head; 542 typedef Types40<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 543 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, 544 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail; 545}; 546 547template <typename T1, typename T2, typename T3, typename T4, typename T5, 548 typename T6, typename T7, typename T8, typename T9, typename T10, 549 typename T11, typename T12, typename T13, typename T14, typename T15, 550 typename T16, typename T17, typename T18, typename T19, typename T20, 551 typename T21, typename T22, typename T23, typename T24, typename T25, 552 typename T26, typename T27, typename T28, typename T29, typename T30, 553 typename T31, typename T32, typename T33, typename T34, typename T35, 554 typename T36, typename T37, typename T38, typename T39, typename T40, 555 typename T41, typename T42> 556struct Types42 { 557 typedef T1 Head; 558 typedef Types41<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 559 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, 560 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42> Tail; 561}; 562 563template <typename T1, typename T2, typename T3, typename T4, typename T5, 564 typename T6, typename T7, typename T8, typename T9, typename T10, 565 typename T11, typename T12, typename T13, typename T14, typename T15, 566 typename T16, typename T17, typename T18, typename T19, typename T20, 567 typename T21, typename T22, typename T23, typename T24, typename T25, 568 typename T26, typename T27, typename T28, typename T29, typename T30, 569 typename T31, typename T32, typename T33, typename T34, typename T35, 570 typename T36, typename T37, typename T38, typename T39, typename T40, 571 typename T41, typename T42, typename T43> 572struct Types43 { 573 typedef T1 Head; 574 typedef Types42<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 575 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, 576 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, 577 T43> Tail; 578}; 579 580template <typename T1, typename T2, typename T3, typename T4, typename T5, 581 typename T6, typename T7, typename T8, typename T9, typename T10, 582 typename T11, typename T12, typename T13, typename T14, typename T15, 583 typename T16, typename T17, typename T18, typename T19, typename T20, 584 typename T21, typename T22, typename T23, typename T24, typename T25, 585 typename T26, typename T27, typename T28, typename T29, typename T30, 586 typename T31, typename T32, typename T33, typename T34, typename T35, 587 typename T36, typename T37, typename T38, typename T39, typename T40, 588 typename T41, typename T42, typename T43, typename T44> 589struct Types44 { 590 typedef T1 Head; 591 typedef Types43<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 592 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, 593 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 594 T44> Tail; 595}; 596 597template <typename T1, typename T2, typename T3, typename T4, typename T5, 598 typename T6, typename T7, typename T8, typename T9, typename T10, 599 typename T11, typename T12, typename T13, typename T14, typename T15, 600 typename T16, typename T17, typename T18, typename T19, typename T20, 601 typename T21, typename T22, typename T23, typename T24, typename T25, 602 typename T26, typename T27, typename T28, typename T29, typename T30, 603 typename T31, typename T32, typename T33, typename T34, typename T35, 604 typename T36, typename T37, typename T38, typename T39, typename T40, 605 typename T41, typename T42, typename T43, typename T44, typename T45> 606struct Types45 { 607 typedef T1 Head; 608 typedef Types44<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 609 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, 610 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 611 T44, T45> Tail; 612}; 613 614template <typename T1, typename T2, typename T3, typename T4, typename T5, 615 typename T6, typename T7, typename T8, typename T9, typename T10, 616 typename T11, typename T12, typename T13, typename T14, typename T15, 617 typename T16, typename T17, typename T18, typename T19, typename T20, 618 typename T21, typename T22, typename T23, typename T24, typename T25, 619 typename T26, typename T27, typename T28, typename T29, typename T30, 620 typename T31, typename T32, typename T33, typename T34, typename T35, 621 typename T36, typename T37, typename T38, typename T39, typename T40, 622 typename T41, typename T42, typename T43, typename T44, typename T45, 623 typename T46> 624struct Types46 { 625 typedef T1 Head; 626 typedef Types45<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 627 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, 628 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 629 T44, T45, T46> Tail; 630}; 631 632template <typename T1, typename T2, typename T3, typename T4, typename T5, 633 typename T6, typename T7, typename T8, typename T9, typename T10, 634 typename T11, typename T12, typename T13, typename T14, typename T15, 635 typename T16, typename T17, typename T18, typename T19, typename T20, 636 typename T21, typename T22, typename T23, typename T24, typename T25, 637 typename T26, typename T27, typename T28, typename T29, typename T30, 638 typename T31, typename T32, typename T33, typename T34, typename T35, 639 typename T36, typename T37, typename T38, typename T39, typename T40, 640 typename T41, typename T42, typename T43, typename T44, typename T45, 641 typename T46, typename T47> 642struct Types47 { 643 typedef T1 Head; 644 typedef Types46<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 645 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, 646 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 647 T44, T45, T46, T47> Tail; 648}; 649 650template <typename T1, typename T2, typename T3, typename T4, typename T5, 651 typename T6, typename T7, typename T8, typename T9, typename T10, 652 typename T11, typename T12, typename T13, typename T14, typename T15, 653 typename T16, typename T17, typename T18, typename T19, typename T20, 654 typename T21, typename T22, typename T23, typename T24, typename T25, 655 typename T26, typename T27, typename T28, typename T29, typename T30, 656 typename T31, typename T32, typename T33, typename T34, typename T35, 657 typename T36, typename T37, typename T38, typename T39, typename T40, 658 typename T41, typename T42, typename T43, typename T44, typename T45, 659 typename T46, typename T47, typename T48> 660struct Types48 { 661 typedef T1 Head; 662 typedef Types47<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 663 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, 664 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 665 T44, T45, T46, T47, T48> Tail; 666}; 667 668template <typename T1, typename T2, typename T3, typename T4, typename T5, 669 typename T6, typename T7, typename T8, typename T9, typename T10, 670 typename T11, typename T12, typename T13, typename T14, typename T15, 671 typename T16, typename T17, typename T18, typename T19, typename T20, 672 typename T21, typename T22, typename T23, typename T24, typename T25, 673 typename T26, typename T27, typename T28, typename T29, typename T30, 674 typename T31, typename T32, typename T33, typename T34, typename T35, 675 typename T36, typename T37, typename T38, typename T39, typename T40, 676 typename T41, typename T42, typename T43, typename T44, typename T45, 677 typename T46, typename T47, typename T48, typename T49> 678struct Types49 { 679 typedef T1 Head; 680 typedef Types48<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 681 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, 682 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 683 T44, T45, T46, T47, T48, T49> Tail; 684}; 685 686template <typename T1, typename T2, typename T3, typename T4, typename T5, 687 typename T6, typename T7, typename T8, typename T9, typename T10, 688 typename T11, typename T12, typename T13, typename T14, typename T15, 689 typename T16, typename T17, typename T18, typename T19, typename T20, 690 typename T21, typename T22, typename T23, typename T24, typename T25, 691 typename T26, typename T27, typename T28, typename T29, typename T30, 692 typename T31, typename T32, typename T33, typename T34, typename T35, 693 typename T36, typename T37, typename T38, typename T39, typename T40, 694 typename T41, typename T42, typename T43, typename T44, typename T45, 695 typename T46, typename T47, typename T48, typename T49, typename T50> 696struct Types50 { 697 typedef T1 Head; 698 typedef Types49<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 699 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, 700 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 701 T44, T45, T46, T47, T48, T49, T50> Tail; 702}; 703 704 705} // namespace internal 706 707// We don't want to require the users to write TypesN<...> directly, 708// as that would require them to count the length. Types<...> is much 709// easier to write, but generates horrible messages when there is a 710// compiler error, as gcc insists on printing out each template 711// argument, even if it has the default value (this means Types<int> 712// will appear as Types<int, None, None, ..., None> in the compiler 713// errors). 714// 715// Our solution is to combine the best part of the two approaches: a 716// user would write Types<T1, ..., TN>, and Google Test will translate 717// that to TypesN<T1, ..., TN> internally to make error messages 718// readable. The translation is done by the 'type' member of the 719// Types template. 720template <typename T1 = internal::None, typename T2 = internal::None, 721 typename T3 = internal::None, typename T4 = internal::None, 722 typename T5 = internal::None, typename T6 = internal::None, 723 typename T7 = internal::None, typename T8 = internal::None, 724 typename T9 = internal::None, typename T10 = internal::None, 725 typename T11 = internal::None, typename T12 = internal::None, 726 typename T13 = internal::None, typename T14 = internal::None, 727 typename T15 = internal::None, typename T16 = internal::None, 728 typename T17 = internal::None, typename T18 = internal::None, 729 typename T19 = internal::None, typename T20 = internal::None, 730 typename T21 = internal::None, typename T22 = internal::None, 731 typename T23 = internal::None, typename T24 = internal::None, 732 typename T25 = internal::None, typename T26 = internal::None, 733 typename T27 = internal::None, typename T28 = internal::None, 734 typename T29 = internal::None, typename T30 = internal::None, 735 typename T31 = internal::None, typename T32 = internal::None, 736 typename T33 = internal::None, typename T34 = internal::None, 737 typename T35 = internal::None, typename T36 = internal::None, 738 typename T37 = internal::None, typename T38 = internal::None, 739 typename T39 = internal::None, typename T40 = internal::None, 740 typename T41 = internal::None, typename T42 = internal::None, 741 typename T43 = internal::None, typename T44 = internal::None, 742 typename T45 = internal::None, typename T46 = internal::None, 743 typename T47 = internal::None, typename T48 = internal::None, 744 typename T49 = internal::None, typename T50 = internal::None> 745struct Types { 746 typedef internal::Types50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, 747 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, 748 T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, 749 T41, T42, T43, T44, T45, T46, T47, T48, T49, T50> type; 750}; 751 752template <> 753struct Types<internal::None, internal::None, internal::None, internal::None, 754 internal::None, internal::None, internal::None, internal::None, 755 internal::None, internal::None, internal::None, internal::None, 756 internal::None, internal::None, internal::None, internal::None, 757 internal::None, internal::None, internal::None, internal::None, 758 internal::None, internal::None, internal::None, internal::None, 759 internal::None, internal::None, internal::None, internal::None, 760 internal::None, internal::None, internal::None, internal::None, 761 internal::None, internal::None, internal::None, internal::None, 762 internal::None, internal::None, internal::None, internal::None, 763 internal::None, internal::None, internal::None, internal::None, 764 internal::None, internal::None, internal::None, internal::None, 765 internal::None, internal::None> { 766 typedef internal::Types0 type; 767}; 768template <typename T1> 769struct Types<T1, internal::None, internal::None, internal::None, 770 internal::None, internal::None, internal::None, internal::None, 771 internal::None, internal::None, internal::None, internal::None, 772 internal::None, internal::None, internal::None, internal::None, 773 internal::None, internal::None, internal::None, internal::None, 774 internal::None, internal::None, internal::None, internal::None, 775 internal::None, internal::None, internal::None, internal::None, 776 internal::None, internal::None, internal::None, internal::None, 777 internal::None, internal::None, internal::None, internal::None, 778 internal::None, internal::None, internal::None, internal::None, 779 internal::None, internal::None, internal::None, internal::None, 780 internal::None, internal::None, internal::None, internal::None, 781 internal::None, internal::None> { 782 typedef internal::Types1<T1> type; 783}; 784template <typename T1, typename T2> 785struct Types<T1, T2, internal::None, internal::None, internal::None, 786 internal::None, internal::None, internal::None, internal::None, 787 internal::None, internal::None, internal::None, internal::None, 788 internal::None, internal::None, internal::None, internal::None, 789 internal::None, internal::None, internal::None, internal::None, 790 internal::None, internal::None, internal::None, internal::None, 791 internal::None, internal::None, internal::None, internal::None, 792 internal::None, internal::None, internal::None, internal::None, 793 internal::None, internal::None, internal::None, internal::None, 794 internal::None, internal::None, internal::None, internal::None, 795 internal::None, internal::None, internal::None, internal::None, 796 internal::None, internal::None, internal::None, internal::None, 797 internal::None> { 798 typedef internal::Types2<T1, T2> type; 799}; 800template <typename T1, typename T2, typename T3> 801struct Types<T1, T2, T3, internal::None, internal::None, internal::None, 802 internal::None, internal::None, internal::None, internal::None, 803 internal::None, internal::None, internal::None, internal::None, 804 internal::None, internal::None, internal::None, internal::None, 805 internal::None, internal::None, internal::None, internal::None, 806 internal::None, internal::None, internal::None, internal::None, 807 internal::None, internal::None, internal::None, internal::None, 808 internal::None, internal::None, internal::None, internal::None, 809 internal::None, internal::None, internal::None, internal::None, 810 internal::None, internal::None, internal::None, internal::None, 811 internal::None, internal::None, internal::None, internal::None, 812 internal::None, internal::None, internal::None, internal::None> { 813 typedef internal::Types3<T1, T2, T3> type; 814}; 815template <typename T1, typename T2, typename T3, typename T4> 816struct Types<T1, T2, T3, T4, internal::None, internal::None, internal::None, 817 internal::None, internal::None, internal::None, internal::None, 818 internal::None, internal::None, internal::None, internal::None, 819 internal::None, internal::None, internal::None, internal::None, 820 internal::None, internal::None, internal::None, internal::None, 821 internal::None, internal::None, internal::None, internal::None, 822 internal::None, internal::None, internal::None, internal::None, 823 internal::None, internal::None, internal::None, internal::None, 824 internal::None, internal::None, internal::None, internal::None, 825 internal::None, internal::None, internal::None, internal::None, 826 internal::None, internal::None, internal::None, internal::None, 827 internal::None, internal::None, internal::None> { 828 typedef internal::Types4<T1, T2, T3, T4> type; 829}; 830template <typename T1, typename T2, typename T3, typename T4, typename T5> 831struct Types<T1, T2, T3, T4, T5, internal::None, internal::None, 832 internal::None, internal::None, internal::None, internal::None, 833 internal::None, internal::None, internal::None, internal::None, 834 internal::None, internal::None, internal::None, internal::None, 835 internal::None, internal::None, internal::None, internal::None, 836 internal::None, internal::None, internal::None, internal::None, 837 internal::None, internal::None, internal::None, internal::None, 838 internal::None, internal::None, internal::None, internal::None, 839 internal::None, internal::None, internal::None, internal::None, 840 internal::None, internal::None, internal::None, internal::None, 841 internal::None, internal::None, internal::None, internal::None, 842 internal::None, internal::None, internal::None> { 843 typedef internal::Types5<T1, T2, T3, T4, T5> type; 844}; 845template <typename T1, typename T2, typename T3, typename T4, typename T5, 846 typename T6> 847struct Types<T1, T2, T3, T4, T5, T6, internal::None, internal::None, 848 internal::None, internal::None, internal::None, internal::None, 849 internal::None, internal::None, internal::None, internal::None, 850 internal::None, internal::None, internal::None, internal::None, 851 internal::None, internal::None, internal::None, internal::None, 852 internal::None, internal::None, internal::None, internal::None, 853 internal::None, internal::None, internal::None, internal::None, 854 internal::None, internal::None, internal::None, internal::None, 855 internal::None, internal::None, internal::None, internal::None, 856 internal::None, internal::None, internal::None, internal::None, 857 internal::None, internal::None, internal::None, internal::None, 858 internal::None, internal::None> { 859 typedef internal::Types6<T1, T2, T3, T4, T5, T6> type; 860}; 861template <typename T1, typename T2, typename T3, typename T4, typename T5, 862 typename T6, typename T7> 863struct Types<T1, T2, T3, T4, T5, T6, T7, internal::None, internal::None, 864 internal::None, internal::None, internal::None, internal::None, 865 internal::None, internal::None, internal::None, internal::None, 866 internal::None, internal::None, internal::None, internal::None, 867 internal::None, internal::None, internal::None, internal::None, 868 internal::None, internal::None, internal::None, internal::None, 869 internal::None, internal::None, internal::None, internal::None, 870 internal::None, internal::None, internal::None, internal::None, 871 internal::None, internal::None, internal::None, internal::None, 872 internal::None, internal::None, internal::None, internal::None, 873 internal::None, internal::None, internal::None, internal::None, 874 internal::None> { 875 typedef internal::Types7<T1, T2, T3, T4, T5, T6, T7> type; 876}; 877template <typename T1, typename T2, typename T3, typename T4, typename T5, 878 typename T6, typename T7, typename T8> 879struct Types<T1, T2, T3, T4, T5, T6, T7, T8, internal::None, internal::None, 880 internal::None, internal::None, internal::None, internal::None, 881 internal::None, internal::None, internal::None, internal::None, 882 internal::None, internal::None, internal::None, internal::None, 883 internal::None, internal::None, internal::None, internal::None, 884 internal::None, internal::None, internal::None, internal::None, 885 internal::None, internal::None, internal::None, internal::None, 886 internal::None, internal::None, internal::None, internal::None, 887 internal::None, internal::None, internal::None, internal::None, 888 internal::None, internal::None, internal::None, internal::None, 889 internal::None, internal::None, internal::None, internal::None> { 890 typedef internal::Types8<T1, T2, T3, T4, T5, T6, T7, T8> type; 891}; 892template <typename T1, typename T2, typename T3, typename T4, typename T5, 893 typename T6, typename T7, typename T8, typename T9> 894struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, internal::None, 895 internal::None, internal::None, internal::None, internal::None, 896 internal::None, internal::None, internal::None, internal::None, 897 internal::None, internal::None, internal::None, internal::None, 898 internal::None, internal::None, internal::None, internal::None, 899 internal::None, internal::None, internal::None, internal::None, 900 internal::None, internal::None, internal::None, internal::None, 901 internal::None, internal::None, internal::None, internal::None, 902 internal::None, internal::None, internal::None, internal::None, 903 internal::None, internal::None, internal::None, internal::None, 904 internal::None, internal::None, internal::None, internal::None> { 905 typedef internal::Types9<T1, T2, T3, T4, T5, T6, T7, T8, T9> type; 906}; 907template <typename T1, typename T2, typename T3, typename T4, typename T5, 908 typename T6, typename T7, typename T8, typename T9, typename T10> 909struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, internal::None, 910 internal::None, internal::None, internal::None, internal::None, 911 internal::None, internal::None, internal::None, internal::None, 912 internal::None, internal::None, internal::None, internal::None, 913 internal::None, internal::None, internal::None, internal::None, 914 internal::None, internal::None, internal::None, internal::None, 915 internal::None, internal::None, internal::None, internal::None, 916 internal::None, internal::None, internal::None, internal::None, 917 internal::None, internal::None, internal::None, internal::None, 918 internal::None, internal::None, internal::None, internal::None, 919 internal::None, internal::None, internal::None> { 920 typedef internal::Types10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> type; 921}; 922template <typename T1, typename T2, typename T3, typename T4, typename T5, 923 typename T6, typename T7, typename T8, typename T9, typename T10, 924 typename T11> 925struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, internal::None, 926 internal::None, internal::None, internal::None, internal::None, 927 internal::None, internal::None, internal::None, internal::None, 928 internal::None, internal::None, internal::None, internal::None, 929 internal::None, internal::None, internal::None, internal::None, 930 internal::None, internal::None, internal::None, internal::None, 931 internal::None, internal::None, internal::None, internal::None, 932 internal::None, internal::None, internal::None, internal::None, 933 internal::None, internal::None, internal::None, internal::None, 934 internal::None, internal::None, internal::None, internal::None, 935 internal::None, internal::None> { 936 typedef internal::Types11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> type; 937}; 938template <typename T1, typename T2, typename T3, typename T4, typename T5, 939 typename T6, typename T7, typename T8, typename T9, typename T10, 940 typename T11, typename T12> 941struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, internal::None, 942 internal::None, internal::None, internal::None, internal::None, 943 internal::None, internal::None, internal::None, internal::None, 944 internal::None, internal::None, internal::None, internal::None, 945 internal::None, internal::None, internal::None, internal::None, 946 internal::None, internal::None, internal::None, internal::None, 947 internal::None, internal::None, internal::None, internal::None, 948 internal::None, internal::None, internal::None, internal::None, 949 internal::None, internal::None, internal::None, internal::None, 950 internal::None, internal::None, internal::None, internal::None, 951 internal::None> { 952 typedef internal::Types12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 953 T12> type; 954}; 955template <typename T1, typename T2, typename T3, typename T4, typename T5, 956 typename T6, typename T7, typename T8, typename T9, typename T10, 957 typename T11, typename T12, typename T13> 958struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 959 internal::None, internal::None, internal::None, internal::None, 960 internal::None, internal::None, internal::None, internal::None, 961 internal::None, internal::None, internal::None, internal::None, 962 internal::None, internal::None, internal::None, internal::None, 963 internal::None, internal::None, internal::None, internal::None, 964 internal::None, internal::None, internal::None, internal::None, 965 internal::None, internal::None, internal::None, internal::None, 966 internal::None, internal::None, internal::None, internal::None, 967 internal::None, internal::None, internal::None, internal::None, 968 internal::None> { 969 typedef internal::Types13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, 970 T13> type; 971}; 972template <typename T1, typename T2, typename T3, typename T4, typename T5, 973 typename T6, typename T7, typename T8, typename T9, typename T10, 974 typename T11, typename T12, typename T13, typename T14> 975struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, 976 internal::None, internal::None, internal::None, internal::None, 977 internal::None, internal::None, internal::None, internal::None, 978 internal::None, internal::None, internal::None, internal::None, 979 internal::None, internal::None, internal::None, internal::None, 980 internal::None, internal::None, internal::None, internal::None, 981 internal::None, internal::None, internal::None, internal::None, 982 internal::None, internal::None, internal::None, internal::None, 983 internal::None, internal::None, internal::None, internal::None, 984 internal::None, internal::None, internal::None, internal::None> { 985 typedef internal::Types14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, 986 T13, T14> type; 987}; 988template <typename T1, typename T2, typename T3, typename T4, typename T5, 989 typename T6, typename T7, typename T8, typename T9, typename T10, 990 typename T11, typename T12, typename T13, typename T14, typename T15> 991struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, 992 internal::None, internal::None, internal::None, internal::None, 993 internal::None, internal::None, internal::None, internal::None, 994 internal::None, internal::None, internal::None, internal::None, 995 internal::None, internal::None, internal::None, internal::None, 996 internal::None, internal::None, internal::None, internal::None, 997 internal::None, internal::None, internal::None, internal::None, 998 internal::None, internal::None, internal::None, internal::None, 999 internal::None, internal::None, internal::None, internal::None, 1000 …

Large files files are truncated, but you can click here to view the full file