Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F67465676
gtest-type-util.h
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Sat, Jun 22, 14:01
Size
181 KB
Mime Type
text/x-c++
Expires
Mon, Jun 24, 14:01 (2 d)
Engine
blob
Format
Raw Data
Handle
18411933
Attached To
R9484 sp4e-homework-lars-bertil
gtest-type-util.h
View Options
// This file was GENERATED by command:
// pump.py gtest-type-util.h.pump
// DO NOT EDIT BY HAND!!!
// Copyright 2008 Google Inc.
// All Rights Reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Type utilities needed for implementing typed and type-parameterized
// tests. This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
//
// Currently we support at most 50 types in a list, and at most 50
// type-parameterized tests in one type-parameterized test case.
// Please contact googletestframework@googlegroups.com if you need
// more.
// GOOGLETEST_CM0001 DO NOT DELETE
#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
#include "gtest/internal/gtest-port.h"
// #ifdef __GNUC__ is too general here. It is possible to use gcc without using
// libstdc++ (which is where cxxabi.h comes from).
# if GTEST_HAS_CXXABI_H_
# include <cxxabi.h>
# elif defined(__HP_aCC)
# include <acxx_demangle.h>
# endif
// GTEST_HASH_CXXABI_H_
namespace
testing
{
namespace
internal
{
// Canonicalizes a given name with respect to the Standard C++ Library.
// This handles removing the inline namespace within `std` that is
// used by various standard libraries (e.g., `std::__1`). Names outside
// of namespace std are returned unmodified.
inline
std
::
string
CanonicalizeForStdLibVersioning
(
std
::
string
s
)
{
static
const
char
prefix
[]
=
"std::__"
;
if
(
s
.
compare
(
0
,
strlen
(
prefix
),
prefix
)
==
0
)
{
std
::
string
::
size_type
end
=
s
.
find
(
"::"
,
strlen
(
prefix
));
if
(
end
!=
s
.
npos
)
{
// Erase everything between the initial `std` and the second `::`.
s
.
erase
(
strlen
(
"std"
),
end
-
strlen
(
"std"
));
}
}
return
s
;
}
// GetTypeName<T>() returns a human-readable name of type T.
// NB: This function is also used in Google Mock, so don't move it inside of
// the typed-test-only section below.
template
<
typename
T
>
std
::
string
GetTypeName
()
{
# if GTEST_HAS_RTTI
const
char
*
const
name
=
typeid
(
T
).
name
();
# if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC)
int
status
=
0
;
// gcc's implementation of typeid(T).name() mangles the type name,
// so we have to demangle it.
# if GTEST_HAS_CXXABI_H_
using
abi
::
__cxa_demangle
;
# endif
// GTEST_HAS_CXXABI_H_
char
*
const
readable_name
=
__cxa_demangle
(
name
,
0
,
0
,
&
status
);
const
std
::
string
name_str
(
status
==
0
?
readable_name
:
name
);
free
(
readable_name
);
return
CanonicalizeForStdLibVersioning
(
name_str
);
# else
return
name
;
# endif
// GTEST_HAS_CXXABI_H_ || __HP_aCC
# else
return
"<type>"
;
# endif
// GTEST_HAS_RTTI
}
#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
// AssertyTypeEq<T1, T2>::type is defined iff T1 and T2 are the same
// type. This can be used as a compile-time assertion to ensure that
// two types are equal.
template
<
typename
T1
,
typename
T2
>
struct
AssertTypeEq
;
template
<
typename
T
>
struct
AssertTypeEq
<
T
,
T
>
{
typedef
bool
type
;
};
// A unique type used as the default value for the arguments of class
// template Types. This allows us to simulate variadic templates
// (e.g. Types<int>, Type<int, double>, and etc), which C++ doesn't
// support directly.
struct
None
{};
// The following family of struct and struct templates are used to
// represent type lists. In particular, TypesN<T1, T2, ..., TN>
// represents a type list with N types (T1, T2, ..., and TN) in it.
// Except for Types0, every struct in the family has two member types:
// Head for the first type in the list, and Tail for the rest of the
// list.
// The empty type list.
struct
Types0
{};
// Type lists of length 1, 2, 3, and so on.
template
<
typename
T1
>
struct
Types1
{
typedef
T1
Head
;
typedef
Types0
Tail
;
};
template
<
typename
T1
,
typename
T2
>
struct
Types2
{
typedef
T1
Head
;
typedef
Types1
<
T2
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
>
struct
Types3
{
typedef
T1
Head
;
typedef
Types2
<
T2
,
T3
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
>
struct
Types4
{
typedef
T1
Head
;
typedef
Types3
<
T2
,
T3
,
T4
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
>
struct
Types5
{
typedef
T1
Head
;
typedef
Types4
<
T2
,
T3
,
T4
,
T5
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
>
struct
Types6
{
typedef
T1
Head
;
typedef
Types5
<
T2
,
T3
,
T4
,
T5
,
T6
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
>
struct
Types7
{
typedef
T1
Head
;
typedef
Types6
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
>
struct
Types8
{
typedef
T1
Head
;
typedef
Types7
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
>
struct
Types9
{
typedef
T1
Head
;
typedef
Types8
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
>
struct
Types10
{
typedef
T1
Head
;
typedef
Types9
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
>
struct
Types11
{
typedef
T1
Head
;
typedef
Types10
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
>
struct
Types12
{
typedef
T1
Head
;
typedef
Types11
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
>
struct
Types13
{
typedef
T1
Head
;
typedef
Types12
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
>
struct
Types14
{
typedef
T1
Head
;
typedef
Types13
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
>
struct
Types15
{
typedef
T1
Head
;
typedef
Types14
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
>
struct
Types16
{
typedef
T1
Head
;
typedef
Types15
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
>
struct
Types17
{
typedef
T1
Head
;
typedef
Types16
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
>
struct
Types18
{
typedef
T1
Head
;
typedef
Types17
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
>
struct
Types19
{
typedef
T1
Head
;
typedef
Types18
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
>
struct
Types20
{
typedef
T1
Head
;
typedef
Types19
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
>
struct
Types21
{
typedef
T1
Head
;
typedef
Types20
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
>
struct
Types22
{
typedef
T1
Head
;
typedef
Types21
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
>
struct
Types23
{
typedef
T1
Head
;
typedef
Types22
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
>
struct
Types24
{
typedef
T1
Head
;
typedef
Types23
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
>
struct
Types25
{
typedef
T1
Head
;
typedef
Types24
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
>
struct
Types26
{
typedef
T1
Head
;
typedef
Types25
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
>
struct
Types27
{
typedef
T1
Head
;
typedef
Types26
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
>
struct
Types28
{
typedef
T1
Head
;
typedef
Types27
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
>
struct
Types29
{
typedef
T1
Head
;
typedef
Types28
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
>
struct
Types30
{
typedef
T1
Head
;
typedef
Types29
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
>
struct
Types31
{
typedef
T1
Head
;
typedef
Types30
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
>
struct
Types32
{
typedef
T1
Head
;
typedef
Types31
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
>
struct
Types33
{
typedef
T1
Head
;
typedef
Types32
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
>
struct
Types34
{
typedef
T1
Head
;
typedef
Types33
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
>
struct
Types35
{
typedef
T1
Head
;
typedef
Types34
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
>
struct
Types36
{
typedef
T1
Head
;
typedef
Types35
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
>
struct
Types37
{
typedef
T1
Head
;
typedef
Types36
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
>
struct
Types38
{
typedef
T1
Head
;
typedef
Types37
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
,
typename
T39
>
struct
Types39
{
typedef
T1
Head
;
typedef
Types38
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
,
typename
T39
,
typename
T40
>
struct
Types40
{
typedef
T1
Head
;
typedef
Types39
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
,
typename
T39
,
typename
T40
,
typename
T41
>
struct
Types41
{
typedef
T1
Head
;
typedef
Types40
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
,
typename
T39
,
typename
T40
,
typename
T41
,
typename
T42
>
struct
Types42
{
typedef
T1
Head
;
typedef
Types41
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
,
typename
T39
,
typename
T40
,
typename
T41
,
typename
T42
,
typename
T43
>
struct
Types43
{
typedef
T1
Head
;
typedef
Types42
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
,
T43
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
,
typename
T39
,
typename
T40
,
typename
T41
,
typename
T42
,
typename
T43
,
typename
T44
>
struct
Types44
{
typedef
T1
Head
;
typedef
Types43
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
,
T43
,
T44
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
,
typename
T39
,
typename
T40
,
typename
T41
,
typename
T42
,
typename
T43
,
typename
T44
,
typename
T45
>
struct
Types45
{
typedef
T1
Head
;
typedef
Types44
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
,
T43
,
T44
,
T45
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
,
typename
T39
,
typename
T40
,
typename
T41
,
typename
T42
,
typename
T43
,
typename
T44
,
typename
T45
,
typename
T46
>
struct
Types46
{
typedef
T1
Head
;
typedef
Types45
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
,
T43
,
T44
,
T45
,
T46
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
,
typename
T39
,
typename
T40
,
typename
T41
,
typename
T42
,
typename
T43
,
typename
T44
,
typename
T45
,
typename
T46
,
typename
T47
>
struct
Types47
{
typedef
T1
Head
;
typedef
Types46
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
,
T43
,
T44
,
T45
,
T46
,
T47
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
,
typename
T39
,
typename
T40
,
typename
T41
,
typename
T42
,
typename
T43
,
typename
T44
,
typename
T45
,
typename
T46
,
typename
T47
,
typename
T48
>
struct
Types48
{
typedef
T1
Head
;
typedef
Types47
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
,
T43
,
T44
,
T45
,
T46
,
T47
,
T48
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
,
typename
T39
,
typename
T40
,
typename
T41
,
typename
T42
,
typename
T43
,
typename
T44
,
typename
T45
,
typename
T46
,
typename
T47
,
typename
T48
,
typename
T49
>
struct
Types49
{
typedef
T1
Head
;
typedef
Types48
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
,
T43
,
T44
,
T45
,
T46
,
T47
,
T48
,
T49
>
Tail
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
,
typename
T39
,
typename
T40
,
typename
T41
,
typename
T42
,
typename
T43
,
typename
T44
,
typename
T45
,
typename
T46
,
typename
T47
,
typename
T48
,
typename
T49
,
typename
T50
>
struct
Types50
{
typedef
T1
Head
;
typedef
Types49
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
,
T43
,
T44
,
T45
,
T46
,
T47
,
T48
,
T49
,
T50
>
Tail
;
};
}
// namespace internal
// We don't want to require the users to write TypesN<...> directly,
// as that would require them to count the length. Types<...> is much
// easier to write, but generates horrible messages when there is a
// compiler error, as gcc insists on printing out each template
// argument, even if it has the default value (this means Types<int>
// will appear as Types<int, None, None, ..., None> in the compiler
// errors).
//
// Our solution is to combine the best part of the two approaches: a
// user would write Types<T1, ..., TN>, and Google Test will translate
// that to TypesN<T1, ..., TN> internally to make error messages
// readable. The translation is done by the 'type' member of the
// Types template.
template
<
typename
T1
=
internal
::
None
,
typename
T2
=
internal
::
None
,
typename
T3
=
internal
::
None
,
typename
T4
=
internal
::
None
,
typename
T5
=
internal
::
None
,
typename
T6
=
internal
::
None
,
typename
T7
=
internal
::
None
,
typename
T8
=
internal
::
None
,
typename
T9
=
internal
::
None
,
typename
T10
=
internal
::
None
,
typename
T11
=
internal
::
None
,
typename
T12
=
internal
::
None
,
typename
T13
=
internal
::
None
,
typename
T14
=
internal
::
None
,
typename
T15
=
internal
::
None
,
typename
T16
=
internal
::
None
,
typename
T17
=
internal
::
None
,
typename
T18
=
internal
::
None
,
typename
T19
=
internal
::
None
,
typename
T20
=
internal
::
None
,
typename
T21
=
internal
::
None
,
typename
T22
=
internal
::
None
,
typename
T23
=
internal
::
None
,
typename
T24
=
internal
::
None
,
typename
T25
=
internal
::
None
,
typename
T26
=
internal
::
None
,
typename
T27
=
internal
::
None
,
typename
T28
=
internal
::
None
,
typename
T29
=
internal
::
None
,
typename
T30
=
internal
::
None
,
typename
T31
=
internal
::
None
,
typename
T32
=
internal
::
None
,
typename
T33
=
internal
::
None
,
typename
T34
=
internal
::
None
,
typename
T35
=
internal
::
None
,
typename
T36
=
internal
::
None
,
typename
T37
=
internal
::
None
,
typename
T38
=
internal
::
None
,
typename
T39
=
internal
::
None
,
typename
T40
=
internal
::
None
,
typename
T41
=
internal
::
None
,
typename
T42
=
internal
::
None
,
typename
T43
=
internal
::
None
,
typename
T44
=
internal
::
None
,
typename
T45
=
internal
::
None
,
typename
T46
=
internal
::
None
,
typename
T47
=
internal
::
None
,
typename
T48
=
internal
::
None
,
typename
T49
=
internal
::
None
,
typename
T50
=
internal
::
None
>
struct
Types
{
typedef
internal
::
Types50
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
,
T43
,
T44
,
T45
,
T46
,
T47
,
T48
,
T49
,
T50
>
type
;
};
template
<>
struct
Types
<
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types0
type
;
};
template
<
typename
T1
>
struct
Types
<
T1
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types1
<
T1
>
type
;
};
template
<
typename
T1
,
typename
T2
>
struct
Types
<
T1
,
T2
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types2
<
T1
,
T2
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
>
struct
Types
<
T1
,
T2
,
T3
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types3
<
T1
,
T2
,
T3
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types4
<
T1
,
T2
,
T3
,
T4
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types5
<
T1
,
T2
,
T3
,
T4
,
T5
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types6
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types7
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types8
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types9
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types10
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types11
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types12
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types13
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types14
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types15
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types16
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types17
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types18
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types19
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types20
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types21
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types22
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types23
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types24
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types25
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types26
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types27
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types28
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types29
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types30
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types31
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types32
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types33
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types34
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types35
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types36
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types37
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types38
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
,
typename
T39
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types39
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
,
typename
T39
,
typename
T40
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types40
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
,
typename
T39
,
typename
T40
,
typename
T41
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types41
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
,
typename
T39
,
typename
T40
,
typename
T41
,
typename
T42
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types42
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
,
typename
T39
,
typename
T40
,
typename
T41
,
typename
T42
,
typename
T43
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
,
T43
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types43
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
,
T43
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
,
typename
T39
,
typename
T40
,
typename
T41
,
typename
T42
,
typename
T43
,
typename
T44
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
,
T43
,
T44
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types44
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
,
T43
,
T44
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
,
typename
T39
,
typename
T40
,
typename
T41
,
typename
T42
,
typename
T43
,
typename
T44
,
typename
T45
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
,
T43
,
T44
,
T45
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types45
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
,
T43
,
T44
,
T45
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
,
typename
T39
,
typename
T40
,
typename
T41
,
typename
T42
,
typename
T43
,
typename
T44
,
typename
T45
,
typename
T46
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
,
T43
,
T44
,
T45
,
T46
,
internal
::
None
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types46
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
,
T43
,
T44
,
T45
,
T46
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
,
typename
T39
,
typename
T40
,
typename
T41
,
typename
T42
,
typename
T43
,
typename
T44
,
typename
T45
,
typename
T46
,
typename
T47
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
,
T43
,
T44
,
T45
,
T46
,
T47
,
internal
::
None
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types47
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
,
T43
,
T44
,
T45
,
T46
,
T47
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
typename
T32
,
typename
T33
,
typename
T34
,
typename
T35
,
typename
T36
,
typename
T37
,
typename
T38
,
typename
T39
,
typename
T40
,
typename
T41
,
typename
T42
,
typename
T43
,
typename
T44
,
typename
T45
,
typename
T46
,
typename
T47
,
typename
T48
>
struct
Types
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
,
T43
,
T44
,
T45
,
T46
,
T47
,
T48
,
internal
::
None
,
internal
::
None
>
{
typedef
internal
::
Types48
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
T25
,
T26
,
T27
,
T28
,
T29
,
T30
,
T31
,
T32
,
T33
,
T34
,
T35
,
T36
,
T37
,
T38
,
T39
,
T40
,
T41
,
T42
,
T43
,
T44
,
T45
,
T46
,
T47
,
T48
>
type
;
};
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
,
typename
T11
,
typename
T12
,
typename
T13
,
typename
T14
,
typename
T15
,
typename
T16
,
typename
T17
,
typename
T18
,
typename
T19
,
typename
T20
,
typename
T21
,
typename
T22
,
typename
T23
,
typename
T24
,
typename
T25
,
typename
T26
,
typename
T27
,
typename
T28
,
typename
T29
,
typename
T30
,
typename
T31
,
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
// represent Tmpl, which must be a class template with one type
// parameter, as a type. TemplateSel<Tmpl>::Bind<T>::type is defined
// as the type Tmpl<T>. This allows us to actually instantiate the
// template "selected" by TemplateSel<Tmpl>.
//
// This trick is necessary for simulating typedef for class templates,
// which C++ doesn't support directly.
template
<
GTEST_TEMPLATE_
Tmpl
>
struct
TemplateSel
{
template
<
typename
T
>
struct
Bind
{
typedef
Tmpl
<
T
>
type
;
};
};
# define GTEST_BIND_(TmplSel, T) \
TmplSel::template Bind<T>::type
// A unique struct template used as the default value for the
// arguments of class template Templates. This allows us to simulate
// variadic templates (e.g. Templates<int>, Templates<int, double>,
// and etc), which C++ doesn't support directly.
template
<
typename
T
>
struct
NoneT
{};
// The following family of struct and struct templates are used to
// represent template lists. In particular, TemplatesN<T1, T2, ...,
// TN> represents a list of N templates (T1, T2, ..., and TN). Except
// for Templates0, every struct in the family has two member types:
// Head for the selector of the first template in the list, and Tail
// for the rest of the list.
// The empty template list.
struct
Templates0
{};
// Template lists of length 1, 2, 3, and so on.
template
<
GTEST_TEMPLATE_
T1
>
struct
Templates1
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates0
Tail
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
>
struct
Templates2
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates1
<
T2
>
Tail
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
>
struct
Templates3
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates2
<
T2
,
T3
>
Tail
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
>
struct
Templates4
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates3
<
T2
,
T3
,
T4
>
Tail
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
>
struct
Templates5
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates4
<
T2
,
T3
,
T4
,
T5
>
Tail
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
>
struct
Templates6
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates5
<
T2
,
T3
,
T4
,
T5
,
T6
>
Tail
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
>
struct
Templates7
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates6
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
>
Tail
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
>
struct
Templates8
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates7
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
>
Tail
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
>
struct
Templates9
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates8
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
>
Tail
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
>
struct
Templates10
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates9
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
>
Tail
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
>
struct
Templates11
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates10
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
>
Tail
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
>
struct
Templates12
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates11
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
>
Tail
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
>
struct
Templates13
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates12
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
>
Tail
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
>
struct
Templates14
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates13
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
>
Tail
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
>
struct
Templates15
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates14
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
>
Tail
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
>
struct
Templates16
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates15
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
>
Tail
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
>
struct
Templates17
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates16
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
>
Tail
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
>
struct
Templates18
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates17
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
>
Tail
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
>
struct
Templates19
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates18
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
>
Tail
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
>
struct
Templates20
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates19
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
>
Tail
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
>
struct
Templates21
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates20
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
>
Tail
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
>
struct
Templates22
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates21
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
>
Tail
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
>
struct
Templates23
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates22
<
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
>
Tail
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
>
struct
Templates24
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates23
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
>
struct
Templates25
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates24
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
>
struct
Templates26
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates25
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
>
struct
Templates27
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates26
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
>
struct
Templates28
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates27
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
>
struct
Templates29
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates28
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
>
struct
Templates30
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates29
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
>
struct
Templates31
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates30
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
>
struct
Templates32
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates31
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
>
struct
Templates33
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates32
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
>
struct
Templates34
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates33
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
>
struct
Templates35
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates34
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
>
struct
Templates36
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates35
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
>
struct
Templates37
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates36
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
>
struct
Templates38
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates37
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
,
GTEST_TEMPLATE_
T39
>
struct
Templates39
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates38
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
,
GTEST_TEMPLATE_
T39
,
GTEST_TEMPLATE_
T40
>
struct
Templates40
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates39
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
,
GTEST_TEMPLATE_
T39
,
GTEST_TEMPLATE_
T40
,
GTEST_TEMPLATE_
T41
>
struct
Templates41
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates40
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
,
GTEST_TEMPLATE_
T39
,
GTEST_TEMPLATE_
T40
,
GTEST_TEMPLATE_
T41
,
GTEST_TEMPLATE_
T42
>
struct
Templates42
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates41
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
,
GTEST_TEMPLATE_
T39
,
GTEST_TEMPLATE_
T40
,
GTEST_TEMPLATE_
T41
,
GTEST_TEMPLATE_
T42
,
GTEST_TEMPLATE_
T43
>
struct
Templates43
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates42
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
,
GTEST_TEMPLATE_
T39
,
GTEST_TEMPLATE_
T40
,
GTEST_TEMPLATE_
T41
,
GTEST_TEMPLATE_
T42
,
GTEST_TEMPLATE_
T43
,
GTEST_TEMPLATE_
T44
>
struct
Templates44
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates43
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
,
GTEST_TEMPLATE_
T39
,
GTEST_TEMPLATE_
T40
,
GTEST_TEMPLATE_
T41
,
GTEST_TEMPLATE_
T42
,
GTEST_TEMPLATE_
T43
,
GTEST_TEMPLATE_
T44
,
GTEST_TEMPLATE_
T45
>
struct
Templates45
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates44
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
,
GTEST_TEMPLATE_
T39
,
GTEST_TEMPLATE_
T40
,
GTEST_TEMPLATE_
T41
,
GTEST_TEMPLATE_
T42
,
GTEST_TEMPLATE_
T43
,
GTEST_TEMPLATE_
T44
,
GTEST_TEMPLATE_
T45
,
GTEST_TEMPLATE_
T46
>
struct
Templates46
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates45
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
,
GTEST_TEMPLATE_
T39
,
GTEST_TEMPLATE_
T40
,
GTEST_TEMPLATE_
T41
,
GTEST_TEMPLATE_
T42
,
GTEST_TEMPLATE_
T43
,
GTEST_TEMPLATE_
T44
,
GTEST_TEMPLATE_
T45
,
GTEST_TEMPLATE_
T46
,
GTEST_TEMPLATE_
T47
>
struct
Templates47
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates46
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
,
GTEST_TEMPLATE_
T39
,
GTEST_TEMPLATE_
T40
,
GTEST_TEMPLATE_
T41
,
GTEST_TEMPLATE_
T42
,
GTEST_TEMPLATE_
T43
,
GTEST_TEMPLATE_
T44
,
GTEST_TEMPLATE_
T45
,
GTEST_TEMPLATE_
T46
,
GTEST_TEMPLATE_
T47
,
GTEST_TEMPLATE_
T48
>
struct
Templates48
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates47
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
,
GTEST_TEMPLATE_
T39
,
GTEST_TEMPLATE_
T40
,
GTEST_TEMPLATE_
T41
,
GTEST_TEMPLATE_
T42
,
GTEST_TEMPLATE_
T43
,
GTEST_TEMPLATE_
T44
,
GTEST_TEMPLATE_
T45
,
GTEST_TEMPLATE_
T46
,
GTEST_TEMPLATE_
T47
,
GTEST_TEMPLATE_
T48
,
GTEST_TEMPLATE_
T49
>
struct
Templates49
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates48
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
,
GTEST_TEMPLATE_
T39
,
GTEST_TEMPLATE_
T40
,
GTEST_TEMPLATE_
T41
,
GTEST_TEMPLATE_
T42
,
GTEST_TEMPLATE_
T43
,
GTEST_TEMPLATE_
T44
,
GTEST_TEMPLATE_
T45
,
GTEST_TEMPLATE_
T46
,
GTEST_TEMPLATE_
T47
,
GTEST_TEMPLATE_
T48
,
GTEST_TEMPLATE_
T49
,
GTEST_TEMPLATE_
T50
>
struct
Templates50
{
typedef
TemplateSel
<
T1
>
Head
;
typedef
Templates49
<
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
;
};
// We don't want to require the users to write TemplatesN<...> directly,
// as that would require them to count the length. Templates<...> 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 Templates<list>
// will appear as Templates<list, NoneT, NoneT, ..., NoneT> in the compiler
// errors).
//
// Our solution is to combine the best part of the two approaches: a
// user would write Templates<T1, ..., TN>, and Google Test will translate
// that to TemplatesN<T1, ..., TN> internally to make error messages
// readable. The translation is done by the 'type' member of the
// Templates template.
template
<
GTEST_TEMPLATE_
T1
=
NoneT
,
GTEST_TEMPLATE_
T2
=
NoneT
,
GTEST_TEMPLATE_
T3
=
NoneT
,
GTEST_TEMPLATE_
T4
=
NoneT
,
GTEST_TEMPLATE_
T5
=
NoneT
,
GTEST_TEMPLATE_
T6
=
NoneT
,
GTEST_TEMPLATE_
T7
=
NoneT
,
GTEST_TEMPLATE_
T8
=
NoneT
,
GTEST_TEMPLATE_
T9
=
NoneT
,
GTEST_TEMPLATE_
T10
=
NoneT
,
GTEST_TEMPLATE_
T11
=
NoneT
,
GTEST_TEMPLATE_
T12
=
NoneT
,
GTEST_TEMPLATE_
T13
=
NoneT
,
GTEST_TEMPLATE_
T14
=
NoneT
,
GTEST_TEMPLATE_
T15
=
NoneT
,
GTEST_TEMPLATE_
T16
=
NoneT
,
GTEST_TEMPLATE_
T17
=
NoneT
,
GTEST_TEMPLATE_
T18
=
NoneT
,
GTEST_TEMPLATE_
T19
=
NoneT
,
GTEST_TEMPLATE_
T20
=
NoneT
,
GTEST_TEMPLATE_
T21
=
NoneT
,
GTEST_TEMPLATE_
T22
=
NoneT
,
GTEST_TEMPLATE_
T23
=
NoneT
,
GTEST_TEMPLATE_
T24
=
NoneT
,
GTEST_TEMPLATE_
T25
=
NoneT
,
GTEST_TEMPLATE_
T26
=
NoneT
,
GTEST_TEMPLATE_
T27
=
NoneT
,
GTEST_TEMPLATE_
T28
=
NoneT
,
GTEST_TEMPLATE_
T29
=
NoneT
,
GTEST_TEMPLATE_
T30
=
NoneT
,
GTEST_TEMPLATE_
T31
=
NoneT
,
GTEST_TEMPLATE_
T32
=
NoneT
,
GTEST_TEMPLATE_
T33
=
NoneT
,
GTEST_TEMPLATE_
T34
=
NoneT
,
GTEST_TEMPLATE_
T35
=
NoneT
,
GTEST_TEMPLATE_
T36
=
NoneT
,
GTEST_TEMPLATE_
T37
=
NoneT
,
GTEST_TEMPLATE_
T38
=
NoneT
,
GTEST_TEMPLATE_
T39
=
NoneT
,
GTEST_TEMPLATE_
T40
=
NoneT
,
GTEST_TEMPLATE_
T41
=
NoneT
,
GTEST_TEMPLATE_
T42
=
NoneT
,
GTEST_TEMPLATE_
T43
=
NoneT
,
GTEST_TEMPLATE_
T44
=
NoneT
,
GTEST_TEMPLATE_
T45
=
NoneT
,
GTEST_TEMPLATE_
T46
=
NoneT
,
GTEST_TEMPLATE_
T47
=
NoneT
,
GTEST_TEMPLATE_
T48
=
NoneT
,
GTEST_TEMPLATE_
T49
=
NoneT
,
GTEST_TEMPLATE_
T50
=
NoneT
>
struct
Templates
{
typedef
Templates50
<
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
Templates
<
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates0
type
;
};
template
<
GTEST_TEMPLATE_
T1
>
struct
Templates
<
T1
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates1
<
T1
>
type
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
>
struct
Templates
<
T1
,
T2
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates2
<
T1
,
T2
>
type
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
>
struct
Templates
<
T1
,
T2
,
T3
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates3
<
T1
,
T2
,
T3
>
type
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
>
struct
Templates
<
T1
,
T2
,
T3
,
T4
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates4
<
T1
,
T2
,
T3
,
T4
>
type
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
>
struct
Templates
<
T1
,
T2
,
T3
,
T4
,
T5
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates5
<
T1
,
T2
,
T3
,
T4
,
T5
>
type
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
>
struct
Templates
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates6
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
>
type
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
>
struct
Templates
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates7
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
>
type
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
>
struct
Templates
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates8
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
>
type
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
>
struct
Templates
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates9
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
>
type
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
>
struct
Templates
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates10
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
>
type
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
>
struct
Templates
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates11
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
>
type
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
>
struct
Templates
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates12
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
>
type
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
>
struct
Templates
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates13
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
>
type
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
>
struct
Templates
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates14
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
>
type
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
>
struct
Templates
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates15
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
>
type
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
>
struct
Templates
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates16
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
>
type
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
>
struct
Templates
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates17
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
>
type
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
>
struct
Templates
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates18
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
>
type
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
>
struct
Templates
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates19
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
>
type
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
>
struct
Templates
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates20
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
>
type
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
>
struct
Templates
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates21
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
>
type
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
>
struct
Templates
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates22
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
>
type
;
};
template
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
>
struct
Templates
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates23
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
>
struct
Templates
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
,
T11
,
T12
,
T13
,
T14
,
T15
,
T16
,
T17
,
T18
,
T19
,
T20
,
T21
,
T22
,
T23
,
T24
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates24
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
>
struct
Templates
<
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
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates25
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
>
struct
Templates
<
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
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates26
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
>
struct
Templates
<
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
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates27
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
>
struct
Templates
<
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
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates28
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
>
struct
Templates
<
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
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates29
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
>
struct
Templates
<
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
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates30
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
>
struct
Templates
<
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
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates31
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
>
struct
Templates
<
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
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates32
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
>
struct
Templates
<
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
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates33
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
>
struct
Templates
<
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
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates34
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
>
struct
Templates
<
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
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates35
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
>
struct
Templates
<
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
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates36
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
>
struct
Templates
<
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
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates37
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
>
struct
Templates
<
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
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates38
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
,
GTEST_TEMPLATE_
T39
>
struct
Templates
<
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
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates39
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
,
GTEST_TEMPLATE_
T39
,
GTEST_TEMPLATE_
T40
>
struct
Templates
<
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
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates40
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
,
GTEST_TEMPLATE_
T39
,
GTEST_TEMPLATE_
T40
,
GTEST_TEMPLATE_
T41
>
struct
Templates
<
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
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates41
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
,
GTEST_TEMPLATE_
T39
,
GTEST_TEMPLATE_
T40
,
GTEST_TEMPLATE_
T41
,
GTEST_TEMPLATE_
T42
>
struct
Templates
<
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
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates42
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
,
GTEST_TEMPLATE_
T39
,
GTEST_TEMPLATE_
T40
,
GTEST_TEMPLATE_
T41
,
GTEST_TEMPLATE_
T42
,
GTEST_TEMPLATE_
T43
>
struct
Templates
<
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
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates43
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
,
GTEST_TEMPLATE_
T39
,
GTEST_TEMPLATE_
T40
,
GTEST_TEMPLATE_
T41
,
GTEST_TEMPLATE_
T42
,
GTEST_TEMPLATE_
T43
,
GTEST_TEMPLATE_
T44
>
struct
Templates
<
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
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates44
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
,
GTEST_TEMPLATE_
T39
,
GTEST_TEMPLATE_
T40
,
GTEST_TEMPLATE_
T41
,
GTEST_TEMPLATE_
T42
,
GTEST_TEMPLATE_
T43
,
GTEST_TEMPLATE_
T44
,
GTEST_TEMPLATE_
T45
>
struct
Templates
<
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
,
NoneT
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates45
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
,
GTEST_TEMPLATE_
T39
,
GTEST_TEMPLATE_
T40
,
GTEST_TEMPLATE_
T41
,
GTEST_TEMPLATE_
T42
,
GTEST_TEMPLATE_
T43
,
GTEST_TEMPLATE_
T44
,
GTEST_TEMPLATE_
T45
,
GTEST_TEMPLATE_
T46
>
struct
Templates
<
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
,
NoneT
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates46
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
,
GTEST_TEMPLATE_
T39
,
GTEST_TEMPLATE_
T40
,
GTEST_TEMPLATE_
T41
,
GTEST_TEMPLATE_
T42
,
GTEST_TEMPLATE_
T43
,
GTEST_TEMPLATE_
T44
,
GTEST_TEMPLATE_
T45
,
GTEST_TEMPLATE_
T46
,
GTEST_TEMPLATE_
T47
>
struct
Templates
<
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
,
NoneT
,
NoneT
,
NoneT
>
{
typedef
Templates47
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
,
GTEST_TEMPLATE_
T39
,
GTEST_TEMPLATE_
T40
,
GTEST_TEMPLATE_
T41
,
GTEST_TEMPLATE_
T42
,
GTEST_TEMPLATE_
T43
,
GTEST_TEMPLATE_
T44
,
GTEST_TEMPLATE_
T45
,
GTEST_TEMPLATE_
T46
,
GTEST_TEMPLATE_
T47
,
GTEST_TEMPLATE_
T48
>
struct
Templates
<
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
,
NoneT
,
NoneT
>
{
typedef
Templates48
<
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
<
GTEST_TEMPLATE_
T1
,
GTEST_TEMPLATE_
T2
,
GTEST_TEMPLATE_
T3
,
GTEST_TEMPLATE_
T4
,
GTEST_TEMPLATE_
T5
,
GTEST_TEMPLATE_
T6
,
GTEST_TEMPLATE_
T7
,
GTEST_TEMPLATE_
T8
,
GTEST_TEMPLATE_
T9
,
GTEST_TEMPLATE_
T10
,
GTEST_TEMPLATE_
T11
,
GTEST_TEMPLATE_
T12
,
GTEST_TEMPLATE_
T13
,
GTEST_TEMPLATE_
T14
,
GTEST_TEMPLATE_
T15
,
GTEST_TEMPLATE_
T16
,
GTEST_TEMPLATE_
T17
,
GTEST_TEMPLATE_
T18
,
GTEST_TEMPLATE_
T19
,
GTEST_TEMPLATE_
T20
,
GTEST_TEMPLATE_
T21
,
GTEST_TEMPLATE_
T22
,
GTEST_TEMPLATE_
T23
,
GTEST_TEMPLATE_
T24
,
GTEST_TEMPLATE_
T25
,
GTEST_TEMPLATE_
T26
,
GTEST_TEMPLATE_
T27
,
GTEST_TEMPLATE_
T28
,
GTEST_TEMPLATE_
T29
,
GTEST_TEMPLATE_
T30
,
GTEST_TEMPLATE_
T31
,
GTEST_TEMPLATE_
T32
,
GTEST_TEMPLATE_
T33
,
GTEST_TEMPLATE_
T34
,
GTEST_TEMPLATE_
T35
,
GTEST_TEMPLATE_
T36
,
GTEST_TEMPLATE_
T37
,
GTEST_TEMPLATE_
T38
,
GTEST_TEMPLATE_
T39
,
GTEST_TEMPLATE_
T40
,
GTEST_TEMPLATE_
T41
,
GTEST_TEMPLATE_
T42
,
GTEST_TEMPLATE_
T43
,
GTEST_TEMPLATE_
T44
,
GTEST_TEMPLATE_
T45
,
GTEST_TEMPLATE_
T46
,
GTEST_TEMPLATE_
T47
,
GTEST_TEMPLATE_
T48
,
GTEST_TEMPLATE_
T49
>
struct
Templates
<
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
,
NoneT
>
{
typedef
Templates49
<
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
;
};
// The TypeList template makes it possible to use either a single type
// or a Types<...> list in TYPED_TEST_CASE() and
// INSTANTIATE_TYPED_TEST_CASE_P().
template
<
typename
T
>
struct
TypeList
{
typedef
Types1
<
T
>
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
,
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
;
};
#endif
// GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
}
// namespace internal
}
// namespace testing
#endif
// GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
Event Timeline
Log In to Comment