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