|
|
|
@@ -31,11 +31,12 @@
|
|
|
|
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
|
|
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 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 suite.
|
|
|
|
|
// Currently we support at most 50 type-parameterized tests
|
|
|
|
|
// in one type-parameterized test suite.
|
|
|
|
|
// Please contact googletestframework@googlegroups.com if you need
|
|
|
|
|
// more.
|
|
|
|
|
|
|
|
|
@@ -105,1524 +106,6 @@ std::string GetTypeName() {
|
|
|
|
|
|
|
|
|
|
#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
|
|
|
|
|
|
|
|
|
|
// 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, 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 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, T49, internal::None> {
|
|
|
|
|
typedef internal::Types49<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> type;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
namespace internal {
|
|
|
|
|
|
|
|
|
|
# define GTEST_TEMPLATE_ template <typename T> class
|
|
|
|
|
|
|
|
|
|
// The template "selector" struct TemplateSel<Tmpl> is used to
|
|
|
|
@@ -3298,38 +1781,55 @@ struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
|
|
|
|
|
T42, T43, T44, T45, T46, T47, T48, T49> type;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// The TypeList template makes it possible to use either a single type
|
|
|
|
|
// or a Types<...> list in TYPED_TEST_SUITE() and
|
|
|
|
|
// INSTANTIATE_TYPED_TEST_SUITE_P().
|
|
|
|
|
// A unique type indicating an empty node
|
|
|
|
|
struct None {};
|
|
|
|
|
|
|
|
|
|
template <typename T>
|
|
|
|
|
struct TypeList {
|
|
|
|
|
typedef Types1<T> type;
|
|
|
|
|
// Tuple-like type lists
|
|
|
|
|
template <typename Head_, typename... Tail_>
|
|
|
|
|
struct Types {
|
|
|
|
|
using Head = Head_;
|
|
|
|
|
using Tail = Types<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 TypeList<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, T49, T50> > {
|
|
|
|
|
typedef typename 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, T49, T50>::type type;
|
|
|
|
|
template <typename Head_>
|
|
|
|
|
struct Types<Head_> {
|
|
|
|
|
using Head = Head_;
|
|
|
|
|
using Tail = None;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Helper metafunctions to tell apart a single type from types
|
|
|
|
|
// generated by ::testing::Types
|
|
|
|
|
template <typename... Ts>
|
|
|
|
|
struct ProxyTypeList {
|
|
|
|
|
typedef Types<Ts...> type;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
template <typename>
|
|
|
|
|
struct is_proxy_type_list : std::false_type {};
|
|
|
|
|
|
|
|
|
|
template <typename... Ts>
|
|
|
|
|
struct is_proxy_type_list<ProxyTypeList<Ts...>> : std::true_type {};
|
|
|
|
|
|
|
|
|
|
// Generator which conditionally creates type lists.
|
|
|
|
|
// It recognizes if a requested type list should be created
|
|
|
|
|
// and prevents creating a new type list nested within another one.
|
|
|
|
|
template <typename T>
|
|
|
|
|
struct GenerateTypeList {
|
|
|
|
|
private:
|
|
|
|
|
using proxy = typename std::conditional<is_proxy_type_list<T>::value, T,
|
|
|
|
|
ProxyTypeList<T>>::type;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
using type = typename proxy::type;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
|
|
|
|
|
|
|
|
|
|
} // namespace internal
|
|
|
|
|
|
|
|
|
|
template <typename... Ts>
|
|
|
|
|
using Types = internal::ProxyTypeList<Ts...>;
|
|
|
|
|
|
|
|
|
|
} // namespace testing
|
|
|
|
|
|
|
|
|
|
#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
|
|
|
|
|