| // This file was GENERATED by command: |
| // pump.py gtest-type-util.h.pump |
| // DO NOT EDIT BY HAND!!! |
| |
| // Copyright 2008 Google Inc. |
| // All Rights Reserved. |
| // |
| // Redistribution and use in source and binary forms, with or without |
| // modification, are permitted provided that the following conditions are |
| // met: |
| // |
| // * Redistributions of source code must retain the above copyright |
| // notice, this list of conditions and the following disclaimer. |
| // * Redistributions in binary form must reproduce the above |
| // copyright notice, this list of conditions and the following disclaimer |
| // in the documentation and/or other materials provided with the |
| // distribution. |
| // * Neither the name of Google Inc. nor the names of its |
| // contributors may be used to endorse or promote products derived from |
| // this software without specific prior written permission. |
| // |
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| // |
| // Author: wan@google.com (Zhanyong Wan) |
| |
| // Type utilities needed for implementing typed and type-parameterized |
| // tests. This file is generated by a SCRIPT. DO NOT EDIT BY HAND! |
| // |
| // Currently we support at most 50 types in a list, and at most 50 |
| // type-parameterized tests in one type-parameterized test case. |
| // Please contact googletestframework@googlegroups.com if you need |
| // more. |
| |
| #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ |
| #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ |
| |
| #include "gtest/internal/gtest-port.h" |
| #include "gtest/internal/gtest-string.h" |
| |
| // #ifdef __GNUC__ is too general here. It is possible to use gcc without using |
| // libstdc++ (which is where cxxabi.h comes from). |
| # ifdef __GLIBCXX__ |
| # include <cxxabi.h> |
| # elif defined(__HP_aCC) |
| # include <acxx_demangle.h> |
| # endif // __GLIBCXX__ |
| |
| namespace testing { |
| namespace internal { |
| |
| // GetTypeName<T>() returns a human-readable name of type T. |
| // NB: This function is also used in Google Mock, so don't move it inside of |
| // the typed-test-only section below. |
| template <typename T> |
| String GetTypeName() { |
| # if GTEST_HAS_RTTI |
| |
| const char* const name = typeid(T).name(); |
| # if defined(__GLIBCXX__) || defined(__HP_aCC) |
| int status = 0; |
| // gcc's implementation of typeid(T).name() mangles the type name, |
| // so we have to demangle it. |
| # ifdef __GLIBCXX__ |
| using abi::__cxa_demangle; |
| # endif // __GLIBCXX__ |
| char* const readable_name = __cxa_demangle(name, 0, 0, &status); |
| const String name_str(status == 0 ? readable_name : name); |
| free(readable_name); |
| return name_str; |
| # else |
| return name; |
| # endif // __GLIBCXX__ || __HP_aCC |
| |
| # else |
| |
| return "<type>"; |
| |
| # endif // GTEST_HAS_RTTI |
| } |
| |
| #if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P |
| |
| // AssertyTypeEq<T1, T2>::type is defined iff T1 and T2 are the same |
| // type. This can be used as a compile-time assertion to ensure that |
| // two types are equal. |
| |
| template <typename T1, typename T2> |
| struct AssertTypeEq; |
| |
| template <typename T> |
| struct AssertTypeEq<T, T> { |
| typedef bool type; |
| }; |
| |
| // A unique type used as the default value for the arguments of class |
| // template Types. This allows us to simulate variadic templates |
| // (e.g. Types<int>, Type<int, double>, and etc), which C++ doesn't |
| // support directly. |
| struct None {}; |
| |
| // The following family of struct and struct templates are used to |
| // represent type lists. In particular, TypesN<T1, T2, ..., TN> |
| // represents a type list with N types (T1, T2, ..., and TN) in it. |
| // Except for Types0, every struct in the family has two member types: |
| // Head for the first type in the list, and Tail for the rest of the |
| // list. |
| |
| // The empty type list. |
| struct Types0 {}; |
| |
| // Type lists of length 1, 2, 3, and so on. |
| |
| template <typename T1> |
| struct Types1 { |
| typedef T1 Head; |
| typedef Types0 Tail; |
| }; |
| template <typename T1, typename T2> |
| struct Types2 { |
| typedef T1 Head; |
| typedef Types1<T2> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3> |
| struct Types3 { |
| typedef T1 Head; |
| typedef Types2<T2, T3> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4> |
| struct Types4 { |
| typedef T1 Head; |
| typedef Types3<T2, T3, T4> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5> |
| struct Types5 { |
| typedef T1 Head; |
| typedef Types4<T2, T3, T4, T5> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6> |
| struct Types6 { |
| typedef T1 Head; |
| typedef Types5<T2, T3, T4, T5, T6> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7> |
| struct Types7 { |
| typedef T1 Head; |
| typedef Types6<T2, T3, T4, T5, T6, T7> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8> |
| struct Types8 { |
| typedef T1 Head; |
| typedef Types7<T2, T3, T4, T5, T6, T7, T8> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9> |
| struct Types9 { |
| typedef T1 Head; |
| typedef Types8<T2, T3, T4, T5, T6, T7, T8, T9> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10> |
| struct Types10 { |
| typedef T1 Head; |
| typedef Types9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11> |
| struct Types11 { |
| typedef T1 Head; |
| typedef Types10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12> |
| struct Types12 { |
| typedef T1 Head; |
| typedef Types11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13> |
| struct Types13 { |
| typedef T1 Head; |
| typedef Types12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14> |
| struct Types14 { |
| typedef T1 Head; |
| typedef Types13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15> |
| struct Types15 { |
| typedef T1 Head; |
| typedef Types14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, |
| T15> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16> |
| struct Types16 { |
| typedef T1 Head; |
| typedef Types15<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17> |
| struct Types17 { |
| typedef T1 Head; |
| typedef Types16<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18> |
| struct Types18 { |
| typedef T1 Head; |
| typedef Types17<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19> |
| struct Types19 { |
| typedef T1 Head; |
| typedef Types18<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20> |
| struct Types20 { |
| typedef T1 Head; |
| typedef Types19<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21> |
| struct Types21 { |
| typedef T1 Head; |
| typedef Types20<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22> |
| struct Types22 { |
| typedef T1 Head; |
| typedef Types21<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23> |
| struct Types23 { |
| typedef T1 Head; |
| typedef Types22<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24> |
| struct Types24 { |
| typedef T1 Head; |
| typedef Types23<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25> |
| struct Types25 { |
| typedef T1 Head; |
| typedef Types24<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26> |
| struct Types26 { |
| typedef T1 Head; |
| typedef Types25<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27> |
| struct Types27 { |
| typedef T1 Head; |
| typedef Types26<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28> |
| struct Types28 { |
| typedef T1 Head; |
| typedef Types27<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29> |
| struct Types29 { |
| typedef T1 Head; |
| typedef Types28<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, |
| T29> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30> |
| struct Types30 { |
| typedef T1 Head; |
| typedef Types29<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, |
| T30> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31> |
| struct Types31 { |
| typedef T1 Head; |
| typedef Types30<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, |
| T30, T31> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32> |
| struct Types32 { |
| typedef T1 Head; |
| typedef Types31<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, |
| T30, T31, T32> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33> |
| struct Types33 { |
| typedef T1 Head; |
| typedef Types32<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, |
| T30, T31, T32, T33> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34> |
| struct Types34 { |
| typedef T1 Head; |
| typedef Types33<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, |
| T30, T31, T32, T33, T34> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35> |
| struct Types35 { |
| typedef T1 Head; |
| typedef Types34<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, |
| T30, T31, T32, T33, T34, T35> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36> |
| struct Types36 { |
| typedef T1 Head; |
| typedef Types35<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, |
| T30, T31, T32, T33, T34, T35, T36> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37> |
| struct Types37 { |
| typedef T1 Head; |
| typedef Types36<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, |
| T30, T31, T32, T33, T34, T35, T36, T37> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38> |
| struct Types38 { |
| typedef T1 Head; |
| typedef Types37<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, |
| T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38, typename T39> |
| struct Types39 { |
| typedef T1 Head; |
| typedef Types38<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, |
| T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38, typename T39, typename T40> |
| struct Types40 { |
| typedef T1 Head; |
| typedef Types39<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, |
| T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38, typename T39, typename T40, |
| typename T41> |
| struct Types41 { |
| typedef T1 Head; |
| typedef Types40<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, |
| T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38, typename T39, typename T40, |
| typename T41, typename T42> |
| struct Types42 { |
| typedef T1 Head; |
| typedef Types41<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, |
| T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38, typename T39, typename T40, |
| typename T41, typename T42, typename T43> |
| struct Types43 { |
| typedef T1 Head; |
| typedef Types42<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, |
| T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, |
| T43> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38, typename T39, typename T40, |
| typename T41, typename T42, typename T43, typename T44> |
| struct Types44 { |
| typedef T1 Head; |
| typedef Types43<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, |
| T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, |
| T44> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38, typename T39, typename T40, |
| typename T41, typename T42, typename T43, typename T44, typename T45> |
| struct Types45 { |
| typedef T1 Head; |
| typedef Types44<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, |
| T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, |
| T44, T45> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38, typename T39, typename T40, |
| typename T41, typename T42, typename T43, typename T44, typename T45, |
| typename T46> |
| struct Types46 { |
| typedef T1 Head; |
| typedef Types45<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, |
| T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, |
| T44, T45, T46> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38, typename T39, typename T40, |
| typename T41, typename T42, typename T43, typename T44, typename T45, |
| typename T46, typename T47> |
| struct Types47 { |
| typedef T1 Head; |
| typedef Types46<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, |
| T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, |
| T44, T45, T46, T47> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38, typename T39, typename T40, |
| typename T41, typename T42, typename T43, typename T44, typename T45, |
| typename T46, typename T47, typename T48> |
| struct Types48 { |
| typedef T1 Head; |
| typedef Types47<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, |
| T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, |
| T44, T45, T46, T47, T48> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38, typename T39, typename T40, |
| typename T41, typename T42, typename T43, typename T44, typename T45, |
| typename T46, typename T47, typename T48, typename T49> |
| struct Types49 { |
| typedef T1 Head; |
| typedef Types48<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, |
| T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, |
| T44, T45, T46, T47, T48, T49> Tail; |
| }; |
| |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38, typename T39, typename T40, |
| typename T41, typename T42, typename T43, typename T44, typename T45, |
| typename T46, typename T47, typename T48, typename T49, typename T50> |
| struct Types50 { |
| typedef T1 Head; |
| typedef Types49<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, |
| T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, |
| T44, T45, T46, T47, T48, T49, T50> Tail; |
| }; |
| |
| |
| } // namespace internal |
| |
| // We don't want to require the users to write TypesN<...> directly, |
| // as that would require them to count the length. Types<...> is much |
| // easier to write, but generates horrible messages when there is a |
| // compiler error, as gcc insists on printing out each template |
| // argument, even if it has the default value (this means Types<int> |
| // will appear as Types<int, None, None, ..., None> in the compiler |
| // errors). |
| // |
| // Our solution is to combine the best part of the two approaches: a |
| // user would write Types<T1, ..., TN>, and Google Test will translate |
| // that to TypesN<T1, ..., TN> internally to make error messages |
| // readable. The translation is done by the 'type' member of the |
| // Types template. |
| template <typename T1 = internal::None, typename T2 = internal::None, |
| typename T3 = internal::None, typename T4 = internal::None, |
| typename T5 = internal::None, typename T6 = internal::None, |
| typename T7 = internal::None, typename T8 = internal::None, |
| typename T9 = internal::None, typename T10 = internal::None, |
| typename T11 = internal::None, typename T12 = internal::None, |
| typename T13 = internal::None, typename T14 = internal::None, |
| typename T15 = internal::None, typename T16 = internal::None, |
| typename T17 = internal::None, typename T18 = internal::None, |
| typename T19 = internal::None, typename T20 = internal::None, |
| typename T21 = internal::None, typename T22 = internal::None, |
| typename T23 = internal::None, typename T24 = internal::None, |
| typename T25 = internal::None, typename T26 = internal::None, |
| typename T27 = internal::None, typename T28 = internal::None, |
| typename T29 = internal::None, typename T30 = internal::None, |
| typename T31 = internal::None, typename T32 = internal::None, |
| typename T33 = internal::None, typename T34 = internal::None, |
| typename T35 = internal::None, typename T36 = internal::None, |
| typename T37 = internal::None, typename T38 = internal::None, |
| typename T39 = internal::None, typename T40 = internal::None, |
| typename T41 = internal::None, typename T42 = internal::None, |
| typename T43 = internal::None, typename T44 = internal::None, |
| typename T45 = internal::None, typename T46 = internal::None, |
| typename T47 = internal::None, typename T48 = internal::None, |
| typename T49 = internal::None, typename T50 = internal::None> |
| struct Types { |
| typedef internal::Types50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, |
| T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, |
| T41, T42, T43, T44, T45, T46, T47, T48, T49, T50> type; |
| }; |
| |
| template <> |
| struct Types<internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None> { |
| typedef internal::Types0 type; |
| }; |
| template <typename T1> |
| struct Types<T1, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None> { |
| typedef internal::Types1<T1> type; |
| }; |
| template <typename T1, typename T2> |
| struct Types<T1, T2, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None> { |
| typedef internal::Types2<T1, T2> type; |
| }; |
| template <typename T1, typename T2, typename T3> |
| struct Types<T1, T2, T3, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None> { |
| typedef internal::Types3<T1, T2, T3> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4> |
| struct Types<T1, T2, T3, T4, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None> { |
| typedef internal::Types4<T1, T2, T3, T4> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5> |
| struct Types<T1, T2, T3, T4, T5, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None> { |
| typedef internal::Types5<T1, T2, T3, T4, T5> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6> |
| struct Types<T1, T2, T3, T4, T5, T6, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None> { |
| typedef internal::Types6<T1, T2, T3, T4, T5, T6> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None> { |
| typedef internal::Types7<T1, T2, T3, T4, T5, T6, T7> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None> { |
| typedef internal::Types8<T1, T2, T3, T4, T5, T6, T7, T8> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None> { |
| typedef internal::Types9<T1, T2, T3, T4, T5, T6, T7, T8, T9> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None> { |
| typedef internal::Types10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None> { |
| typedef internal::Types11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None> { |
| typedef internal::Types12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, |
| T12> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None> { |
| typedef internal::Types13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None> { |
| typedef internal::Types14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None> { |
| typedef internal::Types15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None> { |
| typedef internal::Types16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None> { |
| typedef internal::Types17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None> { |
| typedef internal::Types18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None> { |
| typedef internal::Types19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None> { |
| typedef internal::Types20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None> { |
| typedef internal::Types21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None> { |
| typedef internal::Types22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None> { |
| typedef internal::Types23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None> { |
| typedef internal::Types24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None> { |
| typedef internal::Types25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None> { |
| typedef internal::Types26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, |
| T26> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None> { |
| typedef internal::Types27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, |
| T27> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None> { |
| typedef internal::Types28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, |
| T27, T28> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None> { |
| typedef internal::Types29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, |
| T27, T28, T29> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None> { |
| typedef internal::Types30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, |
| T27, T28, T29, T30> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, |
| T31, internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None> { |
| typedef internal::Types31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, |
| T27, T28, T29, T30, T31> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, |
| T31, T32, internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None> { |
| typedef internal::Types32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, |
| T27, T28, T29, T30, T31, T32> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, |
| T31, T32, T33, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None> { |
| typedef internal::Types33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, |
| T27, T28, T29, T30, T31, T32, T33> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, |
| T31, T32, T33, T34, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None> { |
| typedef internal::Types34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, |
| T27, T28, T29, T30, T31, T32, T33, T34> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, |
| T31, T32, T33, T34, T35, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None> { |
| typedef internal::Types35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, |
| T27, T28, T29, T30, T31, T32, T33, T34, T35> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, |
| T31, T32, T33, T34, T35, T36, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None> { |
| typedef internal::Types36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, |
| T27, T28, T29, T30, T31, T32, T33, T34, T35, T36> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, |
| T31, T32, T33, T34, T35, T36, T37, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None> { |
| typedef internal::Types37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, |
| T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, |
| T31, T32, T33, T34, T35, T36, T37, T38, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None> { |
| typedef internal::Types38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, |
| T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38, typename T39> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, |
| T31, T32, T33, T34, T35, T36, T37, T38, T39, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None> { |
| typedef internal::Types39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, |
| T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38, typename T39, typename T40> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, |
| T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None> { |
| typedef internal::Types40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, |
| T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, |
| T40> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38, typename T39, typename T40, |
| typename T41> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, |
| T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None, internal::None> { |
| typedef internal::Types41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, |
| T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, |
| T41> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38, typename T39, typename T40, |
| typename T41, typename T42> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, |
| T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, internal::None, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None> { |
| typedef internal::Types42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, |
| T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, |
| T41, T42> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38, typename T39, typename T40, |
| typename T41, typename T42, typename T43> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, |
| T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None, internal::None> { |
| typedef internal::Types43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, |
| T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, |
| T41, T42, T43> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38, typename T39, typename T40, |
| typename T41, typename T42, typename T43, typename T44> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, |
| T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None, internal::None> { |
| typedef internal::Types44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, |
| T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, |
| T41, T42, T43, T44> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38, typename T39, typename T40, |
| typename T41, typename T42, typename T43, typename T44, typename T45> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, |
| T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, |
| internal::None, internal::None, internal::None, internal::None, |
| internal::None> { |
| typedef internal::Types45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, |
| T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, |
| T41, T42, T43, T44, T45> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38, typename T39, typename T40, |
| typename T41, typename T42, typename T43, typename T44, typename T45, |
| typename T46> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, |
| T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, |
| T46, internal::None, internal::None, internal::None, internal::None> { |
| typedef internal::Types46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, |
| T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, |
| T41, T42, T43, T44, T45, T46> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38, typename T39, typename T40, |
| typename T41, typename T42, typename T43, typename T44, typename T45, |
| typename T46, typename T47> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, |
| T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, |
| T46, T47, internal::None, internal::None, internal::None> { |
| typedef internal::Types47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, |
| T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, |
| T41, T42, T43, T44, T45, T46, T47> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typename T32, typename T33, typename T34, typename T35, |
| typename T36, typename T37, typename T38, typename T39, typename T40, |
| typename T41, typename T42, typename T43, typename T44, typename T45, |
| typename T46, typename T47, typename T48> |
| struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, |
| T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, |
| T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, |
| T46, T47, T48, internal::None, internal::None> { |
| typedef internal::Types48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, |
| T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, |
| T41, T42, T43, T44, T45, T46, T47, T48> type; |
| }; |
| template <typename T1, typename T2, typename T3, typename T4, typename T5, |
| typename T6, typename T7, typename T8, typename T9, typename T10, |
| typename T11, typename T12, typename T13, typename T14, typename T15, |
| typename T16, typename T17, typename T18, typename T19, typename T20, |
| typename T21, typename T22, typename T23, typename T24, typename T25, |
| typename T26, typename T27, typename T28, typename T29, typename T30, |
| typename T31, typ
|