From eec94fd551f6a006e71f2cedf6a7a363328b37a9 Mon Sep 17 00:00:00 2001 From: Rene Milk <rene.milk@wwu.de> Date: Tue, 14 Jun 2016 15:50:18 +0200 Subject: [PATCH] [clang-format] apply to gtest.h --- dune/xt/common/test/gtest/gtest.h | 20990 ++++++++++++++++------------ 1 file changed, 12272 insertions(+), 8718 deletions(-) diff --git a/dune/xt/common/test/gtest/gtest.h b/dune/xt/common/test/gtest/gtest.h index fd9a2c2a3..4a9d3c39d 100644 --- a/dune/xt/common/test/gtest/gtest.h +++ b/dune/xt/common/test/gtest/gtest.h @@ -289,24 +289,24 @@ // Int32FromGTestEnv() - parses an Int32 environment variable. // StringFromGTestEnv() - parses a string environment variable. -#include <ctype.h> // for isspace, etc -#include <stddef.h> // for ptrdiff_t +#include <ctype.h> // for isspace, etc +#include <stddef.h> // for ptrdiff_t #include <stdlib.h> #include <stdio.h> #include <string.h> #ifndef _WIN32_WCE -# include <sys/types.h> -# include <sys/stat.h> -#endif // !_WIN32_WCE +#include <sys/types.h> +#include <sys/stat.h> +#endif // !_WIN32_WCE #if defined __APPLE__ -# include <AvailabilityMacros.h> -# include <TargetConditionals.h> +#include <AvailabilityMacros.h> +#include <TargetConditionals.h> #endif -#include <iostream> // NOLINT -#include <sstream> // NOLINT -#include <string> // NOLINT +#include <iostream> // NOLINT +#include <sstream> // NOLINT +#include <string> // NOLINT #define GTEST_DEV_EMAIL_ "googletestframework@@googlegroups.com" #define GTEST_FLAG_PREFIX_ "gtest_" @@ -318,64 +318,63 @@ // Determines the version of gcc that is used to compile this. #ifdef __GNUC__ // 40302 means version 4.3.2. -# define GTEST_GCC_VER_ \ - (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__) -#endif // __GNUC__ +#define GTEST_GCC_VER_ (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) +#endif // __GNUC__ // Determines the platform on which Google Test is compiled. #ifdef __CYGWIN__ -# define GTEST_OS_CYGWIN 1 +#define GTEST_OS_CYGWIN 1 #elif defined __SYMBIAN32__ -# define GTEST_OS_SYMBIAN 1 +#define GTEST_OS_SYMBIAN 1 #elif defined _WIN32 -# define GTEST_OS_WINDOWS 1 -# ifdef _WIN32_WCE -# define GTEST_OS_WINDOWS_MOBILE 1 -# elif defined(__MINGW__) || defined(__MINGW32__) -# define GTEST_OS_WINDOWS_MINGW 1 -# else -# define GTEST_OS_WINDOWS_DESKTOP 1 -# endif // _WIN32_WCE +#define GTEST_OS_WINDOWS 1 +#ifdef _WIN32_WCE +#define GTEST_OS_WINDOWS_MOBILE 1 +#elif defined(__MINGW__) || defined(__MINGW32__) +#define GTEST_OS_WINDOWS_MINGW 1 +#else +#define GTEST_OS_WINDOWS_DESKTOP 1 +#endif // _WIN32_WCE #elif defined __APPLE__ -# define GTEST_OS_MAC 1 -# if TARGET_OS_IPHONE -# define GTEST_OS_IOS 1 -# if TARGET_IPHONE_SIMULATOR -# define GTEST_OS_IOS_SIMULATOR 1 -# endif -# endif +#define GTEST_OS_MAC 1 +#if TARGET_OS_IPHONE +#define GTEST_OS_IOS 1 +#if TARGET_IPHONE_SIMULATOR +#define GTEST_OS_IOS_SIMULATOR 1 +#endif +#endif #elif defined __linux__ -# define GTEST_OS_LINUX 1 -# if defined __ANDROID__ -# define GTEST_OS_LINUX_ANDROID 1 -# endif +#define GTEST_OS_LINUX 1 +#if defined __ANDROID__ +#define GTEST_OS_LINUX_ANDROID 1 +#endif #elif defined __MVS__ -# define GTEST_OS_ZOS 1 +#define GTEST_OS_ZOS 1 #elif defined(__sun) && defined(__SVR4) -# define GTEST_OS_SOLARIS 1 +#define GTEST_OS_SOLARIS 1 #elif defined(_AIX) -# define GTEST_OS_AIX 1 +#define GTEST_OS_AIX 1 #elif defined(__hpux) -# define GTEST_OS_HPUX 1 +#define GTEST_OS_HPUX 1 #elif defined __native_client__ -# define GTEST_OS_NACL 1 +#define GTEST_OS_NACL 1 #elif defined __OpenBSD__ -# define GTEST_OS_OPENBSD 1 +#define GTEST_OS_OPENBSD 1 #elif defined __QNX__ -# define GTEST_OS_QNX 1 -#endif // __CYGWIN__ +#define GTEST_OS_QNX 1 +#endif // __CYGWIN__ #ifndef GTEST_LANG_CXX11 // gcc and clang define __GXX_EXPERIMENTAL_CXX0X__ when // -std={c,gnu}++{0x,11} is passed. The C++11 standard specifies a // value for __cplusplus, and recent versions of clang, gcc, and // probably other compilers set that too in C++11 mode. -# if __GXX_EXPERIMENTAL_CXX0X__ || __cplusplus >= 201103L +#if __GXX_EXPERIMENTAL_CXX0X__ || __cplusplus >= 201103L // Compiling in at least C++11 mode. -# define GTEST_LANG_CXX11 1 -# else -# define GTEST_LANG_CXX11 0 -# endif +#define GTEST_LANG_CXX11 1 +#else +#define GTEST_LANG_CXX11 0 +#endif #endif // Brings in definitions for functions used in the testing::internal::posix @@ -385,26 +384,26 @@ // This assumes that non-Windows OSes provide unistd.h. For OSes where this // is not the case, we need to include headers that provide the functions // mentioned above. -# include <unistd.h> -# include <strings.h> +#include <unistd.h> +#include <strings.h> #elif !GTEST_OS_WINDOWS_MOBILE -# include <direct.h> -# include <io.h> +#include <direct.h> +#include <io.h> #endif #if GTEST_OS_LINUX_ANDROID // Used to define __ANDROID_API__ matching the target NDK API level. -# include <android/api-level.h> // NOLINT +#include <android/api-level.h> // NOLINT #endif // Defines this to true iff Google Test can use POSIX regular expressions. #ifndef GTEST_HAS_POSIX_RE -# if GTEST_OS_LINUX_ANDROID +#if GTEST_OS_LINUX_ANDROID // On Android, <regex.h> is only available starting with Gingerbread. -# define GTEST_HAS_POSIX_RE (__ANDROID_API__ >= 9) -# else -# define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS) -# endif +#define GTEST_HAS_POSIX_RE (__ANDROID_API__ >= 9) +#else +#define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS) +#endif #endif #if GTEST_HAS_POSIX_RE @@ -413,73 +412,73 @@ // won't compile otherwise. We can #include it here as we already // included <stdlib.h>, which is guaranteed to define size_t through // <stddef.h>. -# include <regex.h> // NOLINT +#include <regex.h> // NOLINT -# define GTEST_USES_POSIX_RE 1 +#define GTEST_USES_POSIX_RE 1 #elif GTEST_OS_WINDOWS // <regex.h> is not available on Windows. Use our own simple regex // implementation instead. -# define GTEST_USES_SIMPLE_RE 1 +#define GTEST_USES_SIMPLE_RE 1 #else // <regex.h> may not be available on this platform. Use our own // simple regex implementation instead. -# define GTEST_USES_SIMPLE_RE 1 +#define GTEST_USES_SIMPLE_RE 1 -#endif // GTEST_HAS_POSIX_RE +#endif // GTEST_HAS_POSIX_RE #ifndef GTEST_HAS_EXCEPTIONS // The user didn't tell us whether exceptions are enabled, so we need // to figure it out. -# if defined(_MSC_VER) || defined(__BORLANDC__) +#if defined(_MSC_VER) || defined(__BORLANDC__) // MSVC's and C++Builder's implementations of the STL use the _HAS_EXCEPTIONS // macro to enable exceptions, so we'll do the same. // Assumes that exceptions are enabled by default. -# ifndef _HAS_EXCEPTIONS -# define _HAS_EXCEPTIONS 1 -# endif // _HAS_EXCEPTIONS -# define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS -# elif defined(__GNUC__) && __EXCEPTIONS +#ifndef _HAS_EXCEPTIONS +#define _HAS_EXCEPTIONS 1 +#endif // _HAS_EXCEPTIONS +#define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS +#elif defined(__GNUC__) && __EXCEPTIONS // gcc defines __EXCEPTIONS to 1 iff exceptions are enabled. -# define GTEST_HAS_EXCEPTIONS 1 -# elif defined(__SUNPRO_CC) +#define GTEST_HAS_EXCEPTIONS 1 +#elif defined(__SUNPRO_CC) // Sun Pro CC supports exceptions. However, there is no compile-time way of // detecting whether they are enabled or not. Therefore, we assume that // they are enabled unless the user tells us otherwise. -# define GTEST_HAS_EXCEPTIONS 1 -# elif defined(__IBMCPP__) && __EXCEPTIONS +#define GTEST_HAS_EXCEPTIONS 1 +#elif defined(__IBMCPP__) && __EXCEPTIONS // xlC defines __EXCEPTIONS to 1 iff exceptions are enabled. -# define GTEST_HAS_EXCEPTIONS 1 -# elif defined(__HP_aCC) +#define GTEST_HAS_EXCEPTIONS 1 +#elif defined(__HP_aCC) // Exception handling is in effect by default in HP aCC compiler. It has to // be turned of by +noeh compiler option if desired. -# define GTEST_HAS_EXCEPTIONS 1 -# else +#define GTEST_HAS_EXCEPTIONS 1 +#else // For other compilers, we assume exceptions are disabled to be // conservative. -# define GTEST_HAS_EXCEPTIONS 0 -# endif // defined(_MSC_VER) || defined(__BORLANDC__) -#endif // GTEST_HAS_EXCEPTIONS +#define GTEST_HAS_EXCEPTIONS 0 +#endif // defined(_MSC_VER) || defined(__BORLANDC__) +#endif // GTEST_HAS_EXCEPTIONS #if !defined(GTEST_HAS_STD_STRING) // Even though we don't use this macro any longer, we keep it in case // some clients still depend on it. -# define GTEST_HAS_STD_STRING 1 +#define GTEST_HAS_STD_STRING 1 #elif !GTEST_HAS_STD_STRING // The user told us that ::std::string isn't available. -# error "Google Test cannot be used where ::std::string isn't available." -#endif // !defined(GTEST_HAS_STD_STRING) +#error "Google Test cannot be used where ::std::string isn't available." +#endif // !defined(GTEST_HAS_STD_STRING) #ifndef GTEST_HAS_GLOBAL_STRING // The user didn't tell us whether ::string is available, so we need // to figure it out. -# define GTEST_HAS_GLOBAL_STRING 0 +#define GTEST_HAS_GLOBAL_STRING 0 -#endif // GTEST_HAS_GLOBAL_STRING +#endif // GTEST_HAS_GLOBAL_STRING #ifndef GTEST_HAS_STD_WSTRING // The user didn't tell us whether ::std::wstring is available, so we need @@ -490,79 +489,76 @@ // Cygwin 1.7 and below doesn't support ::std::wstring. // Solaris' libc++ doesn't support it either. Android has // no support for it at least as recent as Froyo (2.2). -# define GTEST_HAS_STD_WSTRING \ - (!(GTEST_OS_LINUX_ANDROID || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS)) +#define GTEST_HAS_STD_WSTRING (!(GTEST_OS_LINUX_ANDROID || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS)) -#endif // GTEST_HAS_STD_WSTRING +#endif // GTEST_HAS_STD_WSTRING #ifndef GTEST_HAS_GLOBAL_WSTRING // The user didn't tell us whether ::wstring is available, so we need // to figure it out. -# define GTEST_HAS_GLOBAL_WSTRING \ - (GTEST_HAS_STD_WSTRING && GTEST_HAS_GLOBAL_STRING) -#endif // GTEST_HAS_GLOBAL_WSTRING +#define GTEST_HAS_GLOBAL_WSTRING (GTEST_HAS_STD_WSTRING && GTEST_HAS_GLOBAL_STRING) +#endif // GTEST_HAS_GLOBAL_WSTRING // Determines whether RTTI is available. #ifndef GTEST_HAS_RTTI // The user didn't tell us whether RTTI is enabled, so we need to // figure it out. -# ifdef _MSC_VER +#ifdef _MSC_VER -# ifdef _CPPRTTI // MSVC defines this macro iff RTTI is enabled. -# define GTEST_HAS_RTTI 1 -# else -# define GTEST_HAS_RTTI 0 -# endif +#ifdef _CPPRTTI // MSVC defines this macro iff RTTI is enabled. +#define GTEST_HAS_RTTI 1 +#else +#define GTEST_HAS_RTTI 0 +#endif // Starting with version 4.3.2, gcc defines __GXX_RTTI iff RTTI is enabled. -# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40302) +#elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40302) -# ifdef __GXX_RTTI +#ifdef __GXX_RTTI // When building against STLport with the Android NDK and with // -frtti -fno-exceptions, the build fails at link time with undefined // references to __cxa_bad_typeid. Note sure if STL or toolchain bug, // so disable RTTI when detected. -# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) && \ - !defined(__EXCEPTIONS) -# define GTEST_HAS_RTTI 0 -# else -# define GTEST_HAS_RTTI 1 -# endif // GTEST_OS_LINUX_ANDROID && __STLPORT_MAJOR && !__EXCEPTIONS -# else -# define GTEST_HAS_RTTI 0 -# endif // __GXX_RTTI +#if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) && !defined(__EXCEPTIONS) +#define GTEST_HAS_RTTI 0 +#else +#define GTEST_HAS_RTTI 1 +#endif // GTEST_OS_LINUX_ANDROID && __STLPORT_MAJOR && !__EXCEPTIONS +#else +#define GTEST_HAS_RTTI 0 +#endif // __GXX_RTTI // Clang defines __GXX_RTTI starting with version 3.0, but its manual recommends // using has_feature instead. has_feature(cxx_rtti) is supported since 2.7, the // first version with C++ support. -# elif defined(__clang__) +#elif defined(__clang__) -# define GTEST_HAS_RTTI __has_feature(cxx_rtti) +#define GTEST_HAS_RTTI __has_feature(cxx_rtti) // Starting with version 9.0 IBM Visual Age defines __RTTI_ALL__ to 1 if // both the typeid and dynamic_cast features are present. -# elif defined(__IBMCPP__) && (__IBMCPP__ >= 900) +#elif defined(__IBMCPP__) && (__IBMCPP__ >= 900) -# ifdef __RTTI_ALL__ -# define GTEST_HAS_RTTI 1 -# else -# define GTEST_HAS_RTTI 0 -# endif +#ifdef __RTTI_ALL__ +#define GTEST_HAS_RTTI 1 +#else +#define GTEST_HAS_RTTI 0 +#endif -# else +#else // For all other compilers, we assume RTTI is enabled. -# define GTEST_HAS_RTTI 1 +#define GTEST_HAS_RTTI 1 -# endif // _MSC_VER +#endif // _MSC_VER -#endif // GTEST_HAS_RTTI +#endif // GTEST_HAS_RTTI // It's this header's responsibility to #include <typeinfo> when RTTI // is enabled. #if GTEST_HAS_RTTI -# include <typeinfo> +#include <typeinfo> #endif // Determines whether Google Test can use the pthreads library. @@ -572,31 +568,30 @@ // // To disable threading support in Google Test, add -DGTEST_HAS_PTHREAD=0 // to your compiler flags. -# define GTEST_HAS_PTHREAD (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_HPUX \ - || GTEST_OS_QNX) -#endif // GTEST_HAS_PTHREAD +#define GTEST_HAS_PTHREAD (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_HPUX || GTEST_OS_QNX) +#endif // GTEST_HAS_PTHREAD #if GTEST_HAS_PTHREAD // gtest-port.h guarantees to #include <pthread.h> when GTEST_HAS_PTHREAD is // true. -# include <pthread.h> // NOLINT +#include <pthread.h> // NOLINT // For timespec and nanosleep, used below. -# include <time.h> // NOLINT +#include <time.h> // NOLINT #endif // Determines whether Google Test can use tr1/tuple. You can define // this macro to 0 to prevent Google Test from using tuple (any // feature depending on tuple with be disabled in this mode). #ifndef GTEST_HAS_TR1_TUPLE -# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) +#if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) // STLport, provided with the Android NDK, has neither <tr1/tuple> or <tuple>. -# define GTEST_HAS_TR1_TUPLE 0 -# else +#define GTEST_HAS_TR1_TUPLE 0 +#else // The user didn't tell us not to do it, so we assume it's OK. -# define GTEST_HAS_TR1_TUPLE 1 -# endif -#endif // GTEST_HAS_TR1_TUPLE +#define GTEST_HAS_TR1_TUPLE 1 +#endif +#endif // GTEST_HAS_TR1_TUPLE // Determines whether Google Test's own tr1 tuple implementation // should be used. @@ -613,32 +608,33 @@ // user has. QNX's QCC compiler is a modified GCC but it doesn't // support TR1 tuple. libc++ only provides std::tuple, in C++11 mode, // and it can be used with some compilers that define __GNUC__. -# if (defined(__GNUC__) && !defined(__CUDACC__) && (GTEST_GCC_VER_ >= 40000) \ - && !GTEST_OS_QNX && !defined(_LIBCPP_VERSION)) || _MSC_VER >= 1600 -# define GTEST_ENV_HAS_TR1_TUPLE_ 1 -# endif +#if (defined(__GNUC__) && !defined(__CUDACC__) && (GTEST_GCC_VER_ >= 40000) && !GTEST_OS_QNX \ + && !defined(_LIBCPP_VERSION)) \ + || _MSC_VER >= 1600 +#define GTEST_ENV_HAS_TR1_TUPLE_ 1 +#endif // C++11 specifies that <tuple> provides std::tuple. Use that if gtest is used // in C++11 mode and libstdc++ isn't very old (binaries targeting OS X 10.6 // can build with clang but need to use gcc4.2's libstdc++). -# if GTEST_LANG_CXX11 && (!defined(__GLIBCXX__) || __GLIBCXX__ > 20110325) -# define GTEST_ENV_HAS_STD_TUPLE_ 1 -# endif +#if GTEST_LANG_CXX11 && (!defined(__GLIBCXX__) || __GLIBCXX__ > 20110325) +#define GTEST_ENV_HAS_STD_TUPLE_ 1 +#endif -# if GTEST_ENV_HAS_TR1_TUPLE_ || GTEST_ENV_HAS_STD_TUPLE_ -# define GTEST_USE_OWN_TR1_TUPLE 0 -# else -# define GTEST_USE_OWN_TR1_TUPLE 1 -# endif +#if GTEST_ENV_HAS_TR1_TUPLE_ || GTEST_ENV_HAS_STD_TUPLE_ +#define GTEST_USE_OWN_TR1_TUPLE 0 +#else +#define GTEST_USE_OWN_TR1_TUPLE 1 +#endif -#endif // GTEST_USE_OWN_TR1_TUPLE +#endif // GTEST_USE_OWN_TR1_TUPLE // To avoid conditional compilation everywhere, we make it // gtest-port.h's responsibility to #include the header implementing // tr1/tuple. #if GTEST_HAS_TR1_TUPLE -# if GTEST_USE_OWN_TR1_TUPLE +#if GTEST_USE_OWN_TR1_TUPLE // This file was GENERATED by command: // pump.py gtest-tuple.h.pump // DO NOT EDIT BY HAND!!! @@ -679,7 +675,7 @@ #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ -#include <utility> // For ::std::pair. +#include <utility> // For ::std::pair. // The compiler used in Symbian has a bug that prevents us from declaring the // tuple template as a friend (it complains that tuple is redefined). This @@ -687,57 +683,46 @@ // private as public. // Sun Studio versions < 12 also have the above bug. #if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590) -# define GTEST_DECLARE_TUPLE_AS_FRIEND_ public: +#define GTEST_DECLARE_TUPLE_AS_FRIEND_ public: #else -# define GTEST_DECLARE_TUPLE_AS_FRIEND_ \ - template <GTEST_10_TYPENAMES_(U)> friend class tuple; \ - private: +#define GTEST_DECLARE_TUPLE_AS_FRIEND_ \ + template <GTEST_10_TYPENAMES_(U)> \ + friend class tuple; \ + \ +private: #endif // GTEST_n_TUPLE_(T) is the type of an n-tuple. #define GTEST_0_TUPLE_(T) tuple<> -#define GTEST_1_TUPLE_(T) tuple<T##0, void, void, void, void, void, void, \ - void, void, void> -#define GTEST_2_TUPLE_(T) tuple<T##0, T##1, void, void, void, void, void, \ - void, void, void> -#define GTEST_3_TUPLE_(T) tuple<T##0, T##1, T##2, void, void, void, void, \ - void, void, void> -#define GTEST_4_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, void, void, void, \ - void, void, void> -#define GTEST_5_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, void, void, \ - void, void, void> -#define GTEST_6_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, void, \ - void, void, void> -#define GTEST_7_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \ - void, void, void> -#define GTEST_8_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \ - T##7, void, void> -#define GTEST_9_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \ - T##7, T##8, void> -#define GTEST_10_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \ - T##7, T##8, T##9> +#define GTEST_1_TUPLE_(T) tuple<T##0, void, void, void, void, void, void, void, void, void> +#define GTEST_2_TUPLE_(T) tuple<T##0, T##1, void, void, void, void, void, void, void, void> +#define GTEST_3_TUPLE_(T) tuple<T##0, T##1, T##2, void, void, void, void, void, void, void> +#define GTEST_4_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, void, void, void, void, void, void> +#define GTEST_5_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, void, void, void, void, void> +#define GTEST_6_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, void, void, void, void> +#define GTEST_7_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, void, void, void> +#define GTEST_8_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, T##7, void, void> +#define GTEST_9_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, T##7, T##8, void> +#define GTEST_10_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, T##7, T##8, T##9> // GTEST_n_TYPENAMES_(T) declares a list of n typenames. #define GTEST_0_TYPENAMES_(T) #define GTEST_1_TYPENAMES_(T) typename T##0 #define GTEST_2_TYPENAMES_(T) typename T##0, typename T##1 #define GTEST_3_TYPENAMES_(T) typename T##0, typename T##1, typename T##2 -#define GTEST_4_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ - typename T##3 -#define GTEST_5_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ - typename T##3, typename T##4 -#define GTEST_6_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ - typename T##3, typename T##4, typename T##5 -#define GTEST_7_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ - typename T##3, typename T##4, typename T##5, typename T##6 -#define GTEST_8_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ - typename T##3, typename T##4, typename T##5, typename T##6, typename T##7 -#define GTEST_9_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ - typename T##3, typename T##4, typename T##5, typename T##6, \ - typename T##7, typename T##8 -#define GTEST_10_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ - typename T##3, typename T##4, typename T##5, typename T##6, \ - typename T##7, typename T##8, typename T##9 +#define GTEST_4_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, typename T##3 +#define GTEST_5_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, typename T##3, typename T##4 +#define GTEST_6_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, typename T##3, typename T##4, typename T##5 +#define GTEST_7_TYPENAMES_(T) \ + typename T##0, typename T##1, typename T##2, typename T##3, typename T##4, typename T##5, typename T##6 +#define GTEST_8_TYPENAMES_(T) \ + typename T##0, typename T##1, typename T##2, typename T##3, typename T##4, typename T##5, typename T##6, typename T##7 +#define GTEST_9_TYPENAMES_(T) \ + typename T##0, typename T##1, typename T##2, typename T##3, typename T##4, typename T##5, typename T##6, \ + typename T##7, typename T##8 +#define GTEST_10_TYPENAMES_(T) \ + typename T##0, typename T##1, typename T##2, typename T##3, typename T##4, typename T##5, typename T##6, \ + typename T##7, typename T##8, typename T##9 // In theory, defining stuff in the ::std namespace is undefined // behavior. We can do this as we are playing the role of a standard @@ -745,10 +730,8 @@ namespace std { namespace tr1 { -template <typename T0 = void, typename T1 = void, typename T2 = void, - typename T3 = void, typename T4 = void, typename T5 = void, - typename T6 = void, typename T7 = void, typename T8 = void, - typename T9 = void> +template <typename T0 = void, typename T1 = void, typename T2 = void, typename T3 = void, typename T4 = void, + typename T5 = void, typename T6 = void, typename T7 = void, typename T8 = void, typename T9 = void> class tuple; // Anything in namespace gtest_internal is Google Test's INTERNAL @@ -757,9 +740,15 @@ namespace gtest_internal { // ByRef<T>::type is T if T is a reference; otherwise it's const T&. template <typename T> -struct ByRef { typedef const T& type; }; // NOLINT +struct ByRef +{ + typedef const T& type; +}; // NOLINT template <typename T> -struct ByRef<T&> { typedef T& type; }; // NOLINT +struct ByRef<T&> +{ + typedef T& type; +}; // NOLINT // A handy wrapper for ByRef. #define GTEST_BY_REF_(T) typename ::std::tr1::gtest_internal::ByRef<T>::type @@ -767,15 +756,22 @@ struct ByRef<T&> { typedef T& type; }; // NOLINT // AddRef<T>::type is T if T is a reference; otherwise it's T&. This // is the same as tr1::add_reference<T>::type. template <typename T> -struct AddRef { typedef T& type; }; // NOLINT +struct AddRef +{ + typedef T& type; +}; // NOLINT template <typename T> -struct AddRef<T&> { typedef T& type; }; // NOLINT +struct AddRef<T&> +{ + typedef T& type; +}; // NOLINT // A handy wrapper for AddRef. #define GTEST_ADD_REF_(T) typename ::std::tr1::gtest_internal::AddRef<T>::type // A helper for implementing get<k>(). -template <int k> class Get; +template <int k> +class Get; // A helper for implementing tuple_element<k, T>. kIndexValid is true // iff k < the number of fields in tuple type T. @@ -783,90 +779,127 @@ template <bool kIndexValid, int kIndex, class Tuple> struct TupleElement; template <GTEST_10_TYPENAMES_(T)> -struct TupleElement<true, 0, GTEST_10_TUPLE_(T) > { +struct TupleElement<true, 0, GTEST_10_TUPLE_(T)> +{ typedef T0 type; }; template <GTEST_10_TYPENAMES_(T)> -struct TupleElement<true, 1, GTEST_10_TUPLE_(T) > { +struct TupleElement<true, 1, GTEST_10_TUPLE_(T)> +{ typedef T1 type; }; template <GTEST_10_TYPENAMES_(T)> -struct TupleElement<true, 2, GTEST_10_TUPLE_(T) > { +struct TupleElement<true, 2, GTEST_10_TUPLE_(T)> +{ typedef T2 type; }; template <GTEST_10_TYPENAMES_(T)> -struct TupleElement<true, 3, GTEST_10_TUPLE_(T) > { +struct TupleElement<true, 3, GTEST_10_TUPLE_(T)> +{ typedef T3 type; }; template <GTEST_10_TYPENAMES_(T)> -struct TupleElement<true, 4, GTEST_10_TUPLE_(T) > { +struct TupleElement<true, 4, GTEST_10_TUPLE_(T)> +{ typedef T4 type; }; template <GTEST_10_TYPENAMES_(T)> -struct TupleElement<true, 5, GTEST_10_TUPLE_(T) > { +struct TupleElement<true, 5, GTEST_10_TUPLE_(T)> +{ typedef T5 type; }; template <GTEST_10_TYPENAMES_(T)> -struct TupleElement<true, 6, GTEST_10_TUPLE_(T) > { +struct TupleElement<true, 6, GTEST_10_TUPLE_(T)> +{ typedef T6 type; }; template <GTEST_10_TYPENAMES_(T)> -struct TupleElement<true, 7, GTEST_10_TUPLE_(T) > { +struct TupleElement<true, 7, GTEST_10_TUPLE_(T)> +{ typedef T7 type; }; template <GTEST_10_TYPENAMES_(T)> -struct TupleElement<true, 8, GTEST_10_TUPLE_(T) > { +struct TupleElement<true, 8, GTEST_10_TUPLE_(T)> +{ typedef T8 type; }; template <GTEST_10_TYPENAMES_(T)> -struct TupleElement<true, 9, GTEST_10_TUPLE_(T) > { +struct TupleElement<true, 9, GTEST_10_TUPLE_(T)> +{ typedef T9 type; }; -} // namespace gtest_internal +} // namespace gtest_internal template <> -class tuple<> { - public: - tuple() {} - tuple(const tuple& /* t */) {} - tuple& operator=(const tuple& /* t */) { return *this; } +class tuple<> +{ +public: + tuple() + { + } + tuple(const tuple& /* t */) + { + } + tuple& operator=(const tuple& /* t */) + { + return *this; + } }; template <GTEST_1_TYPENAMES_(T)> -class GTEST_1_TUPLE_(T) { - public: - template <int k> friend class gtest_internal::Get; - - tuple() : f0_() {} +class GTEST_1_TUPLE_(T) +{ +public: + template <int k> + friend class gtest_internal::Get; + + tuple() + : f0_() + { + } - explicit tuple(GTEST_BY_REF_(T0) f0) : f0_(f0) {} + explicit tuple(GTEST_BY_REF_(T0) f0) + : f0_(f0) + { + } - tuple(const tuple& t) : f0_(t.f0_) {} + tuple(const tuple& t) + : f0_(t.f0_) + { + } template <GTEST_1_TYPENAMES_(U)> - tuple(const GTEST_1_TUPLE_(U)& t) : f0_(t.f0_) {} + tuple(const GTEST_1_TUPLE_(U) & t) + : f0_(t.f0_) + { + } - tuple& operator=(const tuple& t) { return CopyFrom(t); } + tuple& operator=(const tuple& t) + { + return CopyFrom(t); + } template <GTEST_1_TYPENAMES_(U)> - tuple& operator=(const GTEST_1_TUPLE_(U)& t) { + tuple& operator=(const GTEST_1_TUPLE_(U) & t) + { return CopyFrom(t); } GTEST_DECLARE_TUPLE_AS_FRIEND_ template <GTEST_1_TYPENAMES_(U)> - tuple& CopyFrom(const GTEST_1_TUPLE_(U)& t) { + tuple& CopyFrom(const GTEST_1_TUPLE_(U) & t) + { f0_ = t.f0_; return *this; } @@ -875,30 +908,56 @@ class GTEST_1_TUPLE_(T) { }; template <GTEST_2_TYPENAMES_(T)> -class GTEST_2_TUPLE_(T) { - public: - template <int k> friend class gtest_internal::Get; - - tuple() : f0_(), f1_() {} +class GTEST_2_TUPLE_(T) +{ +public: + template <int k> + friend class gtest_internal::Get; + + tuple() + : f0_() + , f1_() + { + } - explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1) : f0_(f0), - f1_(f1) {} + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1) + : f0_(f0) + , f1_(f1) + { + } - tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_) {} + tuple(const tuple& t) + : f0_(t.f0_) + , f1_(t.f1_) + { + } template <GTEST_2_TYPENAMES_(U)> - tuple(const GTEST_2_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_) {} + tuple(const GTEST_2_TUPLE_(U) & t) + : f0_(t.f0_) + , f1_(t.f1_) + { + } template <typename U0, typename U1> - tuple(const ::std::pair<U0, U1>& p) : f0_(p.first), f1_(p.second) {} + tuple(const ::std::pair<U0, U1>& p) + : f0_(p.first) + , f1_(p.second) + { + } - tuple& operator=(const tuple& t) { return CopyFrom(t); } + tuple& operator=(const tuple& t) + { + return CopyFrom(t); + } template <GTEST_2_TYPENAMES_(U)> - tuple& operator=(const GTEST_2_TUPLE_(U)& t) { + tuple& operator=(const GTEST_2_TUPLE_(U) & t) + { return CopyFrom(t); } template <typename U0, typename U1> - tuple& operator=(const ::std::pair<U0, U1>& p) { + tuple& operator=(const ::std::pair<U0, U1>& p) + { f0_ = p.first; f1_ = p.second; return *this; @@ -907,7 +966,8 @@ class GTEST_2_TUPLE_(T) { GTEST_DECLARE_TUPLE_AS_FRIEND_ template <GTEST_2_TYPENAMES_(U)> - tuple& CopyFrom(const GTEST_2_TUPLE_(U)& t) { + tuple& CopyFrom(const GTEST_2_TUPLE_(U) & t) + { f0_ = t.f0_; f1_ = t.f1_; return *this; @@ -918,31 +978,57 @@ class GTEST_2_TUPLE_(T) { }; template <GTEST_3_TYPENAMES_(T)> -class GTEST_3_TUPLE_(T) { - public: - template <int k> friend class gtest_internal::Get; - - tuple() : f0_(), f1_(), f2_() {} +class GTEST_3_TUPLE_(T) +{ +public: + template <int k> + friend class gtest_internal::Get; + + tuple() + : f0_() + , f1_() + , f2_() + { + } - explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, - GTEST_BY_REF_(T2) f2) : f0_(f0), f1_(f1), f2_(f2) {} + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, GTEST_BY_REF_(T2) f2) + : f0_(f0) + , f1_(f1) + , f2_(f2) + { + } - tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {} + tuple(const tuple& t) + : f0_(t.f0_) + , f1_(t.f1_) + , f2_(t.f2_) + { + } template <GTEST_3_TYPENAMES_(U)> - tuple(const GTEST_3_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {} + tuple(const GTEST_3_TUPLE_(U) & t) + : f0_(t.f0_) + , f1_(t.f1_) + , f2_(t.f2_) + { + } - tuple& operator=(const tuple& t) { return CopyFrom(t); } + tuple& operator=(const tuple& t) + { + return CopyFrom(t); + } template <GTEST_3_TYPENAMES_(U)> - tuple& operator=(const GTEST_3_TUPLE_(U)& t) { + tuple& operator=(const GTEST_3_TUPLE_(U) & t) + { return CopyFrom(t); } GTEST_DECLARE_TUPLE_AS_FRIEND_ template <GTEST_3_TYPENAMES_(U)> - tuple& CopyFrom(const GTEST_3_TUPLE_(U)& t) { + tuple& CopyFrom(const GTEST_3_TUPLE_(U) & t) + { f0_ = t.f0_; f1_ = t.f1_; f2_ = t.f2_; @@ -955,33 +1041,61 @@ class GTEST_3_TUPLE_(T) { }; template <GTEST_4_TYPENAMES_(T)> -class GTEST_4_TUPLE_(T) { - public: - template <int k> friend class gtest_internal::Get; - - tuple() : f0_(), f1_(), f2_(), f3_() {} +class GTEST_4_TUPLE_(T) +{ +public: + template <int k> + friend class gtest_internal::Get; + + tuple() + : f0_() + , f1_() + , f2_() + , f3_() + { + } - explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, - GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3) : f0_(f0), f1_(f1), f2_(f2), - f3_(f3) {} + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3) + : f0_(f0) + , f1_(f1) + , f2_(f2) + , f3_(f3) + { + } - tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_) {} + tuple(const tuple& t) + : f0_(t.f0_) + , f1_(t.f1_) + , f2_(t.f2_) + , f3_(t.f3_) + { + } template <GTEST_4_TYPENAMES_(U)> - tuple(const GTEST_4_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), - f3_(t.f3_) {} + tuple(const GTEST_4_TUPLE_(U) & t) + : f0_(t.f0_) + , f1_(t.f1_) + , f2_(t.f2_) + , f3_(t.f3_) + { + } - tuple& operator=(const tuple& t) { return CopyFrom(t); } + tuple& operator=(const tuple& t) + { + return CopyFrom(t); + } template <GTEST_4_TYPENAMES_(U)> - tuple& operator=(const GTEST_4_TUPLE_(U)& t) { + tuple& operator=(const GTEST_4_TUPLE_(U) & t) + { return CopyFrom(t); } GTEST_DECLARE_TUPLE_AS_FRIEND_ template <GTEST_4_TYPENAMES_(U)> - tuple& CopyFrom(const GTEST_4_TUPLE_(U)& t) { + tuple& CopyFrom(const GTEST_4_TUPLE_(U) & t) + { f0_ = t.f0_; f1_ = t.f1_; f2_ = t.f2_; @@ -996,34 +1110,66 @@ class GTEST_4_TUPLE_(T) { }; template <GTEST_5_TYPENAMES_(T)> -class GTEST_5_TUPLE_(T) { - public: - template <int k> friend class gtest_internal::Get; - - tuple() : f0_(), f1_(), f2_(), f3_(), f4_() {} +class GTEST_5_TUPLE_(T) +{ +public: + template <int k> + friend class gtest_internal::Get; + + tuple() + : f0_() + , f1_() + , f2_() + , f3_() + , f4_() + { + } - explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, - GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, - GTEST_BY_REF_(T4) f4) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4) {} + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, + GTEST_BY_REF_(T4) f4) + : f0_(f0) + , f1_(f1) + , f2_(f2) + , f3_(f3) + , f4_(f4) + { + } - tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), - f4_(t.f4_) {} + tuple(const tuple& t) + : f0_(t.f0_) + , f1_(t.f1_) + , f2_(t.f2_) + , f3_(t.f3_) + , f4_(t.f4_) + { + } template <GTEST_5_TYPENAMES_(U)> - tuple(const GTEST_5_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), - f3_(t.f3_), f4_(t.f4_) {} + tuple(const GTEST_5_TUPLE_(U) & t) + : f0_(t.f0_) + , f1_(t.f1_) + , f2_(t.f2_) + , f3_(t.f3_) + , f4_(t.f4_) + { + } - tuple& operator=(const tuple& t) { return CopyFrom(t); } + tuple& operator=(const tuple& t) + { + return CopyFrom(t); + } template <GTEST_5_TYPENAMES_(U)> - tuple& operator=(const GTEST_5_TUPLE_(U)& t) { + tuple& operator=(const GTEST_5_TUPLE_(U) & t) + { return CopyFrom(t); } GTEST_DECLARE_TUPLE_AS_FRIEND_ template <GTEST_5_TYPENAMES_(U)> - tuple& CopyFrom(const GTEST_5_TUPLE_(U)& t) { + tuple& CopyFrom(const GTEST_5_TUPLE_(U) & t) + { f0_ = t.f0_; f1_ = t.f1_; f2_ = t.f2_; @@ -1040,35 +1186,70 @@ class GTEST_5_TUPLE_(T) { }; template <GTEST_6_TYPENAMES_(T)> -class GTEST_6_TUPLE_(T) { - public: - template <int k> friend class gtest_internal::Get; - - tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_() {} +class GTEST_6_TUPLE_(T) +{ +public: + template <int k> + friend class gtest_internal::Get; + + tuple() + : f0_() + , f1_() + , f2_() + , f3_() + , f4_() + , f5_() + { + } - explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, - GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, - GTEST_BY_REF_(T5) f5) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), - f5_(f5) {} + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, + GTEST_BY_REF_(T4) f4, GTEST_BY_REF_(T5) f5) + : f0_(f0) + , f1_(f1) + , f2_(f2) + , f3_(f3) + , f4_(f4) + , f5_(f5) + { + } - tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), - f4_(t.f4_), f5_(t.f5_) {} + tuple(const tuple& t) + : f0_(t.f0_) + , f1_(t.f1_) + , f2_(t.f2_) + , f3_(t.f3_) + , f4_(t.f4_) + , f5_(t.f5_) + { + } template <GTEST_6_TYPENAMES_(U)> - tuple(const GTEST_6_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), - f3_(t.f3_), f4_(t.f4_), f5_(t.f5_) {} + tuple(const GTEST_6_TUPLE_(U) & t) + : f0_(t.f0_) + , f1_(t.f1_) + , f2_(t.f2_) + , f3_(t.f3_) + , f4_(t.f4_) + , f5_(t.f5_) + { + } - tuple& operator=(const tuple& t) { return CopyFrom(t); } + tuple& operator=(const tuple& t) + { + return CopyFrom(t); + } template <GTEST_6_TYPENAMES_(U)> - tuple& operator=(const GTEST_6_TUPLE_(U)& t) { + tuple& operator=(const GTEST_6_TUPLE_(U) & t) + { return CopyFrom(t); } GTEST_DECLARE_TUPLE_AS_FRIEND_ template <GTEST_6_TYPENAMES_(U)> - tuple& CopyFrom(const GTEST_6_TUPLE_(U)& t) { + tuple& CopyFrom(const GTEST_6_TUPLE_(U) & t) + { f0_ = t.f0_; f1_ = t.f1_; f2_ = t.f2_; @@ -1087,35 +1268,74 @@ class GTEST_6_TUPLE_(T) { }; template <GTEST_7_TYPENAMES_(T)> -class GTEST_7_TUPLE_(T) { - public: - template <int k> friend class gtest_internal::Get; - - tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_() {} +class GTEST_7_TUPLE_(T) +{ +public: + template <int k> + friend class gtest_internal::Get; + + tuple() + : f0_() + , f1_() + , f2_() + , f3_() + , f4_() + , f5_() + , f6_() + { + } - explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, - GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, - GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6) : f0_(f0), f1_(f1), f2_(f2), - f3_(f3), f4_(f4), f5_(f5), f6_(f6) {} + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, + GTEST_BY_REF_(T4) f4, GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6) + : f0_(f0) + , f1_(f1) + , f2_(f2) + , f3_(f3) + , f4_(f4) + , f5_(f5) + , f6_(f6) + { + } - tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), - f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {} + tuple(const tuple& t) + : f0_(t.f0_) + , f1_(t.f1_) + , f2_(t.f2_) + , f3_(t.f3_) + , f4_(t.f4_) + , f5_(t.f5_) + , f6_(t.f6_) + { + } template <GTEST_7_TYPENAMES_(U)> - tuple(const GTEST_7_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), - f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {} + tuple(const GTEST_7_TUPLE_(U) & t) + : f0_(t.f0_) + , f1_(t.f1_) + , f2_(t.f2_) + , f3_(t.f3_) + , f4_(t.f4_) + , f5_(t.f5_) + , f6_(t.f6_) + { + } - tuple& operator=(const tuple& t) { return CopyFrom(t); } + tuple& operator=(const tuple& t) + { + return CopyFrom(t); + } template <GTEST_7_TYPENAMES_(U)> - tuple& operator=(const GTEST_7_TUPLE_(U)& t) { + tuple& operator=(const GTEST_7_TUPLE_(U) & t) + { return CopyFrom(t); } GTEST_DECLARE_TUPLE_AS_FRIEND_ template <GTEST_7_TYPENAMES_(U)> - tuple& CopyFrom(const GTEST_7_TUPLE_(U)& t) { + tuple& CopyFrom(const GTEST_7_TUPLE_(U) & t) + { f0_ = t.f0_; f1_ = t.f1_; f2_ = t.f2_; @@ -1136,36 +1356,78 @@ class GTEST_7_TUPLE_(T) { }; template <GTEST_8_TYPENAMES_(T)> -class GTEST_8_TUPLE_(T) { - public: - template <int k> friend class gtest_internal::Get; - - tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_() {} +class GTEST_8_TUPLE_(T) +{ +public: + template <int k> + friend class gtest_internal::Get; + + tuple() + : f0_() + , f1_() + , f2_() + , f3_() + , f4_() + , f5_() + , f6_() + , f7_() + { + } - explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, - GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, - GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, - GTEST_BY_REF_(T7) f7) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), - f5_(f5), f6_(f6), f7_(f7) {} + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, + GTEST_BY_REF_(T4) f4, GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7) + : f0_(f0) + , f1_(f1) + , f2_(f2) + , f3_(f3) + , f4_(f4) + , f5_(f5) + , f6_(f6) + , f7_(f7) + { + } - tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), - f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {} + tuple(const tuple& t) + : f0_(t.f0_) + , f1_(t.f1_) + , f2_(t.f2_) + , f3_(t.f3_) + , f4_(t.f4_) + , f5_(t.f5_) + , f6_(t.f6_) + , f7_(t.f7_) + { + } template <GTEST_8_TYPENAMES_(U)> - tuple(const GTEST_8_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), - f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {} + tuple(const GTEST_8_TUPLE_(U) & t) + : f0_(t.f0_) + , f1_(t.f1_) + , f2_(t.f2_) + , f3_(t.f3_) + , f4_(t.f4_) + , f5_(t.f5_) + , f6_(t.f6_) + , f7_(t.f7_) + { + } - tuple& operator=(const tuple& t) { return CopyFrom(t); } + tuple& operator=(const tuple& t) + { + return CopyFrom(t); + } template <GTEST_8_TYPENAMES_(U)> - tuple& operator=(const GTEST_8_TUPLE_(U)& t) { + tuple& operator=(const GTEST_8_TUPLE_(U) & t) + { return CopyFrom(t); } GTEST_DECLARE_TUPLE_AS_FRIEND_ template <GTEST_8_TYPENAMES_(U)> - tuple& CopyFrom(const GTEST_8_TUPLE_(U)& t) { + tuple& CopyFrom(const GTEST_8_TUPLE_(U) & t) + { f0_ = t.f0_; f1_ = t.f1_; f2_ = t.f2_; @@ -1188,36 +1450,83 @@ class GTEST_8_TUPLE_(T) { }; template <GTEST_9_TYPENAMES_(T)> -class GTEST_9_TUPLE_(T) { - public: - template <int k> friend class gtest_internal::Get; - - tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_() {} +class GTEST_9_TUPLE_(T) +{ +public: + template <int k> + friend class gtest_internal::Get; + + tuple() + : f0_() + , f1_() + , f2_() + , f3_() + , f4_() + , f5_() + , f6_() + , f7_() + , f8_() + { + } - explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, - GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, - GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7, - GTEST_BY_REF_(T8) f8) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), - f5_(f5), f6_(f6), f7_(f7), f8_(f8) {} + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, + GTEST_BY_REF_(T4) f4, GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7, + GTEST_BY_REF_(T8) f8) + : f0_(f0) + , f1_(f1) + , f2_(f2) + , f3_(f3) + , f4_(f4) + , f5_(f5) + , f6_(f6) + , f7_(f7) + , f8_(f8) + { + } - tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), - f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {} + tuple(const tuple& t) + : f0_(t.f0_) + , f1_(t.f1_) + , f2_(t.f2_) + , f3_(t.f3_) + , f4_(t.f4_) + , f5_(t.f5_) + , f6_(t.f6_) + , f7_(t.f7_) + , f8_(t.f8_) + { + } template <GTEST_9_TYPENAMES_(U)> - tuple(const GTEST_9_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), - f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {} + tuple(const GTEST_9_TUPLE_(U) & t) + : f0_(t.f0_) + , f1_(t.f1_) + , f2_(t.f2_) + , f3_(t.f3_) + , f4_(t.f4_) + , f5_(t.f5_) + , f6_(t.f6_) + , f7_(t.f7_) + , f8_(t.f8_) + { + } - tuple& operator=(const tuple& t) { return CopyFrom(t); } + tuple& operator=(const tuple& t) + { + return CopyFrom(t); + } template <GTEST_9_TYPENAMES_(U)> - tuple& operator=(const GTEST_9_TUPLE_(U)& t) { + tuple& operator=(const GTEST_9_TUPLE_(U) & t) + { return CopyFrom(t); } GTEST_DECLARE_TUPLE_AS_FRIEND_ template <GTEST_9_TYPENAMES_(U)> - tuple& CopyFrom(const GTEST_9_TUPLE_(U)& t) { + tuple& CopyFrom(const GTEST_9_TUPLE_(U) & t) + { f0_ = t.f0_; f1_ = t.f1_; f2_ = t.f2_; @@ -1242,38 +1551,87 @@ class GTEST_9_TUPLE_(T) { }; template <GTEST_10_TYPENAMES_(T)> -class tuple { - public: - template <int k> friend class gtest_internal::Get; - - tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_(), - f9_() {} +class tuple +{ +public: + template <int k> + friend class gtest_internal::Get; + + tuple() + : f0_() + , f1_() + , f2_() + , f3_() + , f4_() + , f5_() + , f6_() + , f7_() + , f8_() + , f9_() + { + } - explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, - GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, - GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7, - GTEST_BY_REF_(T8) f8, GTEST_BY_REF_(T9) f9) : f0_(f0), f1_(f1), f2_(f2), - f3_(f3), f4_(f4), f5_(f5), f6_(f6), f7_(f7), f8_(f8), f9_(f9) {} + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, + GTEST_BY_REF_(T4) f4, GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7, + GTEST_BY_REF_(T8) f8, GTEST_BY_REF_(T9) f9) + : f0_(f0) + , f1_(f1) + , f2_(f2) + , f3_(f3) + , f4_(f4) + , f5_(f5) + , f6_(f6) + , f7_(f7) + , f8_(f8) + , f9_(f9) + { + } - tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), - f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), f9_(t.f9_) {} + tuple(const tuple& t) + : f0_(t.f0_) + , f1_(t.f1_) + , f2_(t.f2_) + , f3_(t.f3_) + , f4_(t.f4_) + , f5_(t.f5_) + , f6_(t.f6_) + , f7_(t.f7_) + , f8_(t.f8_) + , f9_(t.f9_) + { + } template <GTEST_10_TYPENAMES_(U)> - tuple(const GTEST_10_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), - f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), - f9_(t.f9_) {} + tuple(const GTEST_10_TUPLE_(U) & t) + : f0_(t.f0_) + , f1_(t.f1_) + , f2_(t.f2_) + , f3_(t.f3_) + , f4_(t.f4_) + , f5_(t.f5_) + , f6_(t.f6_) + , f7_(t.f7_) + , f8_(t.f8_) + , f9_(t.f9_) + { + } - tuple& operator=(const tuple& t) { return CopyFrom(t); } + tuple& operator=(const tuple& t) + { + return CopyFrom(t); + } template <GTEST_10_TYPENAMES_(U)> - tuple& operator=(const GTEST_10_TUPLE_(U)& t) { + tuple& operator=(const GTEST_10_TUPLE_(U) & t) + { return CopyFrom(t); } GTEST_DECLARE_TUPLE_AS_FRIEND_ template <GTEST_10_TYPENAMES_(U)> - tuple& CopyFrom(const GTEST_10_TUPLE_(U)& t) { + tuple& CopyFrom(const GTEST_10_TUPLE_(U) & t) + { f0_ = t.f0_; f1_ = t.f1_; f2_ = t.f2_; @@ -1305,269 +1663,341 @@ class tuple { // std::tr1::reference_wrapper<T> to make_tuple(). And we don't // implement tie(). -inline tuple<> make_tuple() { return tuple<>(); } +inline tuple<> make_tuple() +{ + return tuple<>(); +} template <GTEST_1_TYPENAMES_(T)> -inline GTEST_1_TUPLE_(T) make_tuple(const T0& f0) { +inline GTEST_1_TUPLE_(T) make_tuple(const T0& f0) +{ return GTEST_1_TUPLE_(T)(f0); } template <GTEST_2_TYPENAMES_(T)> -inline GTEST_2_TUPLE_(T) make_tuple(const T0& f0, const T1& f1) { +inline GTEST_2_TUPLE_(T) make_tuple(const T0& f0, const T1& f1) +{ return GTEST_2_TUPLE_(T)(f0, f1); } template <GTEST_3_TYPENAMES_(T)> -inline GTEST_3_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2) { +inline GTEST_3_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2) +{ return GTEST_3_TUPLE_(T)(f0, f1, f2); } template <GTEST_4_TYPENAMES_(T)> -inline GTEST_4_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, - const T3& f3) { +inline GTEST_4_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, const T3& f3) +{ return GTEST_4_TUPLE_(T)(f0, f1, f2, f3); } template <GTEST_5_TYPENAMES_(T)> -inline GTEST_5_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, - const T3& f3, const T4& f4) { +inline GTEST_5_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, const T3& f3, const T4& f4) +{ return GTEST_5_TUPLE_(T)(f0, f1, f2, f3, f4); } template <GTEST_6_TYPENAMES_(T)> -inline GTEST_6_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, - const T3& f3, const T4& f4, const T5& f5) { +inline GTEST_6_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, const T3& f3, const T4& f4, const T5& f5) +{ return GTEST_6_TUPLE_(T)(f0, f1, f2, f3, f4, f5); } template <GTEST_7_TYPENAMES_(T)> -inline GTEST_7_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, - const T3& f3, const T4& f4, const T5& f5, const T6& f6) { +inline GTEST_7_TUPLE_(T) + make_tuple(const T0& f0, const T1& f1, const T2& f2, const T3& f3, const T4& f4, const T5& f5, const T6& f6) +{ return GTEST_7_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6); } template <GTEST_8_TYPENAMES_(T)> -inline GTEST_8_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, - const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7) { +inline GTEST_8_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, const T3& f3, const T4& f4, const T5& f5, + const T6& f6, const T7& f7) +{ return GTEST_8_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7); } template <GTEST_9_TYPENAMES_(T)> -inline GTEST_9_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, - const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7, - const T8& f8) { +inline GTEST_9_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, const T3& f3, const T4& f4, const T5& f5, + const T6& f6, const T7& f7, const T8& f8) +{ return GTEST_9_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8); } template <GTEST_10_TYPENAMES_(T)> -inline GTEST_10_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, - const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7, - const T8& f8, const T9& f9) { +inline GTEST_10_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, const T3& f3, const T4& f4, const T5& f5, + const T6& f6, const T7& f7, const T8& f8, const T9& f9) +{ return GTEST_10_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8, f9); } // 6.1.3.3 Tuple helper classes. -template <typename Tuple> struct tuple_size; +template <typename Tuple> +struct tuple_size; template <GTEST_0_TYPENAMES_(T)> -struct tuple_size<GTEST_0_TUPLE_(T) > { +struct tuple_size<GTEST_0_TUPLE_(T)> +{ static const int value = 0; }; template <GTEST_1_TYPENAMES_(T)> -struct tuple_size<GTEST_1_TUPLE_(T) > { +struct tuple_size<GTEST_1_TUPLE_(T)> +{ static const int value = 1; }; template <GTEST_2_TYPENAMES_(T)> -struct tuple_size<GTEST_2_TUPLE_(T) > { +struct tuple_size<GTEST_2_TUPLE_(T)> +{ static const int value = 2; }; template <GTEST_3_TYPENAMES_(T)> -struct tuple_size<GTEST_3_TUPLE_(T) > { +struct tuple_size<GTEST_3_TUPLE_(T)> +{ static const int value = 3; }; template <GTEST_4_TYPENAMES_(T)> -struct tuple_size<GTEST_4_TUPLE_(T) > { +struct tuple_size<GTEST_4_TUPLE_(T)> +{ static const int value = 4; }; template <GTEST_5_TYPENAMES_(T)> -struct tuple_size<GTEST_5_TUPLE_(T) > { +struct tuple_size<GTEST_5_TUPLE_(T)> +{ static const int value = 5; }; template <GTEST_6_TYPENAMES_(T)> -struct tuple_size<GTEST_6_TUPLE_(T) > { +struct tuple_size<GTEST_6_TUPLE_(T)> +{ static const int value = 6; }; template <GTEST_7_TYPENAMES_(T)> -struct tuple_size<GTEST_7_TUPLE_(T) > { +struct tuple_size<GTEST_7_TUPLE_(T)> +{ static const int value = 7; }; template <GTEST_8_TYPENAMES_(T)> -struct tuple_size<GTEST_8_TUPLE_(T) > { +struct tuple_size<GTEST_8_TUPLE_(T)> +{ static const int value = 8; }; template <GTEST_9_TYPENAMES_(T)> -struct tuple_size<GTEST_9_TUPLE_(T) > { +struct tuple_size<GTEST_9_TUPLE_(T)> +{ static const int value = 9; }; template <GTEST_10_TYPENAMES_(T)> -struct tuple_size<GTEST_10_TUPLE_(T) > { +struct tuple_size<GTEST_10_TUPLE_(T)> +{ static const int value = 10; }; template <int k, class Tuple> -struct tuple_element { - typedef typename gtest_internal::TupleElement< - k < (tuple_size<Tuple>::value), k, Tuple>::type type; +struct tuple_element +{ + typedef typename gtest_internal::TupleElement < k<(tuple_size<Tuple>::value), k, Tuple>::type type; }; -#define GTEST_TUPLE_ELEMENT_(k, Tuple) typename tuple_element<k, Tuple >::type +#define GTEST_TUPLE_ELEMENT_(k, Tuple) typename tuple_element<k, Tuple>::type // 6.1.3.4 Element access. namespace gtest_internal { template <> -class Get<0> { - public: +class Get<0> +{ +public: template <class Tuple> - static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple)) - Field(Tuple& t) { return t.f0_; } // NOLINT + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple)) Field(Tuple& t) + { + return t.f0_; + } // NOLINT template <class Tuple> - static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple)) - ConstField(const Tuple& t) { return t.f0_; } + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple)) ConstField(const Tuple& t) + { + return t.f0_; + } }; template <> -class Get<1> { - public: +class Get<1> +{ +public: template <class Tuple> - static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple)) - Field(Tuple& t) { return t.f1_; } // NOLINT + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple)) Field(Tuple& t) + { + return t.f1_; + } // NOLINT template <class Tuple> - static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple)) - ConstField(const Tuple& t) { return t.f1_; } + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple)) ConstField(const Tuple& t) + { + return t.f1_; + } }; template <> -class Get<2> { - public: +class Get<2> +{ +public: template <class Tuple> - static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple)) - Field(Tuple& t) { return t.f2_; } // NOLINT + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple)) Field(Tuple& t) + { + return t.f2_; + } // NOLINT template <class Tuple> - static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple)) - ConstField(const Tuple& t) { return t.f2_; } + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple)) ConstField(const Tuple& t) + { + return t.f2_; + } }; template <> -class Get<3> { - public: +class Get<3> +{ +public: template <class Tuple> - static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple)) - Field(Tuple& t) { return t.f3_; } // NOLINT + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple)) Field(Tuple& t) + { + return t.f3_; + } // NOLINT template <class Tuple> - static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple)) - ConstField(const Tuple& t) { return t.f3_; } + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple)) ConstField(const Tuple& t) + { + return t.f3_; + } }; template <> -class Get<4> { - public: +class Get<4> +{ +public: template <class Tuple> - static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple)) - Field(Tuple& t) { return t.f4_; } // NOLINT + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple)) Field(Tuple& t) + { + return t.f4_; + } // NOLINT template <class Tuple> - static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple)) - ConstField(const Tuple& t) { return t.f4_; } + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple)) ConstField(const Tuple& t) + { + return t.f4_; + } }; template <> -class Get<5> { - public: +class Get<5> +{ +public: template <class Tuple> - static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple)) - Field(Tuple& t) { return t.f5_; } // NOLINT + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple)) Field(Tuple& t) + { + return t.f5_; + } // NOLINT template <class Tuple> - static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple)) - ConstField(const Tuple& t) { return t.f5_; } + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple)) ConstField(const Tuple& t) + { + return t.f5_; + } }; template <> -class Get<6> { - public: +class Get<6> +{ +public: template <class Tuple> - static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple)) - Field(Tuple& t) { return t.f6_; } // NOLINT + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple)) Field(Tuple& t) + { + return t.f6_; + } // NOLINT template <class Tuple> - static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple)) - ConstField(const Tuple& t) { return t.f6_; } + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple)) ConstField(const Tuple& t) + { + return t.f6_; + } }; template <> -class Get<7> { - public: +class Get<7> +{ +public: template <class Tuple> - static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple)) - Field(Tuple& t) { return t.f7_; } // NOLINT + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple)) Field(Tuple& t) + { + return t.f7_; + } // NOLINT template <class Tuple> - static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple)) - ConstField(const Tuple& t) { return t.f7_; } + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple)) ConstField(const Tuple& t) + { + return t.f7_; + } }; template <> -class Get<8> { - public: +class Get<8> +{ +public: template <class Tuple> - static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple)) - Field(Tuple& t) { return t.f8_; } // NOLINT + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple)) Field(Tuple& t) + { + return t.f8_; + } // NOLINT template <class Tuple> - static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple)) - ConstField(const Tuple& t) { return t.f8_; } + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple)) ConstField(const Tuple& t) + { + return t.f8_; + } }; template <> -class Get<9> { - public: +class Get<9> +{ +public: template <class Tuple> - static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple)) - Field(Tuple& t) { return t.f9_; } // NOLINT + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple)) Field(Tuple& t) + { + return t.f9_; + } // NOLINT template <class Tuple> - static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple)) - ConstField(const Tuple& t) { return t.f9_; } + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple)) ConstField(const Tuple& t) + { + return t.f9_; + } }; -} // namespace gtest_internal +} // namespace gtest_internal template <int k, GTEST_10_TYPENAMES_(T)> GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T))) -get(GTEST_10_TUPLE_(T)& t) { +get(GTEST_10_TUPLE_(T) & t) +{ return gtest_internal::Get<k>::Field(t); } template <int k, GTEST_10_TYPENAMES_(T)> -GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T))) -get(const GTEST_10_TUPLE_(T)& t) { +GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T))) +get(const GTEST_10_TUPLE_(T) & t) +{ return gtest_internal::Get<k>::ConstField(t); } @@ -1585,41 +2015,46 @@ template <int kSize1, int kSize2> struct SameSizeTuplePrefixComparator; template <> -struct SameSizeTuplePrefixComparator<0, 0> { +struct SameSizeTuplePrefixComparator<0, 0> +{ template <class Tuple1, class Tuple2> - static bool Eq(const Tuple1& /* t1 */, const Tuple2& /* t2 */) { + static bool Eq(const Tuple1& /* t1 */, const Tuple2& /* t2 */) + { return true; } }; template <int k> -struct SameSizeTuplePrefixComparator<k, k> { +struct SameSizeTuplePrefixComparator<k, k> +{ template <class Tuple1, class Tuple2> - static bool Eq(const Tuple1& t1, const Tuple2& t2) { - return SameSizeTuplePrefixComparator<k - 1, k - 1>::Eq(t1, t2) && - ::std::tr1::get<k - 1>(t1) == ::std::tr1::get<k - 1>(t2); + static bool Eq(const Tuple1& t1, const Tuple2& t2) + { + return SameSizeTuplePrefixComparator<k - 1, k - 1>::Eq(t1, t2) + && ::std::tr1::get<k - 1>(t1) == ::std::tr1::get<k - 1>(t2); } }; -} // namespace gtest_internal +} // namespace gtest_internal template <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)> -inline bool operator==(const GTEST_10_TUPLE_(T)& t, - const GTEST_10_TUPLE_(U)& u) { - return gtest_internal::SameSizeTuplePrefixComparator< - tuple_size<GTEST_10_TUPLE_(T) >::value, - tuple_size<GTEST_10_TUPLE_(U) >::value>::Eq(t, u); +inline bool operator==(const GTEST_10_TUPLE_(T) & t, const GTEST_10_TUPLE_(U) & u) +{ + return gtest_internal::SameSizeTuplePrefixComparator<tuple_size<GTEST_10_TUPLE_(T)>::value, + tuple_size<GTEST_10_TUPLE_(U)>::value>::Eq(t, u); } template <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)> -inline bool operator!=(const GTEST_10_TUPLE_(T)& t, - const GTEST_10_TUPLE_(U)& u) { return !(t == u); } +inline bool operator!=(const GTEST_10_TUPLE_(T) & t, const GTEST_10_TUPLE_(U) & u) +{ + return !(t == u); +} // 6.1.4 Pairs. // Unimplemented. -} // namespace tr1 -} // namespace std +} // namespace tr1 +} // namespace std #undef GTEST_0_TUPLE_ #undef GTEST_1_TUPLE_ @@ -1650,9 +2085,9 @@ inline bool operator!=(const GTEST_10_TUPLE_(T)& t, #undef GTEST_ADD_REF_ #undef GTEST_TUPLE_ELEMENT_ -#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ -# elif GTEST_ENV_HAS_STD_TUPLE_ -# include <tuple> +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ +#elif GTEST_ENV_HAS_STD_TUPLE_ +#include <tuple> // C++11 puts its tuple into the ::std namespace rather than // ::std::tr1. gtest expects tuple to live in ::std::tr1, so put it there. // This causes undefined behavior, but supported compilers react in @@ -1667,47 +2102,47 @@ using ::std::tuple_size; } } -# elif GTEST_OS_SYMBIAN +#elif GTEST_OS_SYMBIAN // On Symbian, BOOST_HAS_TR1_TUPLE causes Boost's TR1 tuple library to // use STLport's tuple implementation, which unfortunately doesn't // work as the copy of STLport distributed with Symbian is incomplete. // By making sure BOOST_HAS_TR1_TUPLE is undefined, we force Boost to // use its own tuple implementation. -# ifdef BOOST_HAS_TR1_TUPLE -# undef BOOST_HAS_TR1_TUPLE -# endif // BOOST_HAS_TR1_TUPLE +#ifdef BOOST_HAS_TR1_TUPLE +#undef BOOST_HAS_TR1_TUPLE +#endif // BOOST_HAS_TR1_TUPLE // This prevents <boost/tr1/detail/config.hpp>, which defines // BOOST_HAS_TR1_TUPLE, from being #included by Boost's <tuple>. -# define BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED -# include <tuple> +#define BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED +#include <tuple> -# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40000) +#elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40000) // GCC 4.0+ implements tr1/tuple in the <tr1/tuple> header. This does // not conform to the TR1 spec, which requires the header to be <tuple>. -# if !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302 +#if !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302 // Until version 4.3.2, gcc has a bug that causes <tr1/functional>, // which is #included by <tr1/tuple>, to not compile when RTTI is // disabled. _TR1_FUNCTIONAL is the header guard for // <tr1/functional>. Hence the following #define is a hack to prevent // <tr1/functional> from being included. -# define _TR1_FUNCTIONAL 1 -# include <tr1/tuple> -# undef _TR1_FUNCTIONAL // Allows the user to #include - // <tr1/functional> if he chooses to. -# else -# include <tr1/tuple> // NOLINT -# endif // !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302 - -# else +#define _TR1_FUNCTIONAL 1 +#include <tr1/tuple> +#undef _TR1_FUNCTIONAL // Allows the user to #include +// <tr1/functional> if he chooses to. +#else +#include <tr1/tuple> // NOLINT +#endif // !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302 + +#else // If the compiler is not GCC 4.0+, we assume the user is using a // spec-conforming TR1 implementation. -# include <tuple> // NOLINT -# endif // GTEST_USE_OWN_TR1_TUPLE +#include <tuple> // NOLINT +#endif // GTEST_USE_OWN_TR1_TUPLE -#endif // GTEST_HAS_TR1_TUPLE +#endif // GTEST_HAS_TR1_TUPLE // Determines whether clone(2) is supported. // Usually it will only be available on Linux, excluding @@ -1716,46 +2151,49 @@ using ::std::tuple_size; #ifndef GTEST_HAS_CLONE // The user didn't tell us, so we need to figure it out. -# if GTEST_OS_LINUX && !defined(__ia64__) -# if GTEST_OS_LINUX_ANDROID +#if GTEST_OS_LINUX && !defined(__ia64__) +#if GTEST_OS_LINUX_ANDROID // On Android, clone() is only available on ARM starting with Gingerbread. -# if defined(__arm__) && __ANDROID_API__ >= 9 -# define GTEST_HAS_CLONE 1 -# else -# define GTEST_HAS_CLONE 0 -# endif -# else -# define GTEST_HAS_CLONE 1 -# endif -# else -# define GTEST_HAS_CLONE 0 -# endif // GTEST_OS_LINUX && !defined(__ia64__) - -#endif // GTEST_HAS_CLONE +#if defined(__arm__) && __ANDROID_API__ >= 9 +#define GTEST_HAS_CLONE 1 +#else +#define GTEST_HAS_CLONE 0 +#endif +#else +#define GTEST_HAS_CLONE 1 +#endif +#else +#define GTEST_HAS_CLONE 0 +#endif // GTEST_OS_LINUX && !defined(__ia64__) + +#endif // GTEST_HAS_CLONE // Determines whether to support stream redirection. This is used to test // output correctness and to implement death tests. #ifndef GTEST_HAS_STREAM_REDIRECTION // By default, we assume that stream redirection is supported on all // platforms except known mobile ones. -# if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN -# define GTEST_HAS_STREAM_REDIRECTION 0 -# else -# define GTEST_HAS_STREAM_REDIRECTION 1 -# endif // !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_SYMBIAN -#endif // GTEST_HAS_STREAM_REDIRECTION +#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN +#define GTEST_HAS_STREAM_REDIRECTION 0 +#else +#define GTEST_HAS_STREAM_REDIRECTION 1 +#endif // !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_SYMBIAN +#endif // GTEST_HAS_STREAM_REDIRECTION // Determines whether to support death tests. // Google Test does not support death tests for VC 7.1 and earlier as // abort() in a VC 7.1 application compiled as GUI in debug config // pops up a dialog window that cannot be suppressed programmatically. -#if (GTEST_OS_LINUX || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || \ - (GTEST_OS_MAC && !GTEST_OS_IOS) || GTEST_OS_IOS_SIMULATOR || \ - (GTEST_OS_WINDOWS_DESKTOP && _MSC_VER >= 1400) || \ - GTEST_OS_WINDOWS_MINGW || GTEST_OS_AIX || GTEST_OS_HPUX || \ - GTEST_OS_OPENBSD || GTEST_OS_QNX) -# define GTEST_HAS_DEATH_TEST 1 -# include <vector> // NOLINT +#if (GTEST_OS_LINUX || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || (GTEST_OS_MAC && !GTEST_OS_IOS) \ + || GTEST_OS_IOS_SIMULATOR \ + || (GTEST_OS_WINDOWS_DESKTOP && _MSC_VER >= 1400) \ + || GTEST_OS_WINDOWS_MINGW \ + || GTEST_OS_AIX \ + || GTEST_OS_HPUX \ + || GTEST_OS_OPENBSD \ + || GTEST_OS_QNX) +#define GTEST_HAS_DEATH_TEST 1 +#include <vector> // NOLINT #endif // We don't support MSVC 7.1 with exceptions disabled now. Therefore @@ -1767,10 +2205,9 @@ using ::std::tuple_size; // Typed tests need <typeinfo> and variadic macros, which GCC, VC++ 8.0, // Sun Pro CC, IBM Visual Age, and HP aCC support. -#if defined(__GNUC__) || (_MSC_VER >= 1400) || defined(__SUNPRO_CC) || \ - defined(__IBMCPP__) || defined(__HP_aCC) -# define GTEST_HAS_TYPED_TEST 1 -# define GTEST_HAS_TYPED_TEST_P 1 +#if defined(__GNUC__) || (_MSC_VER >= 1400) || defined(__SUNPRO_CC) || defined(__IBMCPP__) || defined(__HP_aCC) +#define GTEST_HAS_TYPED_TEST 1 +#define GTEST_HAS_TYPED_TEST_P 1 #endif // Determines whether to support Combine(). This only makes sense when @@ -1778,16 +2215,15 @@ using ::std::tuple_size; // work on Sun Studio since it doesn't understand templated conversion // operators. #if GTEST_HAS_PARAM_TEST && GTEST_HAS_TR1_TUPLE && !defined(__SUNPRO_CC) -# define GTEST_HAS_COMBINE 1 +#define GTEST_HAS_COMBINE 1 #endif // Determines whether the system compiler uses UTF-16 for encoding wide strings. -#define GTEST_WIDE_STRING_USES_UTF16_ \ - (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_SYMBIAN || GTEST_OS_AIX) +#define GTEST_WIDE_STRING_USES_UTF16_ (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_SYMBIAN || GTEST_OS_AIX) // Determines whether test results can be streamed to a socket. #if GTEST_OS_LINUX -# define GTEST_CAN_STREAM_RESULTS_ 1 +#define GTEST_CAN_STREAM_RESULTS_ 1 #endif // Defines some utility macros. @@ -1801,9 +2237,12 @@ using ::std::tuple_size; // // The "switch (0) case 0:" idiom is used to suppress this. #ifdef __INTEL_COMPILER -# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ +#define GTEST_AMBIGUOUS_ELSE_BLOCKER_ #else -# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: default: // NOLINT +#define GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + switch (0) \ + case 0: \ + default: // NOLINT #endif // Use this annotation at the end of a struct/class definition to @@ -1818,20 +2257,19 @@ using ::std::tuple_size; // Also use it after a variable or parameter declaration to tell the // compiler the variable/parameter does not have to be used. #if defined(__GNUC__) && !defined(COMPILER_ICC) -# define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused)) +#define GTEST_ATTRIBUTE_UNUSED_ __attribute__((unused)) #else -# define GTEST_ATTRIBUTE_UNUSED_ +#define GTEST_ATTRIBUTE_UNUSED_ #endif // A macro to disallow operator= // This should be used in the private: declarations for a class. -#define GTEST_DISALLOW_ASSIGN_(type)\ - void operator=(type const &) +#define GTEST_DISALLOW_ASSIGN_(type) void operator=(type const&) // A macro to disallow copy constructor and operator= // This should be used in the private: declarations for a class. -#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type)\ - type(type const &);\ +#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type) \ + type(type const&); \ GTEST_DISALLOW_ASSIGN_(type) // Tell the compiler to warn about unused return values for functions declared @@ -1840,10 +2278,10 @@ using ::std::tuple_size; // // Sprocket* AllocateSprocket() GTEST_MUST_USE_RESULT_; #if defined(__GNUC__) && (GTEST_GCC_VER_ >= 30400) && !defined(COMPILER_ICC) -# define GTEST_MUST_USE_RESULT_ __attribute__ ((warn_unused_result)) +#define GTEST_MUST_USE_RESULT_ __attribute__((warn_unused_result)) #else -# define GTEST_MUST_USE_RESULT_ -#endif // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC +#define GTEST_MUST_USE_RESULT_ +#endif // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC // Determine whether the compiler supports Microsoft's Structured Exception // Handling. This is supported by several Windows compilers but generally @@ -1851,42 +2289,42 @@ using ::std::tuple_size; #ifndef GTEST_HAS_SEH // The user didn't tell us, so we need to figure it out. -# if defined(_MSC_VER) || defined(__BORLANDC__) +#if defined(_MSC_VER) || defined(__BORLANDC__) // These two compilers are known to support SEH. -# define GTEST_HAS_SEH 1 -# else +#define GTEST_HAS_SEH 1 +#else // Assume no SEH. -# define GTEST_HAS_SEH 0 -# endif +#define GTEST_HAS_SEH 0 +#endif -#endif // GTEST_HAS_SEH +#endif // GTEST_HAS_SEH #ifdef _MSC_VER -# if GTEST_LINKED_AS_SHARED_LIBRARY -# define GTEST_API_ __declspec(dllimport) -# elif GTEST_CREATE_SHARED_LIBRARY -# define GTEST_API_ __declspec(dllexport) -# endif +#if GTEST_LINKED_AS_SHARED_LIBRARY +#define GTEST_API_ __declspec(dllimport) +#elif GTEST_CREATE_SHARED_LIBRARY +#define GTEST_API_ __declspec(dllexport) +#endif -#endif // _MSC_VER +#endif // _MSC_VER #ifndef GTEST_API_ -# define GTEST_API_ +#define GTEST_API_ #endif #ifdef __GNUC__ // Ask the compiler to never inline a given function. -# define GTEST_NO_INLINE_ __attribute__((noinline)) +#define GTEST_NO_INLINE_ __attribute__((noinline)) #else -# define GTEST_NO_INLINE_ +#define GTEST_NO_INLINE_ #endif // _LIBCPP_VERSION is defined by the libc++ library from the LLVM project. #if defined(__GLIBCXX__) || defined(_LIBCPP_VERSION) -# define GTEST_HAS_CXXABI_H_ 1 +#define GTEST_HAS_CXXABI_H_ 1 #else -# define GTEST_HAS_CXXABI_H_ 0 +#define GTEST_HAS_CXXABI_H_ 0 #endif namespace testing { @@ -1916,11 +2354,12 @@ class Secret; // containing the name of the variable. template <bool> -struct CompileAssert { +struct CompileAssert +{ }; -#define GTEST_COMPILE_ASSERT_(expr, msg) \ - typedef ::testing::internal::CompileAssert<(static_cast<bool>(expr))> \ +#define GTEST_COMPILE_ASSERT_(expr, msg) \ + typedef ::testing::internal::CompileAssert<(static_cast<bool>(expr))> \ msg[static_cast<bool>(expr) ? 1 : -1] GTEST_ATTRIBUTE_UNUSED_ // Implementation details of GTEST_COMPILE_ASSERT_: @@ -1971,19 +2410,21 @@ template <typename T1, typename T2> struct StaticAssertTypeEqHelper; template <typename T> -struct StaticAssertTypeEqHelper<T, T> {}; +struct StaticAssertTypeEqHelper<T, T> +{ +}; #if GTEST_HAS_GLOBAL_STRING typedef ::string string; #else typedef ::std::string string; -#endif // GTEST_HAS_GLOBAL_STRING +#endif // GTEST_HAS_GLOBAL_STRING #if GTEST_HAS_GLOBAL_WSTRING typedef ::wstring wstring; #elif GTEST_HAS_STD_WSTRING typedef ::std::wstring wstring; -#endif // GTEST_HAS_GLOBAL_WSTRING +#endif // GTEST_HAS_GLOBAL_WSTRING // A helper for suppressing warnings on constant condition. It just // returns 'condition'. @@ -1994,33 +2435,51 @@ GTEST_API_ bool IsTrue(bool condition); // This implementation of scoped_ptr is PARTIAL - it only contains // enough stuff to satisfy Google Test's need. template <typename T> -class scoped_ptr { - public: +class scoped_ptr +{ +public: typedef T element_type; - explicit scoped_ptr(T* p = NULL) : ptr_(p) {} - ~scoped_ptr() { reset(); } + explicit scoped_ptr(T* p = NULL) + : ptr_(p) + { + } + ~scoped_ptr() + { + reset(); + } - T& operator*() const { return *ptr_; } - T* operator->() const { return ptr_; } - T* get() const { return ptr_; } + T& operator*() const + { + return *ptr_; + } + T* operator->() const + { + return ptr_; + } + T* get() const + { + return ptr_; + } - T* release() { + T* release() + { T* const ptr = ptr_; - ptr_ = NULL; + ptr_ = NULL; return ptr; } - void reset(T* p = NULL) { + void reset(T* p = NULL) + { if (p != ptr_) { - if (IsTrue(sizeof(T) > 0)) { // Makes sure T is a complete type. + if (IsTrue(sizeof(T) > 0)) { // Makes sure T is a complete type. delete ptr_; } ptr_ = p; } } - private: +private: T* ptr_; GTEST_DISALLOW_COPY_AND_ASSIGN_(scoped_ptr); @@ -2030,26 +2489,42 @@ class scoped_ptr { // A simple C++ wrapper for <regex.h>. It uses the POSIX Extended // Regular Expression syntax. -class GTEST_API_ RE { - public: +class GTEST_API_ RE +{ +public: // A copy constructor is required by the Standard to initialize object // references from r-values. - RE(const RE& other) { Init(other.pattern()); } + RE(const RE& other) + { + Init(other.pattern()); + } // Constructs an RE from a string. - RE(const ::std::string& regex) { Init(regex.c_str()); } // NOLINT + RE(const ::std::string& regex) + { + Init(regex.c_str()); + } // NOLINT #if GTEST_HAS_GLOBAL_STRING - RE(const ::string& regex) { Init(regex.c_str()); } // NOLINT + RE(const ::string& regex) + { + Init(regex.c_str()); + } // NOLINT -#endif // GTEST_HAS_GLOBAL_STRING +#endif // GTEST_HAS_GLOBAL_STRING - RE(const char* regex) { Init(regex); } // NOLINT + RE(const char* regex) + { + Init(regex); + } // NOLINT ~RE(); // Returns the string representation of the regex. - const char* pattern() const { return pattern_; } + const char* pattern() const + { + return pattern_; + } // FullMatch(str, re) returns true iff regular expression re matches // the entire str. @@ -2058,28 +2533,32 @@ class GTEST_API_ RE { // // TODO(wan@google.com): make FullMatch() and PartialMatch() work // when str contains NUL characters. - static bool FullMatch(const ::std::string& str, const RE& re) { + static bool FullMatch(const ::std::string& str, const RE& re) + { return FullMatch(str.c_str(), re); } - static bool PartialMatch(const ::std::string& str, const RE& re) { + static bool PartialMatch(const ::std::string& str, const RE& re) + { return PartialMatch(str.c_str(), re); } #if GTEST_HAS_GLOBAL_STRING - static bool FullMatch(const ::string& str, const RE& re) { + static bool FullMatch(const ::string& str, const RE& re) + { return FullMatch(str.c_str(), re); } - static bool PartialMatch(const ::string& str, const RE& re) { + static bool PartialMatch(const ::string& str, const RE& re) + { return PartialMatch(str.c_str(), re); } -#endif // GTEST_HAS_GLOBAL_STRING +#endif // GTEST_HAS_GLOBAL_STRING static bool FullMatch(const char* str, const RE& re); static bool PartialMatch(const char* str, const RE& re); - private: +private: void Init(const char* regex); // We use a const char* instead of an std::string, as Google Test used to be @@ -2090,12 +2569,12 @@ class GTEST_API_ RE { #if GTEST_USES_POSIX_RE - regex_t full_regex_; // For FullMatch(). - regex_t partial_regex_; // For PartialMatch(). + regex_t full_regex_; // For FullMatch(). + regex_t partial_regex_; // For PartialMatch(). -#else // GTEST_USES_SIMPLE_RE +#else // GTEST_USES_SIMPLE_RE - const char* full_pattern_; // For FullMatch(); + const char* full_pattern_; // For FullMatch(); #endif @@ -2104,13 +2583,12 @@ class GTEST_API_ RE { // Formats a source file path and a line number as they would appear // in an error message from the compiler used to compile this code. -GTEST_API_ ::std::string FormatFileLocation(const char* file, int line); +GTEST_API_::std::string FormatFileLocation(const char* file, int line); // Formats a file location for compiler-independent XML output. // Although this function is not platform dependent, we put it next to // FormatFileLocation in order to contrast the two functions. -GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(const char* file, - int line); +GTEST_API_::std::string FormatCompilerIndependentFileLocation(const char* file, int line); // Defines logging utilities: // GTEST_LOG_(severity) - logs messages at the specified severity level. The @@ -2118,7 +2596,8 @@ GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(const char* file, // LogToStderr() - directs all log messages to stderr. // FlushInfoLog() - flushes informational log messages. -enum GTestLogSeverity { +enum GTestLogSeverity +{ GTEST_INFO, GTEST_WARNING, GTEST_ERROR, @@ -2128,27 +2607,35 @@ enum GTestLogSeverity { // Formats log entry severity, provides a stream object for streaming the // log message, and terminates the message with a newline when going out of // scope. -class GTEST_API_ GTestLog { - public: +class GTEST_API_ GTestLog +{ +public: GTestLog(GTestLogSeverity severity, const char* file, int line); // Flushes the buffers and, if severity is GTEST_FATAL, aborts the program. ~GTestLog(); - ::std::ostream& GetStream() { return ::std::cerr; } + ::std::ostream& GetStream() + { + return ::std::cerr; + } - private: +private: const GTestLogSeverity severity_; GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestLog); }; -#define GTEST_LOG_(severity) \ - ::testing::internal::GTestLog(::testing::internal::GTEST_##severity, \ - __FILE__, __LINE__).GetStream() +#define GTEST_LOG_(severity) \ + ::testing::internal::GTestLog(::testing::internal::GTEST_##severity, __FILE__, __LINE__).GetStream() -inline void LogToStderr() {} -inline void FlushInfoLog() { fflush(NULL); } +inline void LogToStderr() +{ +} +inline void FlushInfoLog() +{ + fflush(NULL); +} // INTERNAL IMPLEMENTATION - DO NOT USE. // @@ -2164,22 +2651,21 @@ inline void FlushInfoLog() { fflush(NULL); } // condition itself, plus additional message streamed into it, if any, // and then it aborts the program. It aborts the program irrespective of // whether it is built in the debug mode or not. -#define GTEST_CHECK_(condition) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (::testing::internal::IsTrue(condition)) \ - ; \ - else \ - GTEST_LOG_(FATAL) << "Condition " #condition " failed. " +#define GTEST_CHECK_(condition) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::IsTrue(condition)) \ + ; \ + else \ + GTEST_LOG_(FATAL) << "Condition " #condition " failed. " // An all-mode assert to verify that the given POSIX-style function // call returns 0 (indicating success). Known limitation: this // doesn't expand to a balanced 'if' statement, so enclose the macro // in {} if you need to use it as the only statement in an 'if' // branch. -#define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ - if (const int gtest_error = (posix_call)) \ - GTEST_LOG_(FATAL) << #posix_call << "failed with error " \ - << gtest_error +#define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ + if (const int gtest_error = (posix_call)) \ + GTEST_LOG_(FATAL) << #posix_call << "failed with error " << gtest_error // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // @@ -2201,8 +2687,11 @@ inline void FlushInfoLog() { fflush(NULL); } // This relatively ugly name is intentional. It prevents clashes with // similar functions users may have (e.g., implicit_cast). The internal // namespace alone is not enough because the function can be found by ADL. -template<typename To> -inline To ImplicitCast_(To x) { return x; } +template <typename To> +inline To ImplicitCast_(To x) +{ + return x; +} // When you upcast (that is, cast a pointer from type Foo to type // SuperclassOfFoo), it's fine to use ImplicitCast_<>, since upcasts @@ -2225,8 +2714,9 @@ inline To ImplicitCast_(To x) { return x; } // This relatively ugly name is intentional. It prevents clashes with // similar functions users may have (e.g., down_cast). The internal // namespace alone is not enough because the function can be found by ADL. -template<typename To, typename From> // use like this: DownCast_<T*>(foo); -inline To DownCast_(From* f) { // so we only accept pointers +template <typename To, typename From> // use like this: DownCast_<T*>(foo); +inline To DownCast_(From* f) +{ // so we only accept pointers // Ensures that To is a sub-type of From *. This test is here only // for compile-time type checking, and has no overhead in an // optimized build at run-time, as it will be optimized away @@ -2249,12 +2739,13 @@ inline To DownCast_(From* f) { // so we only accept pointers // When RTTI is available, the function performs a runtime // check to enforce this. template <class Derived, class Base> -Derived* CheckedDowncastToActualType(Base* base) { +Derived* CheckedDowncastToActualType(Base* base) +{ #if GTEST_HAS_RTTI GTEST_CHECK_(typeid(*base) == typeid(Derived)); - return dynamic_cast<Derived*>(base); // NOLINT + return dynamic_cast<Derived*>(base); // NOLINT #else - return static_cast<Derived*>(base); // Poor man's downcast. + return static_cast<Derived*>(base); // Poor man's downcast. #endif } @@ -2271,19 +2762,18 @@ GTEST_API_ std::string GetCapturedStdout(); GTEST_API_ void CaptureStderr(); GTEST_API_ std::string GetCapturedStderr(); -#endif // GTEST_HAS_STREAM_REDIRECTION +#endif // GTEST_HAS_STREAM_REDIRECTION #if GTEST_HAS_DEATH_TEST const ::std::vector<testing::internal::string>& GetInjectableArgvs(); -void SetInjectableArgvs(const ::std::vector<testing::internal::string>* - new_argvs); +void SetInjectableArgvs(const ::std::vector<testing::internal::string>* new_argvs); // A copy of all command line arguments. Set by InitGoogleTest(). extern ::std::vector<testing::internal::string> g_argvs; -#endif // GTEST_HAS_DEATH_TEST +#endif // GTEST_HAS_DEATH_TEST // Defines synchronization primitives. @@ -2292,10 +2782,11 @@ extern ::std::vector<testing::internal::string> g_argvs; // Sleeps for (roughly) n milli-seconds. This function is only for // testing Google Test's own constructs. Don't use it in user tests, // either directly or indirectly. -inline void SleepMilliseconds(int n) { +inline void SleepMilliseconds(int n) +{ const timespec time = { - 0, // 0 seconds. - n * 1000L * 1000L, // And n ms. + 0, // 0 seconds. + n * 1000L * 1000L, // And n ms. }; nanosleep(&time, NULL); } @@ -2306,18 +2797,23 @@ inline void SleepMilliseconds(int n) { // // This class is only for testing Google Test's own constructs. Do not // use it in user tests, either directly or indirectly. -class Notification { - public: - Notification() : notified_(false) { +class Notification +{ +public: + Notification() + : notified_(false) + { GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL)); } - ~Notification() { + ~Notification() + { pthread_mutex_destroy(&mutex_); } // Notifies all threads created with this notification to start. Must // be called from the controller thread. - void Notify() { + void Notify() + { pthread_mutex_lock(&mutex_); notified_ = true; pthread_mutex_unlock(&mutex_); @@ -2325,7 +2821,8 @@ class Notification { // Blocks until the controller thread notifies. Must be called from a test // thread. - void WaitForNotification() { + void WaitForNotification() + { for (;;) { pthread_mutex_lock(&mutex_); const bool notified = notified_; @@ -2336,7 +2833,7 @@ class Notification { } } - private: +private: pthread_mutex_t mutex_; bool notified_; @@ -2348,9 +2845,12 @@ class Notification { // in order to call its Run(). Introducing ThreadWithParamBase as a // non-templated base class for ThreadWithParam allows us to bypass this // problem. -class ThreadWithParamBase { - public: - virtual ~ThreadWithParamBase() {} +class ThreadWithParamBase +{ +public: + virtual ~ThreadWithParamBase() + { + } virtual void Run() = 0; }; @@ -2360,7 +2860,8 @@ class ThreadWithParamBase { // example, SunStudio) treat them as different types. Since class methods // cannot be defined with C-linkage we need to define a free C-function to // pass into pthread_create(). -extern "C" inline void* ThreadFuncWithCLinkage(void* thread) { +extern "C" inline void* ThreadFuncWithCLinkage(void* thread) +{ static_cast<ThreadWithParamBase*>(thread)->Run(); return NULL; } @@ -2378,45 +2879,50 @@ extern "C" inline void* ThreadFuncWithCLinkage(void* thread) { // These classes are only for testing Google Test's own constructs. Do // not use them in user tests, either directly or indirectly. template <typename T> -class ThreadWithParam : public ThreadWithParamBase { - public: +class ThreadWithParam : public ThreadWithParamBase +{ +public: typedef void (*UserThreadFunc)(T); - ThreadWithParam( - UserThreadFunc func, T param, Notification* thread_can_start) - : func_(func), - param_(param), - thread_can_start_(thread_can_start), - finished_(false) { + ThreadWithParam(UserThreadFunc func, T param, Notification* thread_can_start) + : func_(func) + , param_(param) + , thread_can_start_(thread_can_start) + , finished_(false) + { ThreadWithParamBase* const base = this; // The thread can be created only after all fields except thread_ // have been initialized. - GTEST_CHECK_POSIX_SUCCESS_( - pthread_create(&thread_, 0, &ThreadFuncWithCLinkage, base)); + GTEST_CHECK_POSIX_SUCCESS_(pthread_create(&thread_, 0, &ThreadFuncWithCLinkage, base)); + } + ~ThreadWithParam() + { + Join(); } - ~ThreadWithParam() { Join(); } - void Join() { + void Join() + { if (!finished_) { GTEST_CHECK_POSIX_SUCCESS_(pthread_join(thread_, 0)); finished_ = true; } } - virtual void Run() { + virtual void Run() + { if (thread_can_start_ != NULL) thread_can_start_->WaitForNotification(); func_(param_); } - private: - const UserThreadFunc func_; // User-supplied thread function. - const T param_; // User-supplied parameter to the thread function. +private: + const UserThreadFunc func_; // User-supplied thread function. + const T param_; // User-supplied parameter to the thread function. // When non-NULL, used to block execution until the controller thread // notifies. Notification* const thread_can_start_; - bool finished_; // true iff we know that the thread function has finished. - pthread_t thread_; // The native thread object. + bool finished_; // true iff we know that the thread function has finished. + pthread_t thread_; // The native thread object. GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam); }; @@ -2440,17 +2946,20 @@ class ThreadWithParam : public ThreadWithParamBase { // GTEST_DECLARE_STATIC_MUTEX_(g_some_mutex); // // To create a dynamic mutex, just define an object of type Mutex. -class MutexBase { - public: +class MutexBase +{ +public: // Acquires this mutex. - void Lock() { + void Lock() + { GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_lock(&mutex_)); - owner_ = pthread_self(); + owner_ = pthread_self(); has_owner_ = true; } // Releases this mutex. - void Unlock() { + void Unlock() + { // Since the lock is being released the owner_ field should no longer be // considered valid. We don't protect writing to has_owner_ here, as it's // the caller's responsibility to ensure that the current thread holds the @@ -2461,9 +2970,10 @@ class MutexBase { // Does nothing if the current thread holds the mutex. Otherwise, crashes // with high probability. - void AssertHeld() const { - GTEST_CHECK_(has_owner_ && pthread_equal(owner_, pthread_self())) - << "The current thread is not holding the mutex @" << this; + void AssertHeld() const + { + GTEST_CHECK_(has_owner_ && pthread_equal(owner_, pthread_self())) << "The current thread is not holding the mutex @" + << this; } // A static mutex may be used before main() is entered. It may even @@ -2471,8 +2981,8 @@ class MutexBase { // must be able to initialize a static mutex object at link time. // This means MutexBase has to be a POD and its member variables // have to be public. - public: - pthread_mutex_t mutex_; // The underlying pthread mutex. +public: + pthread_mutex_t mutex_; // The underlying pthread mutex. // has_owner_ indicates whether the owner_ field below contains a valid thread // ID and is therefore safe to inspect (e.g., to use in pthread_equal()). All // accesses to the owner_ field should be protected by a check of this field. @@ -2480,12 +2990,11 @@ class MutexBase { // guarantee that a zero'd pthread_t is necessarily invalid or even different // from pthread_self(). bool has_owner_; - pthread_t owner_; // The thread holding the mutex. + pthread_t owner_; // The thread holding the mutex. }; // Forward-declares a static mutex. -# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \ - extern ::testing::internal::MutexBase mutex +#define GTEST_DECLARE_STATIC_MUTEX_(mutex) extern ::testing::internal::MutexBase mutex // Defines and statically (i.e. at link time) initializes a static mutex. // The initialization list here does not explicitly initialize each field, @@ -2493,36 +3002,45 @@ class MutexBase { // particular, the owner_ field (a pthread_t) is not explicitly initialized. // This allows initialization to work whether pthread_t is a scalar or struct. // The flag -Wmissing-field-initializers must not be specified for this to work. -# define GTEST_DEFINE_STATIC_MUTEX_(mutex) \ - ::testing::internal::MutexBase mutex = { PTHREAD_MUTEX_INITIALIZER, false } +#define GTEST_DEFINE_STATIC_MUTEX_(mutex) ::testing::internal::MutexBase mutex = {PTHREAD_MUTEX_INITIALIZER, false} // The Mutex class can only be used for mutexes created at runtime. It // shares its API with MutexBase otherwise. -class Mutex : public MutexBase { - public: - Mutex() { +class Mutex : public MutexBase +{ +public: + Mutex() + { GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL)); has_owner_ = false; } - ~Mutex() { + ~Mutex() + { GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_destroy(&mutex_)); } - private: +private: GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex); }; // We cannot name this class MutexLock as the ctor declaration would // conflict with a macro named MutexLock, which is defined on some // platforms. Hence the typedef trick below. -class GTestMutexLock { - public: +class GTestMutexLock +{ +public: explicit GTestMutexLock(MutexBase* mutex) - : mutex_(mutex) { mutex_->Lock(); } + : mutex_(mutex) + { + mutex_->Lock(); + } - ~GTestMutexLock() { mutex_->Unlock(); } + ~GTestMutexLock() + { + mutex_->Unlock(); + } - private: +private: MutexBase* const mutex_; GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestMutexLock); @@ -2536,14 +3054,18 @@ typedef GTestMutexLock MutexLock; // C-linkage. Therefore it cannot be templatized to access // ThreadLocal<T>. Hence the need for class // ThreadLocalValueHolderBase. -class ThreadLocalValueHolderBase { - public: - virtual ~ThreadLocalValueHolderBase() {} +class ThreadLocalValueHolderBase +{ +public: + virtual ~ThreadLocalValueHolderBase() + { + } }; // Called by pthread to delete thread-local data stored by // pthread_setspecific(). -extern "C" inline void DeleteThreadLocalValue(void* value_holder) { +extern "C" inline void DeleteThreadLocalValue(void* value_holder) +{ delete static_cast<ThreadLocalValueHolderBase*>(value_holder); } @@ -2577,14 +3099,22 @@ extern "C" inline void DeleteThreadLocalValue(void* value_holder) { // object managed by Google Test will be leaked as long as all threads // using Google Test have exited when main() returns. template <typename T> -class ThreadLocal { - public: - ThreadLocal() : key_(CreateKey()), - default_() {} - explicit ThreadLocal(const T& value) : key_(CreateKey()), - default_(value) {} +class ThreadLocal +{ +public: + ThreadLocal() + : key_(CreateKey()) + , default_() + { + } + explicit ThreadLocal(const T& value) + : key_(CreateKey()) + , default_(value) + { + } - ~ThreadLocal() { + ~ThreadLocal() + { // Destroys the managed object for the current thread, if any. DeleteThreadLocalValue(pthread_getspecific(key_)); @@ -2593,41 +3123,60 @@ class ThreadLocal { GTEST_CHECK_POSIX_SUCCESS_(pthread_key_delete(key_)); } - T* pointer() { return GetOrCreateValue(); } - const T* pointer() const { return GetOrCreateValue(); } - const T& get() const { return *pointer(); } - void set(const T& value) { *pointer() = value; } + T* pointer() + { + return GetOrCreateValue(); + } + const T* pointer() const + { + return GetOrCreateValue(); + } + const T& get() const + { + return *pointer(); + } + void set(const T& value) + { + *pointer() = value; + } - private: +private: // Holds a value of type T. - class ValueHolder : public ThreadLocalValueHolderBase { - public: - explicit ValueHolder(const T& value) : value_(value) {} + class ValueHolder : public ThreadLocalValueHolderBase + { + public: + explicit ValueHolder(const T& value) + : value_(value) + { + } - T* pointer() { return &value_; } + T* pointer() + { + return &value_; + } - private: + private: T value_; GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder); }; - static pthread_key_t CreateKey() { + static pthread_key_t CreateKey() + { pthread_key_t key; // When a thread exits, DeleteThreadLocalValue() will be called on // the object managed for that thread. - GTEST_CHECK_POSIX_SUCCESS_( - pthread_key_create(&key, &DeleteThreadLocalValue)); + GTEST_CHECK_POSIX_SUCCESS_(pthread_key_create(&key, &DeleteThreadLocalValue)); return key; } - T* GetOrCreateValue() const { - ThreadLocalValueHolderBase* const holder = - static_cast<ThreadLocalValueHolderBase*>(pthread_getspecific(key_)); + T* GetOrCreateValue() const + { + ThreadLocalValueHolderBase* const holder = static_cast<ThreadLocalValueHolderBase*>(pthread_getspecific(key_)); if (holder != NULL) { return CheckedDowncastToActualType<ValueHolder>(holder)->pointer(); } - ValueHolder* const new_holder = new ValueHolder(default_); + ValueHolder* const new_holder = new ValueHolder(default_); ThreadLocalValueHolderBase* const holder_base = new_holder; GTEST_CHECK_POSIX_SUCCESS_(pthread_setspecific(key_, holder_base)); return new_holder->pointer(); @@ -2635,58 +3184,89 @@ class ThreadLocal { // A key pthreads uses for looking up per-thread values. const pthread_key_t key_; - const T default_; // The default value for each thread. + const T default_; // The default value for each thread. GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal); }; -# define GTEST_IS_THREADSAFE 1 +#define GTEST_IS_THREADSAFE 1 -#else // GTEST_HAS_PTHREAD +#else // GTEST_HAS_PTHREAD // A dummy implementation of synchronization primitives (mutex, lock, // and thread-local variable). Necessary for compiling Google Test where // mutex is not supported - using Google Test in multiple threads is not // supported on such platforms. -class Mutex { - public: - Mutex() {} - void Lock() {} - void Unlock() {} - void AssertHeld() const {} +class Mutex +{ +public: + Mutex() + { + } + void Lock() + { + } + void Unlock() + { + } + void AssertHeld() const + { + } }; -# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \ - extern ::testing::internal::Mutex mutex +#define GTEST_DECLARE_STATIC_MUTEX_(mutex) extern ::testing::internal::Mutex mutex -# define GTEST_DEFINE_STATIC_MUTEX_(mutex) ::testing::internal::Mutex mutex +#define GTEST_DEFINE_STATIC_MUTEX_(mutex) ::testing::internal::Mutex mutex -class GTestMutexLock { - public: - explicit GTestMutexLock(Mutex*) {} // NOLINT +class GTestMutexLock +{ +public: + explicit GTestMutexLock(Mutex*) + { + } // NOLINT }; typedef GTestMutexLock MutexLock; template <typename T> -class ThreadLocal { - public: - ThreadLocal() : value_() {} - explicit ThreadLocal(const T& value) : value_(value) {} - T* pointer() { return &value_; } - const T* pointer() const { return &value_; } - const T& get() const { return value_; } - void set(const T& value) { value_ = value; } - private: +class ThreadLocal +{ +public: + ThreadLocal() + : value_() + { + } + explicit ThreadLocal(const T& value) + : value_(value) + { + } + T* pointer() + { + return &value_; + } + const T* pointer() const + { + return &value_; + } + const T& get() const + { + return value_; + } + void set(const T& value) + { + value_ = value; + } + +private: T value_; }; // The above synchronization primitives have dummy implementations. // Therefore Google Test is not thread-safe. -# define GTEST_IS_THREADSAFE 0 +#define GTEST_IS_THREADSAFE 0 -#endif // GTEST_HAS_PTHREAD +#endif // GTEST_HAS_PTHREAD // Returns the number of threads running in the process, or 0 to indicate that // we cannot detect it. @@ -2701,9 +3281,9 @@ GTEST_API_ size_t GetThreadCount(); #if defined(__SYMBIAN32__) || defined(__IBMCPP__) || defined(__SUNPRO_CC) // We lose support for NULL detection where the compiler doesn't like // passing non-POD classes through ellipsis (...). -# define GTEST_ELLIPSIS_NEEDS_POD_ 1 +#define GTEST_ELLIPSIS_NEEDS_POD_ 1 #else -# define GTEST_CAN_COMPARE_NULL 1 +#define GTEST_CAN_COMPARE_NULL 1 #endif // The Nokia Symbian and IBM XL C/C++ compilers cannot decide between @@ -2711,50 +3291,59 @@ GTEST_API_ size_t GetThreadCount(); // _can_ decide between class template specializations for T and T*, // so a tr1::type_traits-like is_pointer works. #if defined(__SYMBIAN32__) || defined(__IBMCPP__) -# define GTEST_NEEDS_IS_POINTER_ 1 +#define GTEST_NEEDS_IS_POINTER_ 1 #endif template <bool bool_value> -struct bool_constant { +struct bool_constant +{ typedef bool_constant<bool_value> type; static const bool value = bool_value; }; -template <bool bool_value> const bool bool_constant<bool_value>::value; +template <bool bool_value> +const bool bool_constant<bool_value>::value; typedef bool_constant<false> false_type; typedef bool_constant<true> true_type; template <typename T> -struct is_pointer : public false_type {}; +struct is_pointer : public false_type +{ +}; template <typename T> -struct is_pointer<T*> : public true_type {}; +struct is_pointer<T*> : public true_type +{ +}; template <typename Iterator> -struct IteratorTraits { +struct IteratorTraits +{ typedef typename Iterator::value_type value_type; }; template <typename T> -struct IteratorTraits<T*> { +struct IteratorTraits<T*> +{ typedef T value_type; }; template <typename T> -struct IteratorTraits<const T*> { +struct IteratorTraits<const T*> +{ typedef T value_type; }; #if GTEST_OS_WINDOWS -# define GTEST_PATH_SEP_ "\\" -# define GTEST_HAS_ALT_PATH_SEP_ 1 +#define GTEST_PATH_SEP_ "\\" +#define GTEST_HAS_ALT_PATH_SEP_ 1 // The biggest signed integer type the compiler supports. typedef __int64 BiggestInt; #else -# define GTEST_PATH_SEP_ "/" -# define GTEST_HAS_ALT_PATH_SEP_ 0 -typedef long long BiggestInt; // NOLINT -#endif // GTEST_OS_WINDOWS +#define GTEST_PATH_SEP_ "/" +#define GTEST_HAS_ALT_PATH_SEP_ 0 +typedef long long BiggestInt; // NOLINT +#endif // GTEST_OS_WINDOWS // Utilities for char. @@ -2763,36 +3352,46 @@ typedef long long BiggestInt; // NOLINT // Therefore we need to cast a char to unsigned char before calling // isspace(), etc. -inline bool IsAlpha(char ch) { +inline bool IsAlpha(char ch) +{ return isalpha(static_cast<unsigned char>(ch)) != 0; } -inline bool IsAlNum(char ch) { +inline bool IsAlNum(char ch) +{ return isalnum(static_cast<unsigned char>(ch)) != 0; } -inline bool IsDigit(char ch) { +inline bool IsDigit(char ch) +{ return isdigit(static_cast<unsigned char>(ch)) != 0; } -inline bool IsLower(char ch) { +inline bool IsLower(char ch) +{ return islower(static_cast<unsigned char>(ch)) != 0; } -inline bool IsSpace(char ch) { +inline bool IsSpace(char ch) +{ return isspace(static_cast<unsigned char>(ch)) != 0; } -inline bool IsUpper(char ch) { +inline bool IsUpper(char ch) +{ return isupper(static_cast<unsigned char>(ch)) != 0; } -inline bool IsXDigit(char ch) { +inline bool IsXDigit(char ch) +{ return isxdigit(static_cast<unsigned char>(ch)) != 0; } -inline bool IsXDigit(wchar_t ch) { +inline bool IsXDigit(wchar_t ch) +{ const unsigned char low_byte = static_cast<unsigned char>(ch); return ch == low_byte && isxdigit(low_byte) != 0; } -inline char ToLower(char ch) { +inline char ToLower(char ch) +{ return static_cast<char>(tolower(static_cast<unsigned char>(ch))); } -inline char ToUpper(char ch) { +inline char ToUpper(char ch) +{ return static_cast<char>(toupper(static_cast<unsigned char>(ch))); } @@ -2810,62 +3409,112 @@ namespace posix { typedef struct _stat StatStruct; -# ifdef __BORLANDC__ -inline int IsATTY(int fd) { return isatty(fd); } -inline int StrCaseCmp(const char* s1, const char* s2) { +#ifdef __BORLANDC__ +inline int IsATTY(int fd) +{ + return isatty(fd); +} +inline int StrCaseCmp(const char* s1, const char* s2) +{ return stricmp(s1, s2); } -inline char* StrDup(const char* src) { return strdup(src); } -# else // !__BORLANDC__ -# if GTEST_OS_WINDOWS_MOBILE -inline int IsATTY(int /* fd */) { return 0; } -# else -inline int IsATTY(int fd) { return _isatty(fd); } -# endif // GTEST_OS_WINDOWS_MOBILE -inline int StrCaseCmp(const char* s1, const char* s2) { +inline char* StrDup(const char* src) +{ + return strdup(src); +} +#else // !__BORLANDC__ +#if GTEST_OS_WINDOWS_MOBILE +inline int IsATTY(int /* fd */) +{ + return 0; +} +#else +inline int IsATTY(int fd) +{ + return _isatty(fd); +} +#endif // GTEST_OS_WINDOWS_MOBILE +inline int StrCaseCmp(const char* s1, const char* s2) +{ return _stricmp(s1, s2); } -inline char* StrDup(const char* src) { return _strdup(src); } -# endif // __BORLANDC__ +inline char* StrDup(const char* src) +{ + return _strdup(src); +} +#endif // __BORLANDC__ -# if GTEST_OS_WINDOWS_MOBILE -inline int FileNo(FILE* file) { return reinterpret_cast<int>(_fileno(file)); } +#if GTEST_OS_WINDOWS_MOBILE +inline int FileNo(FILE* file) +{ + return reinterpret_cast<int>(_fileno(file)); +} // Stat(), RmDir(), and IsDir() are not needed on Windows CE at this // time and thus not defined there. -# else -inline int FileNo(FILE* file) { return _fileno(file); } -inline int Stat(const char* path, StatStruct* buf) { return _stat(path, buf); } -inline int RmDir(const char* dir) { return _rmdir(dir); } -inline bool IsDir(const StatStruct& st) { +#else +inline int FileNo(FILE* file) +{ + return _fileno(file); +} +inline int Stat(const char* path, StatStruct* buf) +{ + return _stat(path, buf); +} +inline int RmDir(const char* dir) +{ + return _rmdir(dir); +} +inline bool IsDir(const StatStruct& st) +{ return (_S_IFDIR & st.st_mode) != 0; } -# endif // GTEST_OS_WINDOWS_MOBILE +#endif // GTEST_OS_WINDOWS_MOBILE #else typedef struct stat StatStruct; -inline int FileNo(FILE* file) { return fileno(file); } -inline int IsATTY(int fd) { return isatty(fd); } -inline int Stat(const char* path, StatStruct* buf) { return stat(path, buf); } -inline int StrCaseCmp(const char* s1, const char* s2) { +inline int FileNo(FILE* file) +{ + return fileno(file); +} +inline int IsATTY(int fd) +{ + return isatty(fd); +} +inline int Stat(const char* path, StatStruct* buf) +{ + return stat(path, buf); +} +inline int StrCaseCmp(const char* s1, const char* s2) +{ return strcasecmp(s1, s2); } -inline char* StrDup(const char* src) { return strdup(src); } -inline int RmDir(const char* dir) { return rmdir(dir); } -inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); } +inline char* StrDup(const char* src) +{ + return strdup(src); +} +inline int RmDir(const char* dir) +{ + return rmdir(dir); +} +inline bool IsDir(const StatStruct& st) +{ + return S_ISDIR(st.st_mode); +} -#endif // GTEST_OS_WINDOWS +#endif // GTEST_OS_WINDOWS // Functions deprecated by MSVC 8.0. #ifdef _MSC_VER // Temporarily disable warning 4996 (deprecated function). -# pragma warning(push) -# pragma warning(disable:4996) +#pragma warning(push) +#pragma warning(disable : 4996) #endif -inline const char* StrNCpy(char* dest, const char* src, size_t n) { +inline const char* StrNCpy(char* dest, const char* src, size_t n) +{ return strncpy(dest, src, n); } @@ -2874,29 +3523,49 @@ inline const char* StrNCpy(char* dest, const char* src, size_t n) { // defined there. #if !GTEST_OS_WINDOWS_MOBILE -inline int ChDir(const char* dir) { return chdir(dir); } +inline int ChDir(const char* dir) +{ + return chdir(dir); +} #endif -inline FILE* FOpen(const char* path, const char* mode) { +inline FILE* FOpen(const char* path, const char* mode) +{ return fopen(path, mode); } #if !GTEST_OS_WINDOWS_MOBILE -inline FILE *FReopen(const char* path, const char* mode, FILE* stream) { +inline FILE* FReopen(const char* path, const char* mode, FILE* stream) +{ return freopen(path, mode, stream); } -inline FILE* FDOpen(int fd, const char* mode) { return fdopen(fd, mode); } +inline FILE* FDOpen(int fd, const char* mode) +{ + return fdopen(fd, mode); +} #endif -inline int FClose(FILE* fp) { return fclose(fp); } +inline int FClose(FILE* fp) +{ + return fclose(fp); +} #if !GTEST_OS_WINDOWS_MOBILE -inline int Read(int fd, void* buf, unsigned int count) { +inline int Read(int fd, void* buf, unsigned int count) +{ return static_cast<int>(read(fd, buf, count)); } -inline int Write(int fd, const void* buf, unsigned int count) { +inline int Write(int fd, const void* buf, unsigned int count) +{ return static_cast<int>(write(fd, buf, count)); } -inline int Close(int fd) { return close(fd); } -inline const char* StrError(int errnum) { return strerror(errnum); } +inline int Close(int fd) +{ + return close(fd); +} +inline const char* StrError(int errnum) +{ + return strerror(errnum); +} #endif -inline const char* GetEnv(const char* name) { +inline const char* GetEnv(const char* name) +{ #if GTEST_OS_WINDOWS_MOBILE // We are on Windows CE, which has no environment variables. return NULL; @@ -2911,7 +3580,7 @@ inline const char* GetEnv(const char* name) { } #ifdef _MSC_VER -# pragma warning(pop) // Restores the warning state. +#pragma warning(pop) // Restores the warning state. #endif #if GTEST_OS_WINDOWS_MOBILE @@ -2920,10 +3589,13 @@ inline const char* GetEnv(const char* name) { // imitation of standard behaviour. void Abort(); #else -inline void Abort() { abort(); } -#endif // GTEST_OS_WINDOWS_MOBILE +inline void Abort() +{ + abort(); +} +#endif // GTEST_OS_WINDOWS_MOBILE -} // namespace posix +} // namespace posix // MSVC "deprecates" snprintf and issues warnings wherever it is used. In // order to avoid these warnings, we need to use _snprintf or _snprintf_s on @@ -2932,14 +3604,13 @@ inline void Abort() { abort(); } // snprintf is a variadic function. #if _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE // MSVC 2005 and above support variadic macros. -# define GTEST_SNPRINTF_(buffer, size, format, ...) \ - _snprintf_s(buffer, size, size, format, __VA_ARGS__) +#define GTEST_SNPRINTF_(buffer, size, format, ...) _snprintf_s(buffer, size, size, format, __VA_ARGS__) #elif defined(_MSC_VER) // Windows CE does not define _snprintf_s and MSVC prior to 2005 doesn't // complain about _snprintf. -# define GTEST_SNPRINTF_ _snprintf +#define GTEST_SNPRINTF_ _snprintf #else -# define GTEST_SNPRINTF_ snprintf +#define GTEST_SNPRINTF_ snprintf #endif // The maximum number a BiggestInt can represent. This definition @@ -2949,8 +3620,7 @@ inline void Abort() { abort(); } // We cannot rely on numeric_limits in STL, as __int64 and long long // are not part of standard C++ and numeric_limits doesn't need to be // defined for them. -const BiggestInt kMaxBiggestInt = - ~(static_cast<BiggestInt>(1) << (8*sizeof(BiggestInt) - 1)); +const BiggestInt kMaxBiggestInt = ~(static_cast<BiggestInt>(1) << (8 * sizeof(BiggestInt) - 1)); // This template class serves as a compile-time function from size to // type. It maps a size in bytes to a primitive type with that @@ -2971,8 +3641,9 @@ const BiggestInt kMaxBiggestInt = // needs. Other types can be easily added in the future if need // arises. template <size_t size> -class TypeWithSize { - public: +class TypeWithSize +{ +public: // This prevents the user from using TypeWithSize<N> with incorrect // values of N. typedef void UInt; @@ -2980,8 +3651,9 @@ class TypeWithSize { // The specialization for size 4. template <> -class TypeWithSize<4> { - public: +class TypeWithSize<4> +{ +public: // unsigned int has size 4 in both gcc and MSVC. // // As base/basictypes.h doesn't compile on Windows, we cannot use @@ -2992,15 +3664,16 @@ class TypeWithSize<4> { // The specialization for size 8. template <> -class TypeWithSize<8> { - public: +class TypeWithSize<8> +{ +public: #if GTEST_OS_WINDOWS typedef __int64 Int; typedef unsigned __int64 UInt; #else - typedef long long Int; // NOLINT - typedef unsigned long long UInt; // NOLINT -#endif // GTEST_OS_WINDOWS + typedef long long Int; // NOLINT + typedef unsigned long long UInt; // NOLINT +#endif // GTEST_OS_WINDOWS }; // Integer types of known sizes. @@ -3008,7 +3681,7 @@ typedef TypeWithSize<4>::Int Int32; typedef TypeWithSize<4>::UInt UInt32; typedef TypeWithSize<8>::Int Int64; typedef TypeWithSize<8>::UInt UInt64; -typedef TypeWithSize<8>::Int TimeInMillis; // Represents time in milliseconds. +typedef TypeWithSize<8>::Int TimeInMillis; // Represents time in milliseconds. // Utilities for command line flags and environment variables. @@ -3017,18 +3690,14 @@ typedef TypeWithSize<8>::Int TimeInMillis; // Represents time in milliseconds. // Macros for declaring flags. #define GTEST_DECLARE_bool_(name) GTEST_API_ extern bool GTEST_FLAG(name) -#define GTEST_DECLARE_int32_(name) \ - GTEST_API_ extern ::testing::internal::Int32 GTEST_FLAG(name) -#define GTEST_DECLARE_string_(name) \ - GTEST_API_ extern ::std::string GTEST_FLAG(name) +#define GTEST_DECLARE_int32_(name) GTEST_API_ extern ::testing::internal::Int32 GTEST_FLAG(name) +#define GTEST_DECLARE_string_(name) GTEST_API_ extern ::std::string GTEST_FLAG(name) // Macros for defining flags. -#define GTEST_DEFINE_bool_(name, default_val, doc) \ - GTEST_API_ bool GTEST_FLAG(name) = (default_val) -#define GTEST_DEFINE_int32_(name, default_val, doc) \ - GTEST_API_ ::testing::internal::Int32 GTEST_FLAG(name) = (default_val) -#define GTEST_DEFINE_string_(name, default_val, doc) \ - GTEST_API_ ::std::string GTEST_FLAG(name) = (default_val) +#define GTEST_DEFINE_bool_(name, default_val, doc) GTEST_API_ bool GTEST_FLAG(name) = (default_val) +#define GTEST_DEFINE_int32_(name, default_val, doc) \ + GTEST_API_::testing::internal::Int32 GTEST_FLAG(name) = (default_val) +#define GTEST_DEFINE_string_(name, default_val, doc) GTEST_API_::std::string GTEST_FLAG(name) = (default_val) // Thread annotations #define GTEST_EXCLUSIVE_LOCK_REQUIRED_(locks) @@ -3048,20 +3717,20 @@ bool BoolFromGTestEnv(const char* flag, bool default_val); GTEST_API_ Int32 Int32FromGTestEnv(const char* flag, Int32 default_val); const char* StringFromGTestEnv(const char* flag, const char* default_val); -} // namespace internal -} // namespace testing +} // namespace internal +} // namespace testing -#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ #if GTEST_OS_LINUX -# include <stdlib.h> -# include <sys/types.h> -# include <sys/wait.h> -# include <unistd.h> -#endif // GTEST_OS_LINUX +#include <stdlib.h> +#include <sys/types.h> +#include <sys/wait.h> +#include <unistd.h> +#endif // GTEST_OS_LINUX #if GTEST_HAS_EXCEPTIONS -# include <stdexcept> +#include <stdexcept> #endif #include <ctype.h> @@ -3154,37 +3823,44 @@ namespace testing { // latter (it causes an access violation if you do). The Message // class hides this difference by treating a NULL char pointer as // "(null)". -class GTEST_API_ Message { - private: +class GTEST_API_ Message +{ +private: // The type of basic IO manipulators (endl, ends, and flush) for // narrow streams. typedef std::ostream& (*BasicNarrowIoManip)(std::ostream&); - public: +public: // Constructs an empty Message. Message(); // Copy constructor. - Message(const Message& msg) : ss_(new ::std::stringstream) { // NOLINT + Message(const Message& msg) + : ss_(new ::std::stringstream) + { // NOLINT *ss_ << msg.GetString(); } // Constructs a Message from a C-string. - explicit Message(const char* str) : ss_(new ::std::stringstream) { + explicit Message(const char* str) + : ss_(new ::std::stringstream) + { *ss_ << str; } #if GTEST_OS_SYMBIAN // Streams a value (either a pointer or not) to this object. template <typename T> - inline Message& operator <<(const T& value) { + inline Message& operator<<(const T& value) + { StreamHelper(typename internal::is_pointer<T>::type(), value); return *this; } #else // Streams a non-pointer value to this object. template <typename T> - inline Message& operator <<(const T& val) { + inline Message& operator<<(const T& val) + { // Some libraries overload << for STL containers. These // overloads are defined in the global namespace instead of ::std. // @@ -3199,7 +3875,7 @@ class GTEST_API_ Message { // from the global namespace. With this using declaration, // overloads of << defined in the global namespace and those // visible via Koenig lookup are both exposed in this function. - using ::operator <<; + using ::operator<<; *ss_ << val; return *this; } @@ -3218,7 +3894,8 @@ class GTEST_API_ Message { // ensure consistent result across compilers, we always treat NULL // as "(null)". template <typename T> - inline Message& operator <<(T* const& pointer) { // NOLINT + inline Message& operator<<(T* const& pointer) + { // NOLINT if (pointer == NULL) { *ss_ << "(null)"; } else { @@ -3226,7 +3903,7 @@ class GTEST_API_ Message { } return *this; } -#endif // GTEST_OS_SYMBIAN +#endif // GTEST_OS_SYMBIAN // Since the basic IO manipulators are overloaded for both narrow // and wide streams, we have to provide this specialized definition @@ -3234,32 +3911,34 @@ class GTEST_API_ Message { // templatized version above. Without this definition, streaming // endl or other basic IO manipulators to Message will confuse the // compiler. - Message& operator <<(BasicNarrowIoManip val) { + Message& operator<<(BasicNarrowIoManip val) + { *ss_ << val; return *this; } // Instead of 1/0, we want to see true/false for bool values. - Message& operator <<(bool b) { + Message& operator<<(bool b) + { return *this << (b ? "true" : "false"); } // These two overloads allow streaming a wide C string to a Message // using the UTF-8 encoding. - Message& operator <<(const wchar_t* wide_c_str); - Message& operator <<(wchar_t* wide_c_str); + Message& operator<<(const wchar_t* wide_c_str); + Message& operator<<(wchar_t* wide_c_str); #if GTEST_HAS_STD_WSTRING // Converts the given wide string to a narrow string using the UTF-8 // encoding, and streams the result to this Message object. - Message& operator <<(const ::std::wstring& wstr); -#endif // GTEST_HAS_STD_WSTRING + Message& operator<<(const ::std::wstring& wstr); +#endif // GTEST_HAS_STD_WSTRING #if GTEST_HAS_GLOBAL_WSTRING // Converts the given wide string to a narrow string using the UTF-8 // encoding, and streams the result to this Message object. - Message& operator <<(const ::wstring& wstr); -#endif // GTEST_HAS_GLOBAL_WSTRING + Message& operator<<(const ::wstring& wstr); +#endif // GTEST_HAS_GLOBAL_WSTRING // Gets the text streamed to this object so far as an std::string. // Each '\0' character in the buffer is replaced with "\\0". @@ -3267,15 +3946,15 @@ class GTEST_API_ Message { // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. std::string GetString() const; - private: - +private: #if GTEST_OS_SYMBIAN // These are needed as the Nokia Symbian Compiler cannot decide between // const T& and const T* in a function template. The Nokia compiler _can_ // decide between class template specializations for T and T*, so a // tr1::type_traits-like is_pointer works, and we can overload on that. template <typename T> - inline void StreamHelper(internal::true_type /*is_pointer*/, T* pointer) { + inline void StreamHelper(internal::true_type /*is_pointer*/, T* pointer) + { if (pointer == NULL) { *ss_ << "(null)"; } else { @@ -3283,17 +3962,17 @@ class GTEST_API_ Message { } } template <typename T> - inline void StreamHelper(internal::false_type /*is_pointer*/, - const T& value) { + inline void StreamHelper(internal::false_type /*is_pointer*/, const T& value) + { // See the comments in Message& operator <<(const T&) above for why // we need this using statement. - using ::operator <<; + using ::operator<<; *ss_ << value; } -#endif // GTEST_OS_SYMBIAN +#endif // GTEST_OS_SYMBIAN // We'll hold the text streamed to this object here. - const internal::scoped_ptr< ::std::stringstream> ss_; + const internal::scoped_ptr<::std::stringstream> ss_; // We declare (but don't implement) this to prevent the compiler // from implementing the assignment operator. @@ -3301,7 +3980,8 @@ class GTEST_API_ Message { }; // Streams a Message to an ostream. -inline std::ostream& operator <<(std::ostream& os, const Message& sb) { +inline std::ostream& operator<<(std::ostream& os, const Message& sb) +{ return os << sb.GetString(); } @@ -3312,14 +3992,15 @@ namespace internal { // ::std::string, ::wstring, or ::std::wstring object, each NUL // character in it is replaced with "\\0". template <typename T> -std::string StreamableToString(const T& streamable) { +std::string StreamableToString(const T& streamable) +{ return (Message() << streamable).GetString(); } -} // namespace internal -} // namespace testing +} // namespace internal +} // namespace testing -#endif // GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_ +#endif // GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_ // Copyright 2005, Google Inc. // All rights reserved. // @@ -3365,7 +4046,7 @@ std::string StreamableToString(const T& streamable) { #ifdef __BORLANDC__ // string.h is not guaranteed to provide strcpy on C++ Builder. -# include <mem.h> +#include <mem.h> #endif #include <string.h> @@ -3376,8 +4057,9 @@ namespace testing { namespace internal { // String - an abstract class holding static string utilities. -class GTEST_API_ String { - public: +class GTEST_API_ String +{ +public: // Static utility methods // Clones a 0-terminated C string, allocating memory using new. The @@ -3442,8 +4124,7 @@ class GTEST_API_ String { // Unlike strcasecmp(), this function can handle NULL argument(s). // A NULL C string is considered different to any non-NULL C string, // including the empty string. - static bool CaseInsensitiveCStringEquals(const char* lhs, - const char* rhs); + static bool CaseInsensitiveCStringEquals(const char* lhs, const char* rhs); // Compares two wide C strings, ignoring case. Returns true iff they // have the same content. @@ -3457,16 +4138,14 @@ class GTEST_API_ String { // which compares according to LC_CTYPE category of the current locale. // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the // current locale. - static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, - const wchar_t* rhs); + static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); // Returns true iff the given string ends with the given suffix, ignoring // case. Any string is considered to end with an empty suffix. - static bool EndsWithCaseInsensitive( - const std::string& str, const std::string& suffix); + static bool EndsWithCaseInsensitive(const std::string& str, const std::string& suffix); // Formats an int value as "%02d". - static std::string FormatIntWidth2(int value); // "%02d" for width == 2 + static std::string FormatIntWidth2(int value); // "%02d" for width == 2 // Formats an int value as "%X". static std::string FormatHexInt(int value); @@ -3474,18 +4153,18 @@ class GTEST_API_ String { // Formats a byte as "%02X". static std::string FormatByte(unsigned char value); - private: - String(); // Not meant to be instantiated. -}; // class String +private: + String(); // Not meant to be instantiated. +}; // class String // Gets the content of the stringstream's buffer as an std::string. Each '\0' // character in the buffer is replaced with "\\0". GTEST_API_ std::string StringStreamToString(::std::stringstream* stream); -} // namespace internal -} // namespace testing +} // namespace internal +} // namespace testing -#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ // Copyright 2008, Google Inc. // All rights reserved. // @@ -3543,26 +4222,43 @@ namespace internal { // Names are NOT checked for syntax correctness -- no checking for illegal // characters, malformed paths, etc. -class GTEST_API_ FilePath { - public: - FilePath() : pathname_("") { } - FilePath(const FilePath& rhs) : pathname_(rhs.pathname_) { } +class GTEST_API_ FilePath +{ +public: + FilePath() + : pathname_("") + { + } + FilePath(const FilePath& rhs) + : pathname_(rhs.pathname_) + { + } - explicit FilePath(const std::string& pathname) : pathname_(pathname) { + explicit FilePath(const std::string& pathname) + : pathname_(pathname) + { Normalize(); } - FilePath& operator=(const FilePath& rhs) { + FilePath& operator=(const FilePath& rhs) + { Set(rhs); return *this; } - void Set(const FilePath& rhs) { + void Set(const FilePath& rhs) + { pathname_ = rhs.pathname_; } - const std::string& string() const { return pathname_; } - const char* c_str() const { return pathname_.c_str(); } + const std::string& string() const + { + return pathname_; + } + const char* c_str() const + { + return pathname_.c_str(); + } // Returns the current working directory, or "" if unsuccessful. static FilePath GetCurrentDir(); @@ -3571,16 +4267,12 @@ class GTEST_API_ FilePath { // extension = "xml", returns "dir/test.xml". If number is greater // than zero (e.g., 12), returns "dir/test_12.xml". // On Windows platform, uses \ as the separator rather than /. - static FilePath MakeFileName(const FilePath& directory, - const FilePath& base_name, - int number, - const char* extension); + static FilePath MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension); // Given directory = "dir", relative_path = "test.xml", // returns "dir/test.xml". // On Windows, uses \ as the separator rather than /. - static FilePath ConcatPaths(const FilePath& directory, - const FilePath& relative_path); + static FilePath ConcatPaths(const FilePath& directory, const FilePath& relative_path); // Returns a pathname for a file that does not currently exist. The pathname // will be directory/base_name.extension or @@ -3590,12 +4282,13 @@ class GTEST_API_ FilePath { // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. // There could be a race condition if two or more processes are calling this // function at the same time -- they could both pick the same filename. - static FilePath GenerateUniqueFileName(const FilePath& directory, - const FilePath& base_name, - const char* extension); + static FilePath GenerateUniqueFileName(const FilePath& directory, const FilePath& base_name, const char* extension); // Returns true iff the path is "". - bool IsEmpty() const { return pathname_.empty(); } + bool IsEmpty() const + { + return pathname_.empty(); + } // If input name has a trailing separator character, removes it and returns // the name, otherwise return the name string unmodified. @@ -3656,7 +4349,7 @@ class GTEST_API_ FilePath { // Returns true if pathname describes an absolute path. bool IsAbsolutePath() const; - private: +private: // Replaces multiple consecutive separators with a single separator. // For example, "bar///foo" becomes "bar/foo". Does not eliminate other // redundancies that might be in a pathname involving "." or "..". @@ -3685,12 +4378,12 @@ class GTEST_API_ FilePath { const char* FindLastPathSeparator() const; std::string pathname_; -}; // class FilePath +}; // class FilePath -} // namespace internal -} // namespace testing +} // namespace internal +} // namespace testing -#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_ +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_ // This file was GENERATED by command: // pump.py gtest-type-util.h.pump // DO NOT EDIT BY HAND!!! @@ -3740,11 +4433,11 @@ class GTEST_API_ FilePath { // #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_ +#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 { @@ -3753,30 +4446,31 @@ namespace internal { // 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 +std::string GetTypeName() +{ +#if GTEST_HAS_RTTI const char* const name = typeid(T).name(); -# if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC) +#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_ +// 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_ +#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 name_str; -# else +#else return name; -# endif // GTEST_HAS_CXXABI_H_ || __HP_aCC +#endif // GTEST_HAS_CXXABI_H_ || __HP_aCC -# else +#else return "<type>"; -# endif // GTEST_HAS_RTTI +#endif // GTEST_HAS_RTTI } #if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P @@ -3789,7 +4483,8 @@ template <typename T1, typename T2> struct AssertTypeEq; template <typename T> -struct AssertTypeEq<T, T> { +struct AssertTypeEq<T, T> +{ typedef bool type; }; @@ -3797,7 +4492,9 @@ struct AssertTypeEq<T, T> { // 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 {}; +struct None +{ +}; // The following family of struct and struct templates are used to // represent type lists. In particular, TypesN<T1, T2, ..., TN> @@ -3807,602 +4504,541 @@ struct None {}; // list. // The empty type list. -struct Types0 {}; +struct Types0 +{ +}; // Type lists of length 1, 2, 3, and so on. template <typename T1> -struct Types1 { +struct Types1 +{ typedef T1 Head; typedef Types0 Tail; }; template <typename T1, typename T2> -struct Types2 { +struct Types2 +{ typedef T1 Head; typedef Types1<T2> Tail; }; template <typename T1, typename T2, typename T3> -struct Types3 { +struct Types3 +{ typedef T1 Head; typedef Types2<T2, T3> Tail; }; template <typename T1, typename T2, typename T3, typename T4> -struct Types4 { +struct Types4 +{ typedef T1 Head; typedef Types3<T2, T3, T4> Tail; }; template <typename T1, typename T2, typename T3, typename T4, typename T5> -struct Types5 { +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 { +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 { +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 { +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 { +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 { +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 { +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 { +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 { +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 { +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 { +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; + 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 { +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; + 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 { +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; + 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 { +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; + 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 { +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; + 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 { +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; + 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 { +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; + 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 { +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; + 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 { +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; + 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 { +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; + 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 { +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; + 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 { +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; + 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 { +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; + 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 { +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; + 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 { +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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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; + 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 +} // 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 @@ -4417,901 +5053,701 @@ struct Types50 { // 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 <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> { +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> { +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> { +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> { +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> { +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> { +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> { +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> { +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> { +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> { +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> { +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> { +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; +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 +#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 @@ -5322,22 +5758,25 @@ namespace internal { // This trick is necessary for simulating typedef for class templates, // which C++ doesn't support directly. template <GTEST_TEMPLATE_ Tmpl> -struct TemplateSel { +struct TemplateSel +{ template <typename T> - struct Bind { + struct Bind + { typedef Tmpl<T> type; }; }; -# define GTEST_BIND_(TmplSel, T) \ - TmplSel::template Bind<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 {}; +struct NoneT +{ +}; // The following family of struct and struct templates are used to // represent template lists. In particular, TemplatesN<T1, T2, ..., @@ -5347,768 +5786,623 @@ struct NoneT {}; // for the rest of the list. // The empty template list. -struct Templates0 {}; +struct Templates0 +{ +}; // Template lists of length 1, 2, 3, and so on. template <GTEST_TEMPLATE_ T1> -struct Templates1 { +struct Templates1 +{ typedef TemplateSel<T1> Head; typedef Templates0 Tail; }; template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2> -struct Templates2 { +struct Templates2 +{ typedef TemplateSel<T1> Head; typedef Templates1<T2> Tail; }; template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3> -struct Templates3 { +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 { +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 { +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 { +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 { +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 { +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 { +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 { +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 { +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 { +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 { +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 { +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; + 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 { +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; + 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 { +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; + 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 { +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; + 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 { +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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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; + 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; }; @@ -6125,865 +6419,655 @@ struct Templates50 { // 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 <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> { +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> { +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> { +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> { +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> { +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> { +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> { +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> { +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> { +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> { +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> { +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> { +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> { +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; +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 @@ -6991,36 +7075,33 @@ struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, // INSTANTIATE_TYPED_TEST_CASE_P(). template <typename T> -struct TypeList { +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; +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 +#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P -} // namespace internal -} // namespace testing +} // namespace internal +} // namespace testing -#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ // Due to C++ preprocessor weirdness, we need double indirection to // concatenate two tokens when one of them is __LINE__. Writing @@ -7031,31 +7112,33 @@ struct TypeList<Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, // the current line number. For more details, see // http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-39.6 #define GTEST_CONCAT_TOKEN_(foo, bar) GTEST_CONCAT_TOKEN_IMPL_(foo, bar) -#define GTEST_CONCAT_TOKEN_IMPL_(foo, bar) foo ## bar +#define GTEST_CONCAT_TOKEN_IMPL_(foo, bar) foo##bar class ProtocolMessage; -namespace proto2 { class Message; } +namespace proto2 { +class Message; +} namespace testing { // Forward declarations. -class AssertionResult; // Result of an assertion. -class Message; // Represents a failure message. -class Test; // Represents a test. -class TestInfo; // Information about a test. -class TestPartResult; // Result of a test part. -class UnitTest; // A collection of test cases. +class AssertionResult; // Result of an assertion. +class Message; // Represents a failure message. +class Test; // Represents a test. +class TestInfo; // Information about a test. +class TestPartResult; // Result of a test part. +class UnitTest; // A collection of test cases. template <typename T> ::std::string PrintToString(const T& value); namespace internal { -struct TraceInfo; // Information about a trace point. -class ScopedTrace; // Implements scoped trace. -class TestInfoImpl; // Opaque implementation of TestInfo -class UnitTestImpl; // Opaque implementation of UnitTest +struct TraceInfo; // Information about a trace point. +class ScopedTrace; // Implements scoped trace. +class TestInfoImpl; // Opaque implementation of TestInfo +class UnitTestImpl; // Opaque implementation of UnitTest // How many times InitGoogleTest() has been called. GTEST_API_ extern int g_init_gtest_count; @@ -7079,7 +7162,7 @@ GTEST_API_ extern const char kStackTraceMarker[]; // pointer literal if and only if the first version is picked by the // compiler. char IsNullLiteralHelper(Secret* p); -char (&IsNullLiteralHelper(...))[2]; // NOLINT +char(&IsNullLiteralHelper(...))[2]; // NOLINT // A compile-time bool constant that is true if and only if x is a // null pointer literal (i.e. NULL or any 0-valued compile-time @@ -7087,15 +7170,13 @@ char (&IsNullLiteralHelper(...))[2]; // NOLINT #ifdef GTEST_ELLIPSIS_NEEDS_POD_ // We lose support for NULL detection where the compiler doesn't like // passing non-POD classes through ellipsis (...). -# define GTEST_IS_NULL_LITERAL_(x) false +#define GTEST_IS_NULL_LITERAL_(x) false #else -# define GTEST_IS_NULL_LITERAL_(x) \ - (sizeof(::testing::internal::IsNullLiteralHelper(x)) == 1) -#endif // GTEST_ELLIPSIS_NEEDS_POD_ +#define GTEST_IS_NULL_LITERAL_(x) (sizeof(::testing::internal::IsNullLiteralHelper(x)) == 1) +#endif // GTEST_ELLIPSIS_NEEDS_POD_ // Appends the user-supplied message to the Google-Test-generated message. -GTEST_API_ std::string AppendUserMessage( - const std::string& gtest_msg, const Message& user_msg); +GTEST_API_ std::string AppendUserMessage(const std::string& gtest_msg, const Message& user_msg); #if GTEST_HAS_EXCEPTIONS @@ -7105,16 +7186,18 @@ GTEST_API_ std::string AppendUserMessage( // errors presumably detectable only at run time. Since // std::runtime_error inherits from std::exception, many testing // frameworks know how to extract and print the message inside it. -class GTEST_API_ GoogleTestFailureException : public ::std::runtime_error { - public: +class GTEST_API_ GoogleTestFailureException : public ::std::runtime_error +{ +public: explicit GoogleTestFailureException(const TestPartResult& failure); }; -#endif // GTEST_HAS_EXCEPTIONS +#endif // GTEST_HAS_EXCEPTIONS // A helper class for creating scoped traces in user programs. -class GTEST_API_ ScopedTrace { - public: +class GTEST_API_ ScopedTrace +{ +public: // The c'tor pushes the given source file location and message onto // a trace stack maintained by Google Test. ScopedTrace(const char* file, int line, const Message& message); @@ -7125,11 +7208,11 @@ class GTEST_API_ ScopedTrace { // Don't inherit from ScopedTrace! ~ScopedTrace(); - private: +private: GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedTrace); -} GTEST_ATTRIBUTE_UNUSED_; // A ScopedTrace object does its job in its - // c'tor and d'tor. Therefore it doesn't - // need to be used otherwise. +} GTEST_ATTRIBUTE_UNUSED_; // A ScopedTrace object does its job in its +// c'tor and d'tor. Therefore it doesn't +// need to be used otherwise. // Constructs and returns the message for an equality assertion // (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure. @@ -7146,18 +7229,14 @@ class GTEST_API_ ScopedTrace { // The ignoring_case parameter is true iff the assertion is a // *_STRCASEEQ*. When it's true, the string " (ignoring case)" will // be inserted into the message. -GTEST_API_ AssertionResult EqFailure(const char* expected_expression, - const char* actual_expression, - const std::string& expected_value, - const std::string& actual_value, +GTEST_API_ AssertionResult EqFailure(const char* expected_expression, const char* actual_expression, + const std::string& expected_value, const std::string& actual_value, bool ignoring_case); // Constructs a failure message for Boolean assertions such as EXPECT_TRUE. -GTEST_API_ std::string GetBoolAssertionFailureMessage( - const AssertionResult& assertion_result, - const char* expression_text, - const char* actual_predicate_value, - const char* expected_predicate_value); +GTEST_API_ std::string GetBoolAssertionFailureMessage(const AssertionResult& assertion_result, + const char* expression_text, const char* actual_predicate_value, + const char* expected_predicate_value); // This template class represents an IEEE floating-point number // (either single-precision or double-precision, depending on the @@ -7189,8 +7268,9 @@ GTEST_API_ std::string GetBoolAssertionFailureMessage( // // RawType: the raw floating-point type (either float or double) template <typename RawType> -class FloatingPoint { - public: +class FloatingPoint +{ +public: // Defines the unsigned integer type that has the same size as the // floating point number. typedef typename TypeWithSize<sizeof(RawType)>::UInt Bits; @@ -7198,11 +7278,10 @@ class FloatingPoint { // Constants. // # of bits in a number. - static const size_t kBitCount = 8*sizeof(RawType); + static const size_t kBitCount = 8 * sizeof(RawType); // # of fraction bits in a number. - static const size_t kFractionBitCount = - std::numeric_limits<RawType>::digits - 1; + static const size_t kFractionBitCount = std::numeric_limits<RawType>::digits - 1; // # of exponent bits in a number. static const size_t kExponentBitCount = kBitCount - 1 - kFractionBitCount; @@ -7211,8 +7290,7 @@ class FloatingPoint { static const Bits kSignBitMask = static_cast<Bits>(1) << (kBitCount - 1); // The mask for the fraction bits. - static const Bits kFractionBitMask = - ~static_cast<Bits>(0) >> (kExponentBitCount + 1); + static const Bits kFractionBitMask = ~static_cast<Bits>(0) >> (kExponentBitCount + 1); // The mask for the exponent bits. static const Bits kExponentBitMask = ~(kSignBitMask | kFractionBitMask); @@ -7237,21 +7315,26 @@ class FloatingPoint { // around may change its bits, although the new value is guaranteed // to be also a NAN. Therefore, don't expect this constructor to // preserve the bits in x when x is a NAN. - explicit FloatingPoint(const RawType& x) { u_.value_ = x; } + explicit FloatingPoint(const RawType& x) + { + u_.value_ = x; + } // Static methods // Reinterprets a bit pattern as a floating-point number. // // This function is needed to test the AlmostEquals() method. - static RawType ReinterpretBits(const Bits bits) { + static RawType ReinterpretBits(const Bits bits) + { FloatingPoint fp(0); fp.u_.bits_ = bits; return fp.u_.value_; } // Returns the floating-point number that represent positive infinity. - static RawType Infinity() { + static RawType Infinity() + { return ReinterpretBits(kExponentBitMask); } @@ -7261,19 +7344,32 @@ class FloatingPoint { // Non-static methods // Returns the bits that represents this number. - const Bits &bits() const { return u_.bits_; } + const Bits& bits() const + { + return u_.bits_; + } // Returns the exponent bits of this number. - Bits exponent_bits() const { return kExponentBitMask & u_.bits_; } + Bits exponent_bits() const + { + return kExponentBitMask & u_.bits_; + } // Returns the fraction bits of this number. - Bits fraction_bits() const { return kFractionBitMask & u_.bits_; } + Bits fraction_bits() const + { + return kFractionBitMask & u_.bits_; + } // Returns the sign bit of this number. - Bits sign_bit() const { return kSignBitMask & u_.bits_; } + Bits sign_bit() const + { + return kSignBitMask & u_.bits_; + } // Returns true iff this is NAN (not a number). - bool is_nan() const { + bool is_nan() const + { // It's a NAN if the exponent bits are all ones and the fraction // bits are not entirely zeros. return (exponent_bits() == kExponentBitMask) && (fraction_bits() != 0); @@ -7285,20 +7381,22 @@ class FloatingPoint { // - returns false if either number is (or both are) NAN. // - treats really large numbers as almost equal to infinity. // - thinks +0.0 and -0.0 are 0 DLP's apart. - bool AlmostEquals(const FloatingPoint& rhs) const { + bool AlmostEquals(const FloatingPoint& rhs) const + { // The IEEE standard says that any comparison operation involving // a NAN must return false. - if (is_nan() || rhs.is_nan()) return false; + if (is_nan() || rhs.is_nan()) + return false; - return DistanceBetweenSignAndMagnitudeNumbers(u_.bits_, rhs.u_.bits_) - <= kMaxUlps; + return DistanceBetweenSignAndMagnitudeNumbers(u_.bits_, rhs.u_.bits_) <= kMaxUlps; } - private: +private: // The data type used to store the actual floating-point number. - union FloatingPointUnion { - RawType value_; // The raw floating-point number. - Bits bits_; // The bits that represent the number. + union FloatingPointUnion + { + RawType value_; // The raw floating-point number. + Bits bits_; // The bits that represent the number. }; // Converts an integer from the sign-and-magnitude representation to @@ -7316,7 +7414,8 @@ class FloatingPoint { // // Read http://en.wikipedia.org/wiki/Signed_number_representations // for more details on signed number representations. - static Bits SignAndMagnitudeToBiased(const Bits &sam) { + static Bits SignAndMagnitudeToBiased(const Bits& sam) + { if (kSignBitMask & sam) { // sam represents a negative number. return ~sam + 1; @@ -7328,8 +7427,8 @@ class FloatingPoint { // Given two numbers in the sign-and-magnitude representation, // returns the distance between them as an unsigned number. - static Bits DistanceBetweenSignAndMagnitudeNumbers(const Bits &sam1, - const Bits &sam2) { + static Bits DistanceBetweenSignAndMagnitudeNumbers(const Bits& sam1, const Bits& sam2) + { const Bits biased1 = SignAndMagnitudeToBiased(sam1); const Bits biased2 = SignAndMagnitudeToBiased(sam2); return (biased1 >= biased2) ? (biased1 - biased2) : (biased2 - biased1); @@ -7341,9 +7440,15 @@ class FloatingPoint { // We cannot use std::numeric_limits<T>::max() as it clashes with the max() // macro defined by <windows.h>. template <> -inline float FloatingPoint<float>::Max() { return FLT_MAX; } +inline float FloatingPoint<float>::Max() +{ + return FLT_MAX; +} template <> -inline double FloatingPoint<double>::Max() { return DBL_MAX; } +inline double FloatingPoint<double>::Max() +{ + return DBL_MAX; +} // Typedefs the instances of the FloatingPoint template class that we // care to use. @@ -7359,8 +7464,9 @@ typedef FloatingPoint<double> Double; typedef const void* TypeId; template <typename T> -class TypeIdHelper { - public: +class TypeIdHelper +{ +public: // dummy_ must not have a const type. Otherwise an overly eager // compiler (e.g. MSVC 7.1 & 8.0) may try to merge // TypeIdHelper<T>::dummy_ for different Ts as an "optimization". @@ -7374,7 +7480,8 @@ bool TypeIdHelper<T>::dummy_ = false; // returned for different types. Calling the function twice with the // same type argument is guaranteed to return the same ID. template <typename T> -TypeId GetTypeId() { +TypeId GetTypeId() +{ // The compiler is required to allocate a different // TypeIdHelper<T>::dummy_ variable for each T used to instantiate // the template. Therefore, the address of dummy_ is guaranteed to @@ -7391,27 +7498,36 @@ GTEST_API_ TypeId GetTestTypeId(); // Defines the abstract factory interface that creates instances // of a Test object. -class TestFactoryBase { - public: - virtual ~TestFactoryBase() {} +class TestFactoryBase +{ +public: + virtual ~TestFactoryBase() + { + } // Creates a test instance to run. The instance is both created and destroyed // within TestInfoImpl::Run() virtual Test* CreateTest() = 0; - protected: - TestFactoryBase() {} +protected: + TestFactoryBase() + { + } - private: +private: GTEST_DISALLOW_COPY_AND_ASSIGN_(TestFactoryBase); }; // This class provides implementation of TeastFactoryBase interface. // It is used in TEST and TEST_F macros. template <class TestClass> -class TestFactoryImpl : public TestFactoryBase { - public: - virtual Test* CreateTest() { return new TestClass; } +class TestFactoryImpl : public TestFactoryBase +{ +public: + virtual Test* CreateTest() + { + return new TestClass; + } }; #if GTEST_OS_WINDOWS @@ -7420,12 +7536,10 @@ class TestFactoryImpl : public TestFactoryBase { // {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED} // We pass a long instead of HRESULT to avoid causing an // include dependency for the HRESULT type. -GTEST_API_ AssertionResult IsHRESULTSuccess(const char* expr, - long hr); // NOLINT -GTEST_API_ AssertionResult IsHRESULTFailure(const char* expr, - long hr); // NOLINT +GTEST_API_ AssertionResult IsHRESULTSuccess(const char* expr, long hr); // NOLINT +GTEST_API_ AssertionResult IsHRESULTFailure(const char* expr, long hr); // NOLINT -#endif // GTEST_OS_WINDOWS +#endif // GTEST_OS_WINDOWS // Types of SetUpTestCase() and TearDownTestCase() functions. typedef void (*SetUpTestCaseFunc)(); @@ -7448,15 +7562,10 @@ typedef void (*TearDownTestCaseFunc)(); // factory: pointer to the factory that creates a test object. // The newly created TestInfo instance will assume // ownership of the factory object. -GTEST_API_ TestInfo* MakeAndRegisterTestInfo( - const char* test_case_name, - const char* name, - const char* type_param, - const char* value_param, - TypeId fixture_class_id, - SetUpTestCaseFunc set_up_tc, - TearDownTestCaseFunc tear_down_tc, - TestFactoryBase* factory); +GTEST_API_ TestInfo* MakeAndRegisterTestInfo(const char* test_case_name, const char* name, const char* type_param, + const char* value_param, TypeId fixture_class_id, + SetUpTestCaseFunc set_up_tc, TearDownTestCaseFunc tear_down_tc, + TestFactoryBase* factory); // If *pstr starts with the given prefix, modifies *pstr to be right // past the prefix and returns true; otherwise leaves *pstr unchanged @@ -7466,19 +7575,26 @@ GTEST_API_ bool SkipPrefix(const char* prefix, const char** pstr); #if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P // State of the definition of a type-parameterized test case. -class GTEST_API_ TypedTestCasePState { - public: - TypedTestCasePState() : registered_(false) {} +class GTEST_API_ TypedTestCasePState +{ +public: + TypedTestCasePState() + : registered_(false) + { + } // Adds the given test name to defined_test_names_ and return true // if the test case hasn't been registered; otherwise aborts the // program. - bool AddTestName(const char* file, int line, const char* case_name, - const char* test_name) { + bool AddTestName(const char* file, int line, const char* case_name, const char* test_name) + { if (registered_) { - fprintf(stderr, "%s Test %s must be defined before " + fprintf(stderr, + "%s Test %s must be defined before " "REGISTER_TYPED_TEST_CASE_P(%s, ...).\n", - FormatFileLocation(file, line).c_str(), test_name, case_name); + FormatFileLocation(file, line).c_str(), + test_name, + case_name); fflush(stderr); posix::Abort(); } @@ -7489,28 +7605,30 @@ class GTEST_API_ TypedTestCasePState { // Verifies that registered_tests match the test names in // defined_test_names_; returns registered_tests if successful, or // aborts the program otherwise. - const char* VerifyRegisteredTestNames( - const char* file, int line, const char* registered_tests); + const char* VerifyRegisteredTestNames(const char* file, int line, const char* registered_tests); - private: +private: bool registered_; ::std::set<const char*> defined_test_names_; }; // Skips to the first non-space char after the first comma in 'str'; // returns NULL if no comma is found in 'str'. -inline const char* SkipComma(const char* str) { +inline const char* SkipComma(const char* str) +{ const char* comma = strchr(str, ','); if (comma == NULL) { return NULL; } - while (IsSpace(*(++comma))) {} + while (IsSpace(*(++comma))) { + } return comma; } // Returns the prefix of 'str' before the first comma in it; returns // the entire string if it contains no comma. -inline std::string GetPrefixUntilComma(const char* str) { +inline std::string GetPrefixUntilComma(const char* str) +{ const char* comma = strchr(str, ','); return comma == NULL ? str : std::string(str, comma); } @@ -7523,14 +7641,15 @@ inline std::string GetPrefixUntilComma(const char* str) { // Implementation note: The GTEST_TEMPLATE_ macro declares a template // template parameter. It's defined in gtest-type-util.h. template <GTEST_TEMPLATE_ Fixture, class TestSel, typename Types> -class TypeParameterizedTest { - public: +class TypeParameterizedTest +{ +public: // 'index' is the index of the test in the type list 'Types' // specified in INSTANTIATE_TYPED_TEST_CASE_P(Prefix, TestCase, // Types). Valid values for 'index' are [0, N - 1] where N is the // length of Types. - static bool Register(const char* prefix, const char* case_name, - const char* test_names, int index) { + static bool Register(const char* prefix, const char* case_name, const char* test_names, int index) + { typedef typename Types::Head Type; typedef Fixture<Type> FixtureClass; typedef typename GTEST_BIND_(TestSel, Type) TestClass; @@ -7538,28 +7657,28 @@ class TypeParameterizedTest { // First, registers the first type-parameterized test in the type // list. MakeAndRegisterTestInfo( - (std::string(prefix) + (prefix[0] == '\0' ? "" : "/") + case_name + "/" - + StreamableToString(index)).c_str(), + (std::string(prefix) + (prefix[0] == '\0' ? "" : "/") + case_name + "/" + StreamableToString(index)).c_str(), GetPrefixUntilComma(test_names).c_str(), GetTypeName<Type>().c_str(), - NULL, // No value parameter. + NULL, // No value parameter. GetTypeId<FixtureClass>(), TestClass::SetUpTestCase, TestClass::TearDownTestCase, new TestFactoryImpl<TestClass>); // Next, recurses (at compile time) with the tail of the type list. - return TypeParameterizedTest<Fixture, TestSel, typename Types::Tail> - ::Register(prefix, case_name, test_names, index + 1); + return TypeParameterizedTest<Fixture, TestSel, typename Types::Tail>::Register( + prefix, case_name, test_names, index + 1); } }; // The base case for the compile time recursion. template <GTEST_TEMPLATE_ Fixture, class TestSel> -class TypeParameterizedTest<Fixture, TestSel, Types0> { - public: - static bool Register(const char* /*prefix*/, const char* /*case_name*/, - const char* /*test_names*/, int /*index*/) { +class TypeParameterizedTest<Fixture, TestSel, Types0> +{ +public: + static bool Register(const char* /*prefix*/, const char* /*case_name*/, const char* /*test_names*/, int /*index*/) + { return true; } }; @@ -7569,33 +7688,34 @@ class TypeParameterizedTest<Fixture, TestSel, Types0> { // Test. The return value is insignificant - we just need to return // something such that we can call this function in a namespace scope. template <GTEST_TEMPLATE_ Fixture, typename Tests, typename Types> -class TypeParameterizedTestCase { - public: - static bool Register(const char* prefix, const char* case_name, - const char* test_names) { +class TypeParameterizedTestCase +{ +public: + static bool Register(const char* prefix, const char* case_name, const char* test_names) + { typedef typename Tests::Head Head; // First, register the first test in 'Test' for each type in 'Types'. - TypeParameterizedTest<Fixture, Head, Types>::Register( - prefix, case_name, test_names, 0); + TypeParameterizedTest<Fixture, Head, Types>::Register(prefix, case_name, test_names, 0); // Next, recurses (at compile time) with the tail of the test list. - return TypeParameterizedTestCase<Fixture, typename Tests::Tail, Types> - ::Register(prefix, case_name, SkipComma(test_names)); + return TypeParameterizedTestCase<Fixture, typename Tests::Tail, Types>::Register( + prefix, case_name, SkipComma(test_names)); } }; // The base case for the compile time recursion. template <GTEST_TEMPLATE_ Fixture, typename Types> -class TypeParameterizedTestCase<Fixture, Templates0, Types> { - public: - static bool Register(const char* /*prefix*/, const char* /*case_name*/, - const char* /*test_names*/) { +class TypeParameterizedTestCase<Fixture, Templates0, Types> +{ +public: + static bool Register(const char* /*prefix*/, const char* /*case_name*/, const char* /*test_names*/) + { return true; } }; -#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P +#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P // Returns the current OS stack trace as an std::string. // @@ -7607,8 +7727,7 @@ class TypeParameterizedTestCase<Fixture, Templates0, Types> { // For example, if Foo() calls Bar(), which in turn calls // GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in // the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't. -GTEST_API_ std::string GetCurrentOsStackTraceExceptTop( - UnitTest* unit_test, int skip_count); +GTEST_API_ std::string GetCurrentOsStackTraceExceptTop(UnitTest* unit_test, int skip_count); // Helpers for suppressing warnings on unreachable code or constant // condition. @@ -7617,14 +7736,24 @@ GTEST_API_ std::string GetCurrentOsStackTraceExceptTop( GTEST_API_ bool AlwaysTrue(); // Always returns false. -inline bool AlwaysFalse() { return !AlwaysTrue(); } +inline bool AlwaysFalse() +{ + return !AlwaysTrue(); +} // Helper for suppressing false warning from Clang on a const char* // variable declared in a conditional expression always being NULL in // the else branch. -struct GTEST_API_ ConstCharPtr { - ConstCharPtr(const char* str) : value(str) {} - operator bool() const { return true; } +struct GTEST_API_ ConstCharPtr +{ + ConstCharPtr(const char* str) + : value(str) + { + } + operator bool() const + { + return true; + } const char* value; }; @@ -7633,19 +7762,26 @@ struct GTEST_API_ ConstCharPtr { // doesn't use global state (and therefore can't interfere with user // code). Unlike rand_r(), it's portable. An LCG isn't very random, // but it's good enough for our purposes. -class GTEST_API_ Random { - public: +class GTEST_API_ Random +{ +public: static const UInt32 kMaxRange = 1u << 31; - explicit Random(UInt32 seed) : state_(seed) {} + explicit Random(UInt32 seed) + : state_(seed) + { + } - void Reseed(UInt32 seed) { state_ = seed; } + void Reseed(UInt32 seed) + { + state_ = seed; + } // Generates a random number from [0, range). Crashes if 'range' is // 0 or greater than kMaxRange. UInt32 Generate(UInt32 range); - private: +private: UInt32 state_; GTEST_DISALLOW_COPY_AND_ASSIGN_(Random); }; @@ -7656,35 +7792,48 @@ template <typename T1, typename T2> struct CompileAssertTypesEqual; template <typename T> -struct CompileAssertTypesEqual<T, T> { +struct CompileAssertTypesEqual<T, T> +{ }; // Removes the reference from a type if it is a reference type, // otherwise leaves it unchanged. This is the same as // tr1::remove_reference, which is not widely available yet. template <typename T> -struct RemoveReference { typedef T type; }; // NOLINT +struct RemoveReference +{ + typedef T type; +}; // NOLINT template <typename T> -struct RemoveReference<T&> { typedef T type; }; // NOLINT +struct RemoveReference<T&> +{ + typedef T type; +}; // NOLINT // A handy wrapper around RemoveReference that works when the argument // T depends on template parameters. -#define GTEST_REMOVE_REFERENCE_(T) \ - typename ::testing::internal::RemoveReference<T>::type +#define GTEST_REMOVE_REFERENCE_(T) typename ::testing::internal::RemoveReference<T>::type // Removes const from a type if it is a const type, otherwise leaves // it unchanged. This is the same as tr1::remove_const, which is not // widely available yet. template <typename T> -struct RemoveConst { typedef T type; }; // NOLINT +struct RemoveConst +{ + typedef T type; +}; // NOLINT template <typename T> -struct RemoveConst<const T> { typedef T type; }; // NOLINT +struct RemoveConst<const T> +{ + typedef T type; +}; // NOLINT // MSVC 8.0, Sun C++, and IBM XL C++ have a bug which causes the above // definition to fail to remove the const in 'const int[3]' and 'const // char[3][4]'. The following specialization works around the bug. template <typename T, size_t N> -struct RemoveConst<const T[N]> { +struct RemoveConst<const T[N]> +{ typedef typename RemoveConst<T>::type type[N]; }; @@ -7693,32 +7842,36 @@ struct RemoveConst<const T[N]> { // 'const int[3] and 'const int[3][4]'. However, it causes trouble with GCC // and thus needs to be conditionally compiled. template <typename T, size_t N> -struct RemoveConst<T[N]> { +struct RemoveConst<T[N]> +{ typedef typename RemoveConst<T>::type type[N]; }; #endif // A handy wrapper around RemoveConst that works when the argument // T depends on template parameters. -#define GTEST_REMOVE_CONST_(T) \ - typename ::testing::internal::RemoveConst<T>::type +#define GTEST_REMOVE_CONST_(T) typename ::testing::internal::RemoveConst<T>::type // Turns const U&, U&, const U, and U all into U. -#define GTEST_REMOVE_REFERENCE_AND_CONST_(T) \ - GTEST_REMOVE_CONST_(GTEST_REMOVE_REFERENCE_(T)) +#define GTEST_REMOVE_REFERENCE_AND_CONST_(T) GTEST_REMOVE_CONST_(GTEST_REMOVE_REFERENCE_(T)) // Adds reference to a type if it is not a reference type, // otherwise leaves it unchanged. This is the same as // tr1::add_reference, which is not widely available yet. template <typename T> -struct AddReference { typedef T& type; }; // NOLINT +struct AddReference +{ + typedef T& type; +}; // NOLINT template <typename T> -struct AddReference<T&> { typedef T& type; }; // NOLINT +struct AddReference<T&> +{ + typedef T& type; +}; // NOLINT // A handy wrapper around AddReference that works when the argument T // depends on template parameters. -#define GTEST_ADD_REFERENCE_(T) \ - typename ::testing::internal::AddReference<T>::type +#define GTEST_ADD_REFERENCE_(T) typename ::testing::internal::AddReference<T>::type // Adds a reference to const on top of T as necessary. For example, // it transforms @@ -7729,15 +7882,15 @@ struct AddReference<T&> { typedef T& type; }; // NOLINT // const char& ==> const char& // // The argument T must depend on some template parameters. -#define GTEST_REFERENCE_TO_CONST_(T) \ - GTEST_ADD_REFERENCE_(const GTEST_REMOVE_REFERENCE_(T)) +#define GTEST_REFERENCE_TO_CONST_(T) GTEST_ADD_REFERENCE_(const GTEST_REMOVE_REFERENCE_(T)) // ImplicitlyConvertible<From, To>::value is a compile-time bool // constant that's true iff type From can be implicitly converted to // type To. template <typename From, typename To> -class ImplicitlyConvertible { - private: +class ImplicitlyConvertible +{ +private: // We need the following helper functions only for their types. // They have no implementations. @@ -7757,30 +7910,28 @@ class ImplicitlyConvertible { // which version of Helper() is used, and hence whether x can be // implicitly converted to type To. static char Helper(To); - static char (&Helper(...))[2]; // NOLINT + static char(&Helper(...))[2]; // NOLINT // We have to put the 'public' section after the 'private' section, // or MSVC refuses to compile the code. - public: - // MSVC warns about implicitly converting from double to int for - // possible loss of data, so we need to temporarily disable the - // warning. +public: +// MSVC warns about implicitly converting from double to int for +// possible loss of data, so we need to temporarily disable the +// warning. #ifdef _MSC_VER -# pragma warning(push) // Saves the current warning state. -# pragma warning(disable:4244) // Temporarily disables warning 4244. +#pragma warning(push) // Saves the current warning state. +#pragma warning(disable : 4244) // Temporarily disables warning 4244. - static const bool value = - sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1; -# pragma warning(pop) // Restores the warning state. + static const bool value = sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1; +#pragma warning(pop) // Restores the warning state. #elif defined(__BORLANDC__) // C++Builder cannot use member overload resolution during template // instantiation. The simplest workaround is to use its C++0x type traits // functions (C++Builder 2009 and above only). static const bool value = __is_convertible(From, To); #else - static const bool value = - sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1; -#endif // _MSV_VER + static const bool value = sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1; +#endif // _MSV_VER }; template <typename From, typename To> const bool ImplicitlyConvertible<From, To>::value; @@ -7789,10 +7940,9 @@ const bool ImplicitlyConvertible<From, To>::value; // true iff T is type ProtocolMessage, proto2::Message, or a subclass // of those. template <typename T> -struct IsAProtocolMessage - : public bool_constant< - ImplicitlyConvertible<const T*, const ::ProtocolMessage*>::value || - ImplicitlyConvertible<const T*, const ::proto2::Message*>::value> { +struct IsAProtocolMessage : public bool_constant<ImplicitlyConvertible<const T*, const ::ProtocolMessage*>::value + || ImplicitlyConvertible<const T*, const ::proto2::Message*>::value> +{ }; // When the compiler sees expression IsContainerTest<C>(0), if C is an @@ -7818,22 +7968,30 @@ struct IsAProtocolMessage // IsContainerTest(...) doesn't work with Visual Age C++ and Sun C++. typedef int IsContainer; template <class C> -IsContainer IsContainerTest(int /* dummy */, - typename C::iterator* /* it */ = NULL, - typename C::const_iterator* /* const_it */ = NULL) { +IsContainer IsContainerTest(int /* dummy */, typename C::iterator* /* it */ = NULL, + typename C::const_iterator* /* const_it */ = NULL) +{ return 0; } typedef char IsNotContainer; template <class C> -IsNotContainer IsContainerTest(long /* dummy */) { return '\0'; } +IsNotContainer IsContainerTest(long /* dummy */) +{ + return '\0'; +} // EnableIf<condition>::type is void when 'Cond' is true, and // undefined when 'Cond' is false. To use SFINAE to make a function // overload only apply when a particular expression is true, add // "typename EnableIf<expression>::type* = 0" as the last parameter. -template<bool> struct EnableIf; -template<> struct EnableIf<true> { typedef void type; }; // NOLINT +template <bool> +struct EnableIf; +template <> +struct EnableIf<true> +{ + typedef void type; +}; // NOLINT // Utilities for native arrays. @@ -7846,11 +8004,15 @@ bool ArrayEq(const T* lhs, size_t size, const U* rhs); // This generic version is used when k is 0. template <typename T, typename U> -inline bool ArrayEq(const T& lhs, const U& rhs) { return lhs == rhs; } +inline bool ArrayEq(const T& lhs, const U& rhs) +{ + return lhs == rhs; +} // This overload is used when k >= 1. template <typename T, typename U, size_t N> -inline bool ArrayEq(const T(&lhs)[N], const U(&rhs)[N]) { +inline bool ArrayEq(const T(&lhs)[N], const U(&rhs)[N]) +{ return internal::ArrayEq(lhs, N, rhs); } @@ -7858,7 +8020,8 @@ inline bool ArrayEq(const T(&lhs)[N], const U(&rhs)[N]) { // the previous ArrayEq() function, arrays with different sizes would // lead to different copies of the template code. template <typename T, typename U> -bool ArrayEq(const T* lhs, size_t size, const U* rhs) { +bool ArrayEq(const T* lhs, size_t size, const U* rhs) +{ for (size_t i = 0; i != size; i++) { if (!internal::ArrayEq(lhs[i], rhs[i])) return false; @@ -7869,7 +8032,8 @@ bool ArrayEq(const T* lhs, size_t size, const U* rhs) { // Finds the first element in the iterator range [begin, end) that // equals elem. Element may be a native array type itself. template <typename Iter, typename Element> -Iter ArrayAwareFind(Iter begin, Iter end, const Element& elem) { +Iter ArrayAwareFind(Iter begin, Iter end, const Element& elem) +{ for (Iter it = begin; it != end; ++it) { if (internal::ArrayEq(*it, elem)) return it; @@ -7886,11 +8050,15 @@ void CopyArray(const T* from, size_t size, U* to); // This generic version is used when k is 0. template <typename T, typename U> -inline void CopyArray(const T& from, U* to) { *to = from; } +inline void CopyArray(const T& from, U* to) +{ + *to = from; +} // This overload is used when k >= 1. template <typename T, typename U, size_t N> -inline void CopyArray(const T(&from)[N], U(*to)[N]) { +inline void CopyArray(const T(&from)[N], U (*to)[N]) +{ internal::CopyArray(from, N, *to); } @@ -7898,7 +8066,8 @@ inline void CopyArray(const T(&from)[N], U(*to)[N]) { // the previous CopyArray() function, arrays with different sizes // would lead to different copies of the template code. template <typename T, typename U> -void CopyArray(const T* from, size_t size, U* to) { +void CopyArray(const T* from, size_t size, U* to) +{ for (size_t i = 0; i != size; i++) { internal::CopyArray(from[i], to + i); } @@ -7906,10 +8075,11 @@ void CopyArray(const T* from, size_t size, U* to) { // The relation between an NativeArray object (see below) and the // native array it represents. -enum RelationToSource { - kReference, // The NativeArray references the native array. - kCopy // The NativeArray makes a copy of the native array and - // owns the copy. +enum RelationToSource +{ + kReference, // The NativeArray references the native array. + kCopy // The NativeArray makes a copy of the native array and + // owns the copy. }; // Adapts a native array to a read-only STL-style container. Instead @@ -7921,45 +8091,58 @@ enum RelationToSource { // this requirement. Element can be an array type itself (hence // multi-dimensional arrays are supported). template <typename Element> -class NativeArray { - public: +class NativeArray +{ +public: // STL-style container typedefs. typedef Element value_type; typedef Element* iterator; typedef const Element* const_iterator; // Constructs from a native array. - NativeArray(const Element* array, size_t count, RelationToSource relation) { + NativeArray(const Element* array, size_t count, RelationToSource relation) + { Init(array, count, relation); } // Copy constructor. - NativeArray(const NativeArray& rhs) { + NativeArray(const NativeArray& rhs) + { Init(rhs.array_, rhs.size_, rhs.relation_to_source_); } - ~NativeArray() { + ~NativeArray() + { // Ensures that the user doesn't instantiate NativeArray with a // const or reference type. - static_cast<void>(StaticAssertTypeEqHelper<Element, - GTEST_REMOVE_REFERENCE_AND_CONST_(Element)>()); + static_cast<void>(StaticAssertTypeEqHelper<Element, GTEST_REMOVE_REFERENCE_AND_CONST_(Element)>()); if (relation_to_source_ == kCopy) delete[] array_; } // STL-style container methods. - size_t size() const { return size_; } - const_iterator begin() const { return array_; } - const_iterator end() const { return array_ + size_; } - bool operator==(const NativeArray& rhs) const { - return size() == rhs.size() && - ArrayEq(begin(), size(), rhs.begin()); + size_t size() const + { + return size_; + } + const_iterator begin() const + { + return array_; + } + const_iterator end() const + { + return array_ + size_; + } + bool operator==(const NativeArray& rhs) const + { + return size() == rhs.size() && ArrayEq(begin(), size(), rhs.begin()); } - private: +private: // Initializes this object; makes a copy of the input array if // 'relation' is kCopy. - void Init(const Element* array, size_t a_size, RelationToSource relation) { + void Init(const Element* array, size_t a_size, RelationToSource relation) + { if (relation == kReference) { array_ = array; } else { @@ -7967,7 +8150,7 @@ class NativeArray { CopyArray(array, a_size, copy); array_ = copy; } - size_ = a_size; + size_ = a_size; relation_to_source_ = relation; } @@ -7978,144 +8161,137 @@ class NativeArray { GTEST_DISALLOW_ASSIGN_(NativeArray); }; -} // namespace internal -} // namespace testing +} // namespace internal +} // namespace testing -#define GTEST_MESSAGE_AT_(file, line, message, result_type) \ - ::testing::internal::AssertHelper(result_type, file, line, message) \ - = ::testing::Message() +#define GTEST_MESSAGE_AT_(file, line, message, result_type) \ + ::testing::internal::AssertHelper(result_type, file, line, message) = ::testing::Message() -#define GTEST_MESSAGE_(message, result_type) \ - GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type) +#define GTEST_MESSAGE_(message, result_type) GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type) -#define GTEST_FATAL_FAILURE_(message) \ - return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure) +#define GTEST_FATAL_FAILURE_(message) return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure) -#define GTEST_NONFATAL_FAILURE_(message) \ - GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure) +#define GTEST_NONFATAL_FAILURE_(message) GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure) -#define GTEST_SUCCESS_(message) \ - GTEST_MESSAGE_(message, ::testing::TestPartResult::kSuccess) +#define GTEST_SUCCESS_(message) GTEST_MESSAGE_(message, ::testing::TestPartResult::kSuccess) // Suppresses MSVC warnings 4072 (unreachable code) for the code following // statement if it returns or throws (or doesn't return or throw in some // situations). -#define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) \ - if (::testing::internal::AlwaysTrue()) { statement; } - -#define GTEST_TEST_THROW_(statement, expected_exception, fail) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (::testing::internal::ConstCharPtr gtest_msg = "") { \ - bool gtest_caught_expected = false; \ - try { \ - GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ - } \ - catch (expected_exception const&) { \ - gtest_caught_expected = true; \ - } \ - catch (...) { \ - gtest_msg.value = \ - "Expected: " #statement " throws an exception of type " \ - #expected_exception ".\n Actual: it throws a different type."; \ - goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \ - } \ - if (!gtest_caught_expected) { \ - gtest_msg.value = \ - "Expected: " #statement " throws an exception of type " \ - #expected_exception ".\n Actual: it throws nothing."; \ - goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \ - } \ - } else \ - GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__): \ - fail(gtest_msg.value) - -#define GTEST_TEST_NO_THROW_(statement, fail) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (::testing::internal::AlwaysTrue()) { \ - try { \ - GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ - } \ - catch (...) { \ - goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \ - } \ - } else \ - GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__): \ - fail("Expected: " #statement " doesn't throw an exception.\n" \ +#define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) \ + if (::testing::internal::AlwaysTrue()) { \ + statement; \ + } + +#define GTEST_TEST_THROW_(statement, expected_exception, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::ConstCharPtr gtest_msg = "") { \ + bool gtest_caught_expected = false; \ + try { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } catch (expected_exception const&) { \ + gtest_caught_expected = true; \ + } catch (...) { \ + gtest_msg.value = "Expected: " #statement " throws an exception of type " #expected_exception \ + ".\n Actual: it throws a different type."; \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \ + } \ + if (!gtest_caught_expected) { \ + gtest_msg.value = "Expected: " #statement " throws an exception of type " #expected_exception \ + ".\n Actual: it throws nothing."; \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__) \ + : fail(gtest_msg.value) + +#define GTEST_TEST_NO_THROW_(statement, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + try { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } catch (...) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__) \ + : fail("Expected: " #statement " doesn't throw an exception.\n" \ " Actual: it throws.") -#define GTEST_TEST_ANY_THROW_(statement, fail) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (::testing::internal::AlwaysTrue()) { \ - bool gtest_caught_any = false; \ - try { \ - GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ - } \ - catch (...) { \ - gtest_caught_any = true; \ - } \ - if (!gtest_caught_any) { \ - goto GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__); \ - } \ - } else \ - GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__): \ - fail("Expected: " #statement " throws an exception.\n" \ +#define GTEST_TEST_ANY_THROW_(statement, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + bool gtest_caught_any = false; \ + try { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } catch (...) { \ + gtest_caught_any = true; \ + } \ + if (!gtest_caught_any) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__); \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__) \ + : fail("Expected: " #statement " throws an exception.\n" \ " Actual: it doesn't.") // Implements Boolean test assertions such as EXPECT_TRUE. expression can be // either a boolean expression or an AssertionResult. text is a textual // represenation of expression as it was passed into the EXPECT_TRUE. -#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (const ::testing::AssertionResult gtest_ar_ = \ - ::testing::AssertionResult(expression)) \ - ; \ - else \ - fail(::testing::internal::GetBoolAssertionFailureMessage(\ - gtest_ar_, text, #actual, #expected).c_str()) - -#define GTEST_TEST_NO_FATAL_FAILURE_(statement, fail) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (::testing::internal::AlwaysTrue()) { \ - ::testing::internal::HasNewFatalFailureHelper gtest_fatal_failure_checker; \ - GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ - if (gtest_fatal_failure_checker.has_new_fatal_failure()) { \ - goto GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__); \ - } \ - } else \ - GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__): \ - fail("Expected: " #statement " doesn't generate new fatal " \ - "failures in the current thread.\n" \ +#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (const ::testing::AssertionResult gtest_ar_ = ::testing::AssertionResult(expression)) \ + ; \ + else \ + fail(::testing::internal::GetBoolAssertionFailureMessage(gtest_ar_, text, #actual, #expected).c_str()) + +#define GTEST_TEST_NO_FATAL_FAILURE_(statement, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + ::testing::internal::HasNewFatalFailureHelper gtest_fatal_failure_checker; \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + if (gtest_fatal_failure_checker.has_new_fatal_failure()) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__); \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__) \ + : fail("Expected: " #statement " doesn't generate new fatal " \ + "failures in the current thread.\n" \ " Actual: it does.") // Expands to the name of the class that implements the given test. -#define GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ - test_case_name##_##test_name##_Test +#define GTEST_TEST_CLASS_NAME_(test_case_name, test_name) test_case_name##_##test_name##_Test // Helper macro for defining tests. -#define GTEST_TEST_(test_case_name, test_name, parent_class, parent_id)\ -class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) : public parent_class {\ - public:\ - GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {}\ - private:\ - virtual void TestBody();\ - static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_;\ - GTEST_DISALLOW_COPY_AND_ASSIGN_(\ - GTEST_TEST_CLASS_NAME_(test_case_name, test_name));\ -};\ -\ -::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_case_name, test_name)\ - ::test_info_ =\ - ::testing::internal::MakeAndRegisterTestInfo(\ - #test_case_name, #test_name, NULL, NULL, \ - (parent_id), \ - parent_class::SetUpTestCase, \ - parent_class::TearDownTestCase, \ - new ::testing::internal::TestFactoryImpl<\ - GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>);\ -void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() - -#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_ +#define GTEST_TEST_(test_case_name, test_name, parent_class, parent_id) \ + class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ + : public parent_class \ + { \ + public: \ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() \ + { \ + } \ + \ + private: \ + virtual void TestBody(); \ + static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_; \ + GTEST_DISALLOW_COPY_AND_ASSIGN_(GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \ + }; \ + \ + ::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::test_info_ = \ + ::testing::internal::MakeAndRegisterTestInfo( \ + #test_case_name, \ + #test_name, \ + NULL, \ + NULL, \ + (parent_id), \ + parent_class::SetUpTestCase, \ + parent_class::TearDownTestCase, \ + new ::testing::internal::TestFactoryImpl<GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>); \ + void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_ // Copyright 2005, Google Inc. // All rights reserved. // @@ -8204,8 +8380,8 @@ namespace internal { GTEST_DECLARE_string_(internal_run_death_test); // Names of the flags (needed for parsing Google Test flags). -const char kDeathTestStyleFlag[] = "death_test_style"; -const char kDeathTestUseFork[] = "death_test_use_fork"; +const char kDeathTestStyleFlag[] = "death_test_style"; +const char kDeathTestUseFork[] = "death_test_use_fork"; const char kInternalRunDeathTestFlag[] = "internal_run_death_test"; #if GTEST_HAS_DEATH_TEST @@ -8223,8 +8399,9 @@ const char kInternalRunDeathTestFlag[] = "internal_run_death_test"; // by wait(2) // exit code: The integer code passed to exit(3), _exit(2), or // returned from main() -class GTEST_API_ DeathTest { - public: +class GTEST_API_ DeathTest +{ +public: // Create returns false if there was an error determining the // appropriate action to take for the current death test; for example, // if the gtest_death_test_style flag is set to an invalid value. @@ -8233,17 +8410,26 @@ class GTEST_API_ DeathTest { // argument is set. If the death test should be skipped, the pointer // is set to NULL; otherwise, it is set to the address of a new concrete // DeathTest object that controls the execution of the current test. - static bool Create(const char* statement, const RE* regex, - const char* file, int line, DeathTest** test); + static bool Create(const char* statement, const RE* regex, const char* file, int line, DeathTest** test); DeathTest(); - virtual ~DeathTest() { } + virtual ~DeathTest() + { + } // A helper class that aborts a death test when it's deleted. - class ReturnSentinel { - public: - explicit ReturnSentinel(DeathTest* test) : test_(test) { } - ~ReturnSentinel() { test_->Abort(TEST_ENCOUNTERED_RETURN_STATEMENT); } - private: + class ReturnSentinel + { + public: + explicit ReturnSentinel(DeathTest* test) + : test_(test) + { + } + ~ReturnSentinel() + { + test_->Abort(TEST_ENCOUNTERED_RETURN_STATEMENT); + } + + private: DeathTest* const test_; GTEST_DISALLOW_COPY_AND_ASSIGN_(ReturnSentinel); } GTEST_ATTRIBUTE_UNUSED_; @@ -8253,10 +8439,15 @@ class GTEST_API_ DeathTest { // be executed immediately. OVERSEE means that the program should prepare // the appropriate environment for a child process to execute the death // test, then wait for it to complete. - enum TestRole { OVERSEE_TEST, EXECUTE_TEST }; + enum TestRole + { + OVERSEE_TEST, + EXECUTE_TEST + }; // An enumeration of the three reasons that a test might be aborted. - enum AbortReason { + enum AbortReason + { TEST_ENCOUNTERED_RETURN_STATEMENT, TEST_THREW_EXCEPTION, TEST_DID_NOT_DIE @@ -8286,7 +8477,7 @@ class GTEST_API_ DeathTest { static void set_last_death_test_message(const std::string& message); - private: +private: // A string containing a description of the outcome of the last death test. static std::string last_death_test_message_; @@ -8294,18 +8485,20 @@ class GTEST_API_ DeathTest { }; // Factory interface for death tests. May be mocked out for testing. -class DeathTestFactory { - public: - virtual ~DeathTestFactory() { } - virtual bool Create(const char* statement, const RE* regex, - const char* file, int line, DeathTest** test) = 0; +class DeathTestFactory +{ +public: + virtual ~DeathTestFactory() + { + } + virtual bool Create(const char* statement, const RE* regex, const char* file, int line, DeathTest** test) = 0; }; // A concrete DeathTestFactory implementation for normal use. -class DefaultDeathTestFactory : public DeathTestFactory { - public: - virtual bool Create(const char* statement, const RE* regex, - const char* file, int line, DeathTest** test); +class DefaultDeathTestFactory : public DeathTestFactory +{ +public: + virtual bool Create(const char* statement, const RE* regex, const char* file, int line, DeathTest** test); }; // Returns true if exit_status describes a process that was terminated @@ -8314,63 +8507,59 @@ GTEST_API_ bool ExitedUnsuccessfully(int exit_status); // Traps C++ exceptions escaping statement and reports them as test // failures. Note that trapping SEH exceptions is not implemented here. -# if GTEST_HAS_EXCEPTIONS -# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \ - try { \ - GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ - } catch (const ::std::exception& gtest_exception) { \ - fprintf(\ - stderr, \ - "\n%s: Caught std::exception-derived exception escaping the " \ - "death test statement. Exception message: %s\n", \ - ::testing::internal::FormatFileLocation(__FILE__, __LINE__).c_str(), \ - gtest_exception.what()); \ - fflush(stderr); \ - death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \ - } catch (...) { \ - death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \ - } - -# else -# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \ +#if GTEST_HAS_EXCEPTIONS +#define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \ + try { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } catch (const ::std::exception& gtest_exception) { \ + fprintf(stderr, \ + "\n%s: Caught std::exception-derived exception escaping the " \ + "death test statement. Exception message: %s\n", \ + ::testing::internal::FormatFileLocation(__FILE__, __LINE__).c_str(), \ + gtest_exception.what()); \ + fflush(stderr); \ + death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \ + } catch (...) { \ + death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \ + } + +#else +#define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) -# endif +#endif // This macro is for implementing ASSERT_DEATH*, EXPECT_DEATH*, // ASSERT_EXIT*, and EXPECT_EXIT*. -# define GTEST_DEATH_TEST_(statement, predicate, regex, fail) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (::testing::internal::AlwaysTrue()) { \ - const ::testing::internal::RE& gtest_regex = (regex); \ - ::testing::internal::DeathTest* gtest_dt; \ - if (!::testing::internal::DeathTest::Create(#statement, >est_regex, \ - __FILE__, __LINE__, >est_dt)) { \ - goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \ - } \ - if (gtest_dt != NULL) { \ - ::testing::internal::scoped_ptr< ::testing::internal::DeathTest> \ - gtest_dt_ptr(gtest_dt); \ - switch (gtest_dt->AssumeRole()) { \ - case ::testing::internal::DeathTest::OVERSEE_TEST: \ - if (!gtest_dt->Passed(predicate(gtest_dt->Wait()))) { \ - goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \ - } \ - break; \ - case ::testing::internal::DeathTest::EXECUTE_TEST: { \ - ::testing::internal::DeathTest::ReturnSentinel \ - gtest_sentinel(gtest_dt); \ - GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, gtest_dt); \ - gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE); \ - break; \ - } \ - default: \ - break; \ - } \ - } \ - } else \ - GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__): \ - fail(::testing::internal::DeathTest::LastMessage()) +#define GTEST_DEATH_TEST_(statement, predicate, regex, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + const ::testing::internal::RE& gtest_regex = (regex); \ + ::testing::internal::DeathTest* gtest_dt; \ + if (!::testing::internal::DeathTest::Create(#statement, >est_regex, __FILE__, __LINE__, >est_dt)) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \ + } \ + if (gtest_dt != NULL) { \ + ::testing::internal::scoped_ptr<::testing::internal::DeathTest> gtest_dt_ptr(gtest_dt); \ + switch (gtest_dt->AssumeRole()) { \ + case ::testing::internal::DeathTest::OVERSEE_TEST: \ + if (!gtest_dt->Passed(predicate(gtest_dt->Wait()))) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \ + } \ + break; \ + case ::testing::internal::DeathTest::EXECUTE_TEST: { \ + ::testing::internal::DeathTest::ReturnSentinel gtest_sentinel(gtest_dt); \ + GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, gtest_dt); \ + gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE); \ + break; \ + } \ + default: \ + break; \ + } \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__) \ + : fail(::testing::internal::DeathTest::LastMessage()) // The symbol "fail" here expands to something into which a message // can be streamed. @@ -8378,36 +8567,51 @@ GTEST_API_ bool ExitedUnsuccessfully(int exit_status); // NDEBUG mode. In this case we need the statements to be executed, the regex is // ignored, and the macro must accept a streamed message even though the message // is never printed. -# define GTEST_EXECUTE_STATEMENT_(statement, regex) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (::testing::internal::AlwaysTrue()) { \ - GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ - } else \ - ::testing::Message() +#define GTEST_EXECUTE_STATEMENT_(statement, regex) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } else \ + ::testing::Message() // A class representing the parsed contents of the // --gtest_internal_run_death_test flag, as it existed when // RUN_ALL_TESTS was called. -class InternalRunDeathTestFlag { - public: - InternalRunDeathTestFlag(const std::string& a_file, - int a_line, - int an_index, - int a_write_fd) - : file_(a_file), line_(a_line), index_(an_index), - write_fd_(a_write_fd) {} - - ~InternalRunDeathTestFlag() { +class InternalRunDeathTestFlag +{ +public: + InternalRunDeathTestFlag(const std::string& a_file, int a_line, int an_index, int a_write_fd) + : file_(a_file) + , line_(a_line) + , index_(an_index) + , write_fd_(a_write_fd) + { + } + + ~InternalRunDeathTestFlag() + { if (write_fd_ >= 0) posix::Close(write_fd_); } - const std::string& file() const { return file_; } - int line() const { return line_; } - int index() const { return index_; } - int write_fd() const { return write_fd_; } + const std::string& file() const + { + return file_; + } + int line() const + { + return line_; + } + int index() const + { + return index_; + } + int write_fd() const + { + return write_fd_; + } - private: +private: std::string file_; int line_; int index_; @@ -8421,7 +8625,7 @@ class InternalRunDeathTestFlag { // the flag is specified; otherwise returns NULL. InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag(); -#else // GTEST_HAS_DEATH_TEST +#else // GTEST_HAS_DEATH_TEST // This macro is used for implementing macros such as // EXPECT_DEATH_IF_SUPPORTED and ASSERT_DEATH_IF_SUPPORTED on systems where @@ -8455,25 +8659,24 @@ InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag(); // statement unconditionally returns or throws. The Message constructor at // the end allows the syntax of streaming additional messages into the // macro, for compilational compatibility with EXPECT_DEATH/ASSERT_DEATH. -# define GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, terminator) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (::testing::internal::AlwaysTrue()) { \ - GTEST_LOG_(WARNING) \ - << "Death tests are not supported on this platform.\n" \ - << "Statement '" #statement "' cannot be verified."; \ - } else if (::testing::internal::AlwaysFalse()) { \ - ::testing::internal::RE::PartialMatch(".*", (regex)); \ - GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ - terminator; \ - } else \ - ::testing::Message() - -#endif // GTEST_HAS_DEATH_TEST - -} // namespace internal -} // namespace testing - -#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ +#define GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, terminator) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + GTEST_LOG_(WARNING) << "Death tests are not supported on this platform.\n" \ + << "Statement '" #statement "' cannot be verified."; \ + } else if (::testing::internal::AlwaysFalse()) { \ + ::testing::internal::RE::PartialMatch(".*", (regex)); \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + terminator; \ + } else \ + ::testing::Message() + +#endif // GTEST_HAS_DEATH_TEST + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ namespace testing { @@ -8495,7 +8698,7 @@ namespace internal { // implementation of death tests. User code MUST NOT use it. GTEST_API_ bool InDeathTestChild(); -} // namespace internal +} // namespace internal // The following macros are useful for writing death tests. @@ -8600,50 +8803,50 @@ GTEST_API_ bool InDeathTestChild(); // Asserts that a given statement causes the program to exit, with an // integer exit status that satisfies predicate, and emitting error output // that matches regex. -# define ASSERT_EXIT(statement, predicate, regex) \ - GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) +#define ASSERT_EXIT(statement, predicate, regex) GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) // Like ASSERT_EXIT, but continues on to successive tests in the // test case, if any: -# define EXPECT_EXIT(statement, predicate, regex) \ - GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) +#define EXPECT_EXIT(statement, predicate, regex) GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) // Asserts that a given statement causes the program to exit, either by // explicitly exiting with a nonzero exit code or being killed by a // signal, and emitting error output that matches regex. -# define ASSERT_DEATH(statement, regex) \ - ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) +#define ASSERT_DEATH(statement, regex) ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Like ASSERT_DEATH, but continues on to successive tests in the // test case, if any: -# define EXPECT_DEATH(statement, regex) \ - EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) +#define EXPECT_DEATH(statement, regex) EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) // Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: // Tests that an exit code describes a normal exit with a given exit code. -class GTEST_API_ ExitedWithCode { - public: +class GTEST_API_ ExitedWithCode +{ +public: explicit ExitedWithCode(int exit_code); bool operator()(int exit_status) const; - private: + +private: // No implementation - assignment is unsupported. void operator=(const ExitedWithCode& other); const int exit_code_; }; -# if !GTEST_OS_WINDOWS +#if !GTEST_OS_WINDOWS // Tests that an exit code describes an exit due to termination by a // given signal. -class GTEST_API_ KilledBySignal { - public: +class GTEST_API_ KilledBySignal +{ +public: explicit KilledBySignal(int signum); bool operator()(int exit_status) const; - private: + +private: const int signum_; }; -# endif // !GTEST_OS_WINDOWS +#endif // !GTEST_OS_WINDOWS // EXPECT_DEBUG_DEATH asserts that the given statements die in debug mode. // The death testing framework causes this to have interesting semantics, @@ -8688,24 +8891,20 @@ class GTEST_API_ KilledBySignal { // EXPECT_EQ(12, DieInDebugOr12(&sideeffect)); // }, "death"); // -# ifdef NDEBUG +#ifdef NDEBUG -# define EXPECT_DEBUG_DEATH(statement, regex) \ - GTEST_EXECUTE_STATEMENT_(statement, regex) +#define EXPECT_DEBUG_DEATH(statement, regex) GTEST_EXECUTE_STATEMENT_(statement, regex) -# define ASSERT_DEBUG_DEATH(statement, regex) \ - GTEST_EXECUTE_STATEMENT_(statement, regex) +#define ASSERT_DEBUG_DEATH(statement, regex) GTEST_EXECUTE_STATEMENT_(statement, regex) -# else +#else -# define EXPECT_DEBUG_DEATH(statement, regex) \ - EXPECT_DEATH(statement, regex) +#define EXPECT_DEBUG_DEATH(statement, regex) EXPECT_DEATH(statement, regex) -# define ASSERT_DEBUG_DEATH(statement, regex) \ - ASSERT_DEATH(statement, regex) +#define ASSERT_DEBUG_DEATH(statement, regex) ASSERT_DEATH(statement, regex) -# endif // NDEBUG for EXPECT_DEBUG_DEATH -#endif // GTEST_HAS_DEATH_TEST +#endif // NDEBUG for EXPECT_DEBUG_DEATH +#endif // GTEST_HAS_DEATH_TEST // EXPECT_DEATH_IF_SUPPORTED(statement, regex) and // ASSERT_DEATH_IF_SUPPORTED(statement, regex) expand to real death tests if @@ -8713,20 +8912,16 @@ class GTEST_API_ KilledBySignal { // useful when you are combining death test assertions with normal test // assertions in one test. #if GTEST_HAS_DEATH_TEST -# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \ - EXPECT_DEATH(statement, regex) -# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \ - ASSERT_DEATH(statement, regex) +#define EXPECT_DEATH_IF_SUPPORTED(statement, regex) EXPECT_DEATH(statement, regex) +#define ASSERT_DEATH_IF_SUPPORTED(statement, regex) ASSERT_DEATH(statement, regex) #else -# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \ - GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, ) -# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \ - GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, return) +#define EXPECT_DEATH_IF_SUPPORTED(statement, regex) GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, ) +#define ASSERT_DEATH_IF_SUPPORTED(statement, regex) GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, return ) #endif -} // namespace testing +} // namespace testing -#endif // GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_ +#endif // GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_ // This file was GENERATED by command: // pump.py gtest-param-test.h.pump // DO NOT EDIT BY HAND!!! @@ -8906,11 +9101,11 @@ TEST_P(DerivedTest, DoesBlah) { EXPECT_TRUE(foo.Blah(GetParam())); } -#endif // 0 +#endif // 0 #if !GTEST_OS_SYMBIAN -# include <utility> +#include <utility> #endif // scripts/fuse_gtest.py depends on gtest's own header being #included @@ -9046,10 +9241,12 @@ GTEST_API_ GTEST_DECLARE_STATIC_MUTEX_(g_linked_ptr_mutex); // in the same circular linked list, so we need a single class type here. // // DO NOT USE THIS CLASS DIRECTLY YOURSELF. Use linked_ptr<T>. -class linked_ptr_internal { - public: +class linked_ptr_internal +{ +public: // Create a new circle that includes only this instance. - void join_new() { + void join_new() + { next_ = this; } @@ -9065,58 +9262,76 @@ class linked_ptr_internal { // framework. // Join an existing circle. - void join(linked_ptr_internal const* ptr) - GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) { + void join(linked_ptr_internal const* ptr) GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) + { MutexLock lock(&g_linked_ptr_mutex); linked_ptr_internal const* p = ptr; - while (p->next_ != ptr) p = p->next_; + while (p->next_ != ptr) + p = p->next_; p->next_ = this; - next_ = ptr; + next_ = ptr; } // Leave whatever circle we're part of. Returns true if we were the // last member of the circle. Once this is done, you can join() another. - bool depart() - GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) { + bool depart() GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) + { MutexLock lock(&g_linked_ptr_mutex); - if (next_ == this) return true; + if (next_ == this) + return true; linked_ptr_internal const* p = next_; - while (p->next_ != this) p = p->next_; + while (p->next_ != this) + p = p->next_; p->next_ = next_; return false; } - private: +private: mutable linked_ptr_internal const* next_; }; template <typename T> -class linked_ptr { - public: +class linked_ptr +{ +public: typedef T element_type; // Take over ownership of a raw pointer. This should happen as soon as // possible after the object is created. - explicit linked_ptr(T* ptr = NULL) { capture(ptr); } - ~linked_ptr() { depart(); } + explicit linked_ptr(T* ptr = NULL) + { + capture(ptr); + } + ~linked_ptr() + { + depart(); + } // Copy an existing linked_ptr<>, adding ourselves to the list of references. - template <typename U> linked_ptr(linked_ptr<U> const& ptr) { copy(&ptr); } - linked_ptr(linked_ptr const& ptr) { // NOLINT + template <typename U> + linked_ptr(linked_ptr<U> const& ptr) + { + copy(&ptr); + } + linked_ptr(linked_ptr const& ptr) + { // NOLINT assert(&ptr != this); copy(&ptr); } // Assignment releases the old value and acquires the new. - template <typename U> linked_ptr& operator=(linked_ptr<U> const& ptr) { + template <typename U> + linked_ptr& operator=(linked_ptr<U> const& ptr) + { depart(); copy(&ptr); return *this; } - linked_ptr& operator=(linked_ptr const& ptr) { + linked_ptr& operator=(linked_ptr const& ptr) + { if (&ptr != this) { depart(); copy(&ptr); @@ -9125,42 +9340,65 @@ class linked_ptr { } // Smart pointer members. - void reset(T* ptr = NULL) { + void reset(T* ptr = NULL) + { depart(); capture(ptr); } - T* get() const { return value_; } - T* operator->() const { return value_; } - T& operator*() const { return *value_; } + T* get() const + { + return value_; + } + T* operator->() const + { + return value_; + } + T& operator*() const + { + return *value_; + } - bool operator==(T* p) const { return value_ == p; } - bool operator!=(T* p) const { return value_ != p; } + bool operator==(T* p) const + { + return value_ == p; + } + bool operator!=(T* p) const + { + return value_ != p; + } template <typename U> - bool operator==(linked_ptr<U> const& ptr) const { + bool operator==(linked_ptr<U> const& ptr) const + { return value_ == ptr.get(); } template <typename U> - bool operator!=(linked_ptr<U> const& ptr) const { + bool operator!=(linked_ptr<U> const& ptr) const + { return value_ != ptr.get(); } - private: +private: template <typename U> friend class linked_ptr; T* value_; linked_ptr_internal link_; - void depart() { - if (link_.depart()) delete value_; + void depart() + { + if (link_.depart()) + delete value_; } - void capture(T* ptr) { + void capture(T* ptr) + { value_ = ptr; link_.join_new(); } - template <typename U> void copy(linked_ptr<U> const* ptr) { + template <typename U> + void copy(linked_ptr<U> const* ptr) + { value_ = ptr->get(); if (value_) link_.join(&ptr->link_); @@ -9169,13 +9407,15 @@ class linked_ptr { } }; -template<typename T> inline -bool operator==(T* ptr, const linked_ptr<T>& x) { +template <typename T> +inline bool operator==(T* ptr, const linked_ptr<T>& x) +{ return ptr == x.get(); } -template<typename T> inline -bool operator!=(T* ptr, const linked_ptr<T>& x) { +template <typename T> +inline bool operator!=(T* ptr, const linked_ptr<T>& x) +{ return ptr != x.get(); } @@ -9183,14 +9423,15 @@ bool operator!=(T* ptr, const linked_ptr<T>& x) { // Doing e.g. make_linked_ptr(new FooBarBaz<type>(arg)) is a shorter notation // for linked_ptr<FooBarBaz<type> >(new FooBarBaz<type>(arg)) template <typename T> -linked_ptr<T> make_linked_ptr(T* ptr) { +linked_ptr<T> make_linked_ptr(T* ptr) +{ return linked_ptr<T>(ptr); } -} // namespace internal -} // namespace testing +} // namespace internal +} // namespace testing -#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_ +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_ // Copyright 2007, Google Inc. // All rights reserved. // @@ -9288,7 +9529,7 @@ linked_ptr<T> make_linked_ptr(T* ptr) { #ifndef GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ #define GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ -#include <ostream> // NOLINT +#include <ostream> // NOLINT #include <sstream> #include <string> #include <utility> @@ -9302,17 +9543,16 @@ namespace internal2 { // Prints the given number of bytes in the given object to the given // ostream. -GTEST_API_ void PrintBytesInObjectTo(const unsigned char* obj_bytes, - size_t count, - ::std::ostream* os); +GTEST_API_ void PrintBytesInObjectTo(const unsigned char* obj_bytes, size_t count, ::std::ostream* os); // For selecting which printer to use when a given type has neither << // nor PrintTo(). -enum TypeKind { - kProtobuf, // a protobuf type - kConvertibleToInteger, // a type implicitly convertible to BiggestInt - // (e.g. a named or unnamed enum type) - kOtherType // anything else +enum TypeKind +{ + kProtobuf, // a protobuf type + kConvertibleToInteger, // a type implicitly convertible to BiggestInt + // (e.g. a named or unnamed enum type) + kOtherType // anything else }; // TypeWithoutFormatter<T, kTypeKind>::PrintValue(value, os) is called @@ -9320,12 +9560,13 @@ enum TypeKind { // operator<< nor PrintTo() is defined for T, where kTypeKind is the // "kind" of T as defined by enum TypeKind. template <typename T, TypeKind kTypeKind> -class TypeWithoutFormatter { - public: +class TypeWithoutFormatter +{ +public: // This default version is called when kTypeKind is kOtherType. - static void PrintValue(const T& value, ::std::ostream* os) { - PrintBytesInObjectTo(reinterpret_cast<const unsigned char*>(&value), - sizeof(value), os); + static void PrintValue(const T& value, ::std::ostream* os) + { + PrintBytesInObjectTo(reinterpret_cast<const unsigned char*>(&value), sizeof(value), os); } }; @@ -9335,20 +9576,22 @@ class TypeWithoutFormatter { const size_t kProtobufOneLinerMaxLength = 50; template <typename T> -class TypeWithoutFormatter<T, kProtobuf> { - public: - static void PrintValue(const T& value, ::std::ostream* os) { +class TypeWithoutFormatter<T, kProtobuf> +{ +public: + static void PrintValue(const T& value, ::std::ostream* os) + { const ::testing::internal::string short_str = value.ShortDebugString(); const ::testing::internal::string pretty_str = - short_str.length() <= kProtobufOneLinerMaxLength ? - short_str : ("\n" + value.DebugString()); + short_str.length() <= kProtobufOneLinerMaxLength ? short_str : ("\n" + value.DebugString()); *os << ("<" + pretty_str + ">"); } }; template <typename T> -class TypeWithoutFormatter<T, kConvertibleToInteger> { - public: +class TypeWithoutFormatter<T, kConvertibleToInteger> +{ +public: // Since T has no << operator or PrintTo() but can be implicitly // converted to BiggestInt, we print it as a BiggestInt. // @@ -9356,7 +9599,8 @@ class TypeWithoutFormatter<T, kConvertibleToInteger> { // case printing it as an integer is the desired behavior. In case // T is not an enum, printing it as an integer is the best we can do // given that it has no user-defined printer. - static void PrintValue(const T& value, ::std::ostream* os) { + static void PrintValue(const T& value, ::std::ostream* os) + { const internal::BiggestInt kBigInt = value; *os << kBigInt; } @@ -9387,17 +9631,19 @@ class TypeWithoutFormatter<T, kConvertibleToInteger> { // operator<<(std::basic_stream<Char, CharTraits>, const Foo&) is more // specific. template <typename Char, typename CharTraits, typename T> -::std::basic_ostream<Char, CharTraits>& operator<<( - ::std::basic_ostream<Char, CharTraits>& os, const T& x) { +::std::basic_ostream<Char, CharTraits>& operator<<(::std::basic_ostream<Char, CharTraits>& os, const T& x) +{ TypeWithoutFormatter<T, - (internal::IsAProtocolMessage<T>::value ? kProtobuf : - internal::ImplicitlyConvertible<const T&, internal::BiggestInt>::value ? - kConvertibleToInteger : kOtherType)>::PrintValue(x, &os); + (internal::IsAProtocolMessage<T>::value + ? kProtobuf + : internal::ImplicitlyConvertible<const T&, internal::BiggestInt>::value + ? kConvertibleToInteger + : kOtherType)>::PrintValue(x, &os); return os; } -} // namespace internal2 -} // namespace testing +} // namespace internal2 +} // namespace testing // This namespace MUST NOT BE NESTED IN ::testing, or the name look-up // magic needed for implementing UniversalPrinter won't work. @@ -9406,7 +9652,8 @@ namespace testing_internal { // Used to print a value that is not an STL-style container when the // user doesn't define PrintTo() for it. template <typename T> -void DefaultPrintNonContainerTo(const T& value, ::std::ostream* os) { +void DefaultPrintNonContainerTo(const T& value, ::std::ostream* os) +{ // With the following statement, during unqualified name lookup, // testing::internal2::operator<< appears as if it was declared in // the nearest enclosing namespace that contains both @@ -9418,7 +9665,7 @@ void DefaultPrintNonContainerTo(const T& value, ::std::ostream* os) { // // We cannot write 'using ::testing::internal2::operator<<;', which // gcc 3.3 fails to compile due to a compiler bug. - using namespace ::testing::internal2; // NOLINT + using namespace ::testing::internal2; // NOLINT // Assuming T is defined in namespace foo, in the next statement, // the compiler will consider all of: @@ -9436,7 +9683,7 @@ void DefaultPrintNonContainerTo(const T& value, ::std::ostream* os) { *os << value; } -} // namespace testing_internal +} // namespace testing_internal namespace testing { namespace internal { @@ -9457,17 +9704,15 @@ void UniversalPrint(const T& value, ::std::ostream* os); // Used to print an STL-style container when the user doesn't define // a PrintTo() for it. template <typename C> -void DefaultPrintTo(IsContainer /* dummy */, - false_type /* is not a pointer */, - const C& container, ::std::ostream* os) { - const size_t kMaxCount = 32; // The maximum number of elements to print. +void DefaultPrintTo(IsContainer /* dummy */, false_type /* is not a pointer */, const C& container, ::std::ostream* os) +{ + const size_t kMaxCount = 32; // The maximum number of elements to print. *os << '{'; size_t count = 0; - for (typename C::const_iterator it = container.begin(); - it != container.end(); ++it, ++count) { + for (typename C::const_iterator it = container.begin(); it != container.end(); ++it, ++count) { if (count > 0) { *os << ','; - if (count == kMaxCount) { // Enough has been printed. + if (count == kMaxCount) { // Enough has been printed. *os << " ..."; break; } @@ -9491,9 +9736,8 @@ void DefaultPrintTo(IsContainer /* dummy */, // implementation-defined. Therefore they will be printed as raw // bytes.) template <typename T> -void DefaultPrintTo(IsNotContainer /* dummy */, - true_type /* is a pointer */, - T* p, ::std::ostream* os) { +void DefaultPrintTo(IsNotContainer /* dummy */, true_type /* is a pointer */, T* p, ::std::ostream* os) +{ if (p == NULL) { *os << "NULL"; } else { @@ -9514,8 +9758,7 @@ void DefaultPrintTo(IsNotContainer /* dummy */, // even using reinterpret_cast, as earlier versions of gcc // (e.g. 3.4.5) cannot compile the cast when p is a function // pointer. Casting to UInt64 first solves the problem. - *os << reinterpret_cast<const void*>( - reinterpret_cast<internal::UInt64>(p)); + *os << reinterpret_cast<const void*>(reinterpret_cast<internal::UInt64>(p)); } } } @@ -9523,9 +9766,8 @@ void DefaultPrintTo(IsNotContainer /* dummy */, // Used to print a non-container, non-pointer value when the user // doesn't define PrintTo() for it. template <typename T> -void DefaultPrintTo(IsNotContainer /* dummy */, - false_type /* is not a pointer */, - const T& value, ::std::ostream* os) { +void DefaultPrintTo(IsNotContainer /* dummy */, false_type /* is not a pointer */, const T& value, ::std::ostream* os) +{ ::testing_internal::DefaultPrintNonContainerTo(value, os); } @@ -9541,7 +9783,8 @@ void DefaultPrintTo(IsNotContainer /* dummy */, // or there is already a << operator but it doesn't do what the user // wants). template <typename T> -void PrintTo(const T& value, ::std::ostream* os) { +void PrintTo(const T& value, ::std::ostream* os) +{ // DefaultPrintTo() is overloaded. The type of its first two // arguments determine which version will be picked. If T is an // STL-style container, the version for container will be called; if @@ -9574,7 +9817,8 @@ void PrintTo(const T& value, ::std::ostream* os) { // Overloads for various char types. GTEST_API_ void PrintTo(unsigned char c, ::std::ostream* os); GTEST_API_ void PrintTo(signed char c, ::std::ostream* os); -inline void PrintTo(char c, ::std::ostream* os) { +inline void PrintTo(char c, ::std::ostream* os) +{ // When printing a plain char, we always treat it as unsigned. This // way, the output won't be affected by whether the compiler thinks // char is signed or not. @@ -9582,7 +9826,8 @@ inline void PrintTo(char c, ::std::ostream* os) { } // Overloads for other simple built-in types. -inline void PrintTo(bool x, ::std::ostream* os) { +inline void PrintTo(bool x, ::std::ostream* os) +{ *os << (x ? "true" : "false"); } @@ -9597,22 +9842,27 @@ GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); // Overloads for C strings. GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); -inline void PrintTo(char* s, ::std::ostream* os) { +inline void PrintTo(char* s, ::std::ostream* os) +{ PrintTo(ImplicitCast_<const char*>(s), os); } // signed/unsigned char is often used for representing binary data, so // we print pointers to it as void* to be safe. -inline void PrintTo(const signed char* s, ::std::ostream* os) { +inline void PrintTo(const signed char* s, ::std::ostream* os) +{ PrintTo(ImplicitCast_<const void*>(s), os); } -inline void PrintTo(signed char* s, ::std::ostream* os) { +inline void PrintTo(signed char* s, ::std::ostream* os) +{ PrintTo(ImplicitCast_<const void*>(s), os); } -inline void PrintTo(const unsigned char* s, ::std::ostream* os) { +inline void PrintTo(const unsigned char* s, ::std::ostream* os) +{ PrintTo(ImplicitCast_<const void*>(s), os); } -inline void PrintTo(unsigned char* s, ::std::ostream* os) { +inline void PrintTo(unsigned char* s, ::std::ostream* os) +{ PrintTo(ImplicitCast_<const void*>(s), os); } @@ -9624,7 +9874,8 @@ inline void PrintTo(unsigned char* s, ::std::ostream* os) { #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) // Overloads for wide C strings GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os); -inline void PrintTo(wchar_t* s, ::std::ostream* os) { +inline void PrintTo(wchar_t* s, ::std::ostream* os) +{ PrintTo(ImplicitCast_<const wchar_t*>(s), os); } #endif @@ -9635,7 +9886,8 @@ inline void PrintTo(wchar_t* s, ::std::ostream* os) { // Prints the given number of elements in an array, without printing // the curly braces. template <typename T> -void PrintRawArrayTo(const T a[], size_t count, ::std::ostream* os) { +void PrintRawArrayTo(const T a[], size_t count, ::std::ostream* os) +{ UniversalPrint(a[0], os); for (size_t i = 1; i != count; i++) { *os << ", "; @@ -9645,31 +9897,35 @@ void PrintRawArrayTo(const T a[], size_t count, ::std::ostream* os) { // Overloads for ::string and ::std::string. #if GTEST_HAS_GLOBAL_STRING -GTEST_API_ void PrintStringTo(const ::string&s, ::std::ostream* os); -inline void PrintTo(const ::string& s, ::std::ostream* os) { +GTEST_API_ void PrintStringTo(const ::string& s, ::std::ostream* os); +inline void PrintTo(const ::string& s, ::std::ostream* os) +{ PrintStringTo(s, os); } -#endif // GTEST_HAS_GLOBAL_STRING +#endif // GTEST_HAS_GLOBAL_STRING -GTEST_API_ void PrintStringTo(const ::std::string&s, ::std::ostream* os); -inline void PrintTo(const ::std::string& s, ::std::ostream* os) { +GTEST_API_ void PrintStringTo(const ::std::string& s, ::std::ostream* os); +inline void PrintTo(const ::std::string& s, ::std::ostream* os) +{ PrintStringTo(s, os); } // Overloads for ::wstring and ::std::wstring. #if GTEST_HAS_GLOBAL_WSTRING -GTEST_API_ void PrintWideStringTo(const ::wstring&s, ::std::ostream* os); -inline void PrintTo(const ::wstring& s, ::std::ostream* os) { +GTEST_API_ void PrintWideStringTo(const ::wstring& s, ::std::ostream* os); +inline void PrintTo(const ::wstring& s, ::std::ostream* os) +{ PrintWideStringTo(s, os); } -#endif // GTEST_HAS_GLOBAL_WSTRING +#endif // GTEST_HAS_GLOBAL_WSTRING #if GTEST_HAS_STD_WSTRING -GTEST_API_ void PrintWideStringTo(const ::std::wstring&s, ::std::ostream* os); -inline void PrintTo(const ::std::wstring& s, ::std::ostream* os) { +GTEST_API_ void PrintWideStringTo(const ::std::wstring& s, ::std::ostream* os); +inline void PrintTo(const ::std::wstring& s, ::std::ostream* os) +{ PrintWideStringTo(s, os); } -#endif // GTEST_HAS_STD_WSTRING +#endif // GTEST_HAS_STD_WSTRING #if GTEST_HAS_TR1_TUPLE // Overload for ::std::tr1::tuple. Needed for printing function arguments, @@ -9685,76 +9941,78 @@ void PrintTupleTo(const T& t, ::std::ostream* os); // regardless of whether tr1::tuple is implemented using the // non-standard variadic template feature or not. -inline void PrintTo(const ::std::tr1::tuple<>& t, ::std::ostream* os) { +inline void PrintTo(const ::std::tr1::tuple<>& t, ::std::ostream* os) +{ PrintTupleTo(t, os); } template <typename T1> -void PrintTo(const ::std::tr1::tuple<T1>& t, ::std::ostream* os) { +void PrintTo(const ::std::tr1::tuple<T1>& t, ::std::ostream* os) +{ PrintTupleTo(t, os); } template <typename T1, typename T2> -void PrintTo(const ::std::tr1::tuple<T1, T2>& t, ::std::ostream* os) { +void PrintTo(const ::std::tr1::tuple<T1, T2>& t, ::std::ostream* os) +{ PrintTupleTo(t, os); } template <typename T1, typename T2, typename T3> -void PrintTo(const ::std::tr1::tuple<T1, T2, T3>& t, ::std::ostream* os) { +void PrintTo(const ::std::tr1::tuple<T1, T2, T3>& t, ::std::ostream* os) +{ PrintTupleTo(t, os); } template <typename T1, typename T2, typename T3, typename T4> -void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4>& t, ::std::ostream* os) { +void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4>& t, ::std::ostream* os) +{ PrintTupleTo(t, os); } template <typename T1, typename T2, typename T3, typename T4, typename T5> -void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5>& t, - ::std::ostream* os) { +void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5>& t, ::std::ostream* os) +{ PrintTupleTo(t, os); } -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6> -void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6>& t, - ::std::ostream* os) { +template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6> +void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6>& t, ::std::ostream* os) +{ PrintTupleTo(t, os); } -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7> -void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7>& t, - ::std::ostream* os) { +template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7> +void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7>& t, ::std::ostream* os) +{ PrintTupleTo(t, os); } -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8> -void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8>& t, - ::std::ostream* os) { +template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8> +void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8>& t, ::std::ostream* os) +{ PrintTupleTo(t, os); } -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9> -void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>& t, - ::std::ostream* os) { +template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, + typename T9> +void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>& t, ::std::ostream* os) +{ PrintTupleTo(t, os); } -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10> -void PrintTo( - const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>& t, - ::std::ostream* os) { +template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, + typename T9, typename T10> +void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>& t, ::std::ostream* os) +{ PrintTupleTo(t, os); } -#endif // GTEST_HAS_TR1_TUPLE +#endif // GTEST_HAS_TR1_TUPLE // Overload for std::pair. template <typename T1, typename T2> -void PrintTo(const ::std::pair<T1, T2>& value, ::std::ostream* os) { +void PrintTo(const ::std::pair<T1, T2>& value, ::std::ostream* os) +{ *os << '('; // We cannot use UniversalPrint(value.first, os) here, as T1 may be // a reference type. The same for printing value.second. @@ -9767,19 +10025,21 @@ void PrintTo(const ::std::pair<T1, T2>& value, ::std::ostream* os) { // Implements printing a non-reference type T by letting the compiler // pick the right overload of PrintTo() for T. template <typename T> -class UniversalPrinter { - public: - // MSVC warns about adding const to a function type, so we want to - // disable the warning. +class UniversalPrinter +{ +public: +// MSVC warns about adding const to a function type, so we want to +// disable the warning. #ifdef _MSC_VER -# pragma warning(push) // Saves the current warning state. -# pragma warning(disable:4180) // Temporarily disables warning 4180. -#endif // _MSC_VER +#pragma warning(push) // Saves the current warning state. +#pragma warning(disable : 4180) // Temporarily disables warning 4180. +#endif // _MSC_VER // Note: we deliberately don't call this PrintTo(), as that name // conflicts with ::testing::internal::PrintTo in the body of the // function. - static void Print(const T& value, ::std::ostream* os) { + static void Print(const T& value, ::std::ostream* os) + { // By default, ::testing::internal::PrintTo() is used for printing // the value. // @@ -9792,14 +10052,15 @@ class UniversalPrinter { } #ifdef _MSC_VER -# pragma warning(pop) // Restores the warning state. -#endif // _MSC_VER +#pragma warning(pop) // Restores the warning state. +#endif // _MSC_VER }; // UniversalPrintArray(begin, len, os) prints an array of 'len' // elements, starting at address 'begin'. template <typename T> -void UniversalPrintArray(const T* begin, size_t len, ::std::ostream* os) { +void UniversalPrintArray(const T* begin, size_t len, ::std::ostream* os) +{ if (len == 0) { *os << "{}"; } else { @@ -9821,36 +10082,38 @@ void UniversalPrintArray(const T* begin, size_t len, ::std::ostream* os) { } } // This overload prints a (const) char array compactly. -GTEST_API_ void UniversalPrintArray( - const char* begin, size_t len, ::std::ostream* os); +GTEST_API_ void UniversalPrintArray(const char* begin, size_t len, ::std::ostream* os); // This overload prints a (const) wchar_t array compactly. -GTEST_API_ void UniversalPrintArray( - const wchar_t* begin, size_t len, ::std::ostream* os); +GTEST_API_ void UniversalPrintArray(const wchar_t* begin, size_t len, ::std::ostream* os); // Implements printing an array type T[N]. template <typename T, size_t N> -class UniversalPrinter<T[N]> { - public: +class UniversalPrinter<T[N]> +{ +public: // Prints the given array, omitting some elements when there are too // many. - static void Print(const T (&a)[N], ::std::ostream* os) { + static void Print(const T(&a)[N], ::std::ostream* os) + { UniversalPrintArray(a, N, os); } }; // Implements printing a reference type T&. template <typename T> -class UniversalPrinter<T&> { - public: - // MSVC warns about adding const to a function type, so we want to - // disable the warning. +class UniversalPrinter<T&> +{ +public: +// MSVC warns about adding const to a function type, so we want to +// disable the warning. #ifdef _MSC_VER -# pragma warning(push) // Saves the current warning state. -# pragma warning(disable:4180) // Temporarily disables warning 4180. -#endif // _MSC_VER +#pragma warning(push) // Saves the current warning state. +#pragma warning(disable : 4180) // Temporarily disables warning 4180. +#endif // _MSC_VER - static void Print(const T& value, ::std::ostream* os) { + static void Print(const T& value, ::std::ostream* os) + { // Prints the address of the value. We use reinterpret_cast here // as static_cast doesn't compile when T is a function type. *os << "@" << reinterpret_cast<const void*>(&value) << " "; @@ -9860,8 +10123,8 @@ class UniversalPrinter<T&> { } #ifdef _MSC_VER -# pragma warning(pop) // Restores the warning state. -#endif // _MSC_VER +#pragma warning(pop) // Restores the warning state. +#endif // _MSC_VER }; // Prints a value tersely: for a reference type, the referenced value @@ -9869,30 +10132,38 @@ class UniversalPrinter<T&> { // NUL-terminated string (but not the pointer) is printed. template <typename T> -class UniversalTersePrinter { - public: - static void Print(const T& value, ::std::ostream* os) { +class UniversalTersePrinter +{ +public: + static void Print(const T& value, ::std::ostream* os) + { UniversalPrint(value, os); } }; template <typename T> -class UniversalTersePrinter<T&> { - public: - static void Print(const T& value, ::std::ostream* os) { +class UniversalTersePrinter<T&> +{ +public: + static void Print(const T& value, ::std::ostream* os) + { UniversalPrint(value, os); } }; template <typename T, size_t N> -class UniversalTersePrinter<T[N]> { - public: - static void Print(const T (&value)[N], ::std::ostream* os) { +class UniversalTersePrinter<T[N]> +{ +public: + static void Print(const T(&value)[N], ::std::ostream* os) + { UniversalPrinter<T[N]>::Print(value, os); } }; template <> -class UniversalTersePrinter<const char*> { - public: - static void Print(const char* str, ::std::ostream* os) { +class UniversalTersePrinter<const char*> +{ +public: + static void Print(const char* str, ::std::ostream* os) + { if (str == NULL) { *os << "NULL"; } else { @@ -9901,18 +10172,22 @@ class UniversalTersePrinter<const char*> { } }; template <> -class UniversalTersePrinter<char*> { - public: - static void Print(char* str, ::std::ostream* os) { +class UniversalTersePrinter<char*> +{ +public: + static void Print(char* str, ::std::ostream* os) + { UniversalTersePrinter<const char*>::Print(str, os); } }; #if GTEST_HAS_STD_WSTRING template <> -class UniversalTersePrinter<const wchar_t*> { - public: - static void Print(const wchar_t* str, ::std::ostream* os) { +class UniversalTersePrinter<const wchar_t*> +{ +public: + static void Print(const wchar_t* str, ::std::ostream* os) + { if (str == NULL) { *os << "NULL"; } else { @@ -9923,15 +10198,18 @@ class UniversalTersePrinter<const wchar_t*> { #endif template <> -class UniversalTersePrinter<wchar_t*> { - public: - static void Print(wchar_t* str, ::std::ostream* os) { +class UniversalTersePrinter<wchar_t*> +{ +public: + static void Print(wchar_t* str, ::std::ostream* os) + { UniversalTersePrinter<const wchar_t*>::Print(str, os); } }; template <typename T> -void UniversalTersePrint(const T& value, ::std::ostream* os) { +void UniversalTersePrint(const T& value, ::std::ostream* os) +{ UniversalTersePrinter<T>::Print(value, os); } @@ -9940,7 +10218,8 @@ void UniversalTersePrint(const T& value, ::std::ostream* os) { // (const) char pointer, this prints both the pointer and the // NUL-terminated string. template <typename T> -void UniversalPrint(const T& value, ::std::ostream* os) { +void UniversalPrint(const T& value, ::std::ostream* os) +{ // A workarond for the bug in VC++ 7.1 that prevents us from instantiating // UniversalPrinter with T directly. typedef T T1; @@ -9959,20 +10238,22 @@ typedef ::std::vector<string> Strings; // The inductive case. template <size_t N> -struct TuplePrefixPrinter { +struct TuplePrefixPrinter +{ // Prints the first N fields of a tuple. template <typename Tuple> - static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) { + static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) + { TuplePrefixPrinter<N - 1>::PrintPrefixTo(t, os); *os << ", "; - UniversalPrinter<typename ::std::tr1::tuple_element<N - 1, Tuple>::type> - ::Print(::std::tr1::get<N - 1>(t), os); + UniversalPrinter<typename ::std::tr1::tuple_element<N - 1, Tuple>::type>::Print(::std::tr1::get<N - 1>(t), os); } // Tersely prints the first N fields of a tuple to a string vector, // one element for each field. template <typename Tuple> - static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) { + static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) + { TuplePrefixPrinter<N - 1>::TersePrintPrefixToStrings(t, strings); ::std::stringstream ss; UniversalTersePrint(::std::tr1::get<N - 1>(t), &ss); @@ -9982,12 +10263,17 @@ struct TuplePrefixPrinter { // Base cases. template <> -struct TuplePrefixPrinter<0> { +struct TuplePrefixPrinter<0> +{ template <typename Tuple> - static void PrintPrefixTo(const Tuple&, ::std::ostream*) {} + static void PrintPrefixTo(const Tuple&, ::std::ostream*) + { + } template <typename Tuple> - static void TersePrintPrefixToStrings(const Tuple&, Strings*) {} + static void TersePrintPrefixToStrings(const Tuple&, Strings*) + { + } }; // We have to specialize the entire TuplePrefixPrinter<> class // template here, even though the definition of @@ -9995,15 +10281,17 @@ struct TuplePrefixPrinter<0> { // Embarcadero (formerly CodeGear, formerly Borland) C++ doesn't // support specializing a method template of a class template. template <> -struct TuplePrefixPrinter<1> { +struct TuplePrefixPrinter<1> +{ template <typename Tuple> - static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) { - UniversalPrinter<typename ::std::tr1::tuple_element<0, Tuple>::type>:: - Print(::std::tr1::get<0>(t), os); + static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) + { + UniversalPrinter<typename ::std::tr1::tuple_element<0, Tuple>::type>::Print(::std::tr1::get<0>(t), os); } template <typename Tuple> - static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) { + static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) + { ::std::stringstream ss; UniversalTersePrint(::std::tr1::get<0>(t), &ss); strings->push_back(ss.str()); @@ -10013,10 +10301,10 @@ struct TuplePrefixPrinter<1> { // Helper function for printing a tuple. T must be instantiated with // a tuple type. template <typename T> -void PrintTupleTo(const T& t, ::std::ostream* os) { +void PrintTupleTo(const T& t, ::std::ostream* os) +{ *os << "("; - TuplePrefixPrinter< ::std::tr1::tuple_size<T>::value>:: - PrintPrefixTo(t, os); + TuplePrefixPrinter<::std::tr1::tuple_size<T>::value>::PrintPrefixTo(t, os); *os << ")"; } @@ -10024,26 +10312,27 @@ void PrintTupleTo(const T& t, ::std::ostream* os) { // element for each field. See the comment before // UniversalTersePrint() for how we define "tersely". template <typename Tuple> -Strings UniversalTersePrintTupleFieldsToStrings(const Tuple& value) { +Strings UniversalTersePrintTupleFieldsToStrings(const Tuple& value) +{ Strings result; - TuplePrefixPrinter< ::std::tr1::tuple_size<Tuple>::value>:: - TersePrintPrefixToStrings(value, &result); + TuplePrefixPrinter<::std::tr1::tuple_size<Tuple>::value>::TersePrintPrefixToStrings(value, &result); return result; } -#endif // GTEST_HAS_TR1_TUPLE +#endif // GTEST_HAS_TR1_TUPLE -} // namespace internal +} // namespace internal template <typename T> -::std::string PrintToString(const T& value) { +::std::string PrintToString(const T& value) +{ ::std::stringstream ss; internal::UniversalTersePrinter<T>::Print(value, &ss); return ss.str(); } -} // namespace testing +} // namespace testing -#endif // GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ +#endif // GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ #if GTEST_HAS_PARAM_TEST @@ -10056,18 +10345,22 @@ namespace internal { // fixture class for the same test case. This may happen when // TEST_P macro is used to define two tests with the same name // but in different namespaces. -GTEST_API_ void ReportInvalidTestCaseType(const char* test_case_name, - const char* file, int line); +GTEST_API_ void ReportInvalidTestCaseType(const char* test_case_name, const char* file, int line); -template <typename> class ParamGeneratorInterface; -template <typename> class ParamGenerator; +template <typename> +class ParamGeneratorInterface; +template <typename> +class ParamGenerator; // Interface for iterating over elements provided by an implementation // of ParamGeneratorInterface<T>. template <typename T> -class ParamIteratorInterface { - public: - virtual ~ParamIteratorInterface() {} +class ParamIteratorInterface +{ +public: + virtual ~ParamIteratorInterface() + { + } // A pointer to the base generator instance. // Used only for the purposes of iterator comparison // to make sure that two iterators belong to the same generator. @@ -10095,54 +10388,75 @@ class ParamIteratorInterface { // ParamGeneratorInterface<T>. It wraps ParamIteratorInterface<T> // and implements the const forward iterator concept. template <typename T> -class ParamIterator { - public: +class ParamIterator +{ +public: typedef T value_type; typedef const T& reference; typedef ptrdiff_t difference_type; // ParamIterator assumes ownership of the impl_ pointer. - ParamIterator(const ParamIterator& other) : impl_(other.impl_->Clone()) {} - ParamIterator& operator=(const ParamIterator& other) { + ParamIterator(const ParamIterator& other) + : impl_(other.impl_->Clone()) + { + } + ParamIterator& operator=(const ParamIterator& other) + { if (this != &other) impl_.reset(other.impl_->Clone()); return *this; } - const T& operator*() const { return *impl_->Current(); } - const T* operator->() const { return impl_->Current(); } + const T& operator*() const + { + return *impl_->Current(); + } + const T* operator->() const + { + return impl_->Current(); + } // Prefix version of operator++. - ParamIterator& operator++() { + ParamIterator& operator++() + { impl_->Advance(); return *this; } // Postfix version of operator++. - ParamIterator operator++(int /*unused*/) { + ParamIterator operator++(int /*unused*/) + { ParamIteratorInterface<T>* clone = impl_->Clone(); impl_->Advance(); return ParamIterator(clone); } - bool operator==(const ParamIterator& other) const { + bool operator==(const ParamIterator& other) const + { return impl_.get() == other.impl_.get() || impl_->Equals(*other.impl_); } - bool operator!=(const ParamIterator& other) const { + bool operator!=(const ParamIterator& other) const + { return !(*this == other); } - private: +private: friend class ParamGenerator<T>; - explicit ParamIterator(ParamIteratorInterface<T>* impl) : impl_(impl) {} - scoped_ptr<ParamIteratorInterface<T> > impl_; + explicit ParamIterator(ParamIteratorInterface<T>* impl) + : impl_(impl) + { + } + scoped_ptr<ParamIteratorInterface<T>> impl_; }; // ParamGeneratorInterface<T> is the binary interface to access generators // defined in other translation units. template <typename T> -class ParamGeneratorInterface { - public: +class ParamGeneratorInterface +{ +public: typedef T ParamType; - virtual ~ParamGeneratorInterface() {} + virtual ~ParamGeneratorInterface() + { + } // Generator interface definition virtual ParamIteratorInterface<T>* Begin() const = 0; @@ -10154,24 +10468,38 @@ class ParamGeneratorInterface { // This class implements copy initialization semantics and the contained // ParamGeneratorInterface<T> instance is shared among all copies // of the original object. This is possible because that instance is immutable. -template<typename T> -class ParamGenerator { - public: +template <typename T> +class ParamGenerator +{ +public: typedef ParamIterator<T> iterator; - explicit ParamGenerator(ParamGeneratorInterface<T>* impl) : impl_(impl) {} - ParamGenerator(const ParamGenerator& other) : impl_(other.impl_) {} + explicit ParamGenerator(ParamGeneratorInterface<T>* impl) + : impl_(impl) + { + } + ParamGenerator(const ParamGenerator& other) + : impl_(other.impl_) + { + } - ParamGenerator& operator=(const ParamGenerator& other) { + ParamGenerator& operator=(const ParamGenerator& other) + { impl_ = other.impl_; return *this; } - iterator begin() const { return iterator(impl_->Begin()); } - iterator end() const { return iterator(impl_->End()); } + iterator begin() const + { + return iterator(impl_->Begin()); + } + iterator end() const + { + return iterator(impl_->End()); + } - private: - linked_ptr<const ParamGeneratorInterface<T> > impl_; +private: + linked_ptr<const ParamGeneratorInterface<T>> impl_; }; // Generates values from a range of two comparable values. Can be used to @@ -10179,55 +10507,80 @@ class ParamGenerator { // operator<(). // This class is used in the Range() function. template <typename T, typename IncrementT> -class RangeGenerator : public ParamGeneratorInterface<T> { - public: +class RangeGenerator : public ParamGeneratorInterface<T> +{ +public: RangeGenerator(T begin, T end, IncrementT step) - : begin_(begin), end_(end), - step_(step), end_index_(CalculateEndIndex(begin, end, step)) {} - virtual ~RangeGenerator() {} + : begin_(begin) + , end_(end) + , step_(step) + , end_index_(CalculateEndIndex(begin, end, step)) + { + } + virtual ~RangeGenerator() + { + } - virtual ParamIteratorInterface<T>* Begin() const { + virtual ParamIteratorInterface<T>* Begin() const + { return new Iterator(this, begin_, 0, step_); } - virtual ParamIteratorInterface<T>* End() const { + virtual ParamIteratorInterface<T>* End() const + { return new Iterator(this, end_, end_index_, step_); } - private: - class Iterator : public ParamIteratorInterface<T> { - public: - Iterator(const ParamGeneratorInterface<T>* base, T value, int index, - IncrementT step) - : base_(base), value_(value), index_(index), step_(step) {} - virtual ~Iterator() {} +private: + class Iterator : public ParamIteratorInterface<T> + { + public: + Iterator(const ParamGeneratorInterface<T>* base, T value, int index, IncrementT step) + : base_(base) + , value_(value) + , index_(index) + , step_(step) + { + } + virtual ~Iterator() + { + } - virtual const ParamGeneratorInterface<T>* BaseGenerator() const { + virtual const ParamGeneratorInterface<T>* BaseGenerator() const + { return base_; } - virtual void Advance() { + virtual void Advance() + { value_ = value_ + step_; index_++; } - virtual ParamIteratorInterface<T>* Clone() const { + virtual ParamIteratorInterface<T>* Clone() const + { return new Iterator(*this); } - virtual const T* Current() const { return &value_; } - virtual bool Equals(const ParamIteratorInterface<T>& other) const { + virtual const T* Current() const + { + return &value_; + } + virtual bool Equals(const ParamIteratorInterface<T>& other) const + { // Having the same base generator guarantees that the other // iterator is of the same type and we can downcast. - GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) - << "The program attempted to compare iterators " - << "from different generators." << std::endl; - const int other_index = - CheckedDowncastToActualType<const Iterator>(&other)->index_; + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const int other_index = CheckedDowncastToActualType<const Iterator>(&other)->index_; return index_ == other_index; } - private: + private: Iterator(const Iterator& other) - : ParamIteratorInterface<T>(), - base_(other.base_), value_(other.value_), index_(other.index_), - step_(other.step_) {} + : ParamIteratorInterface<T>() + , base_(other.base_) + , value_(other.value_) + , index_(other.index_) + , step_(other.step_) + { + } // No implementation - assignment is unsupported. void operator=(const Iterator& other); @@ -10236,11 +10589,10 @@ class RangeGenerator : public ParamGeneratorInterface<T> { T value_; int index_; const IncrementT step_; - }; // class RangeGenerator::Iterator + }; // class RangeGenerator::Iterator - static int CalculateEndIndex(const T& begin, - const T& end, - const IncrementT& step) { + static int CalculateEndIndex(const T& begin, const T& end, const IncrementT& step) + { int end_index = 0; for (T i = begin; i < end; i = i + step) end_index++; @@ -10256,7 +10608,7 @@ class RangeGenerator : public ParamGeneratorInterface<T> { // The index for the end() iterator. All the elements in the generated // sequence are indexed (0-based) to aid iterator comparison. const int end_index_; -}; // class RangeGenerator +}; // class RangeGenerator // Generates values from a pair of STL-style iterators. Used in the @@ -10264,38 +10616,53 @@ class RangeGenerator : public ParamGeneratorInterface<T> { // since the source can be located on the stack, and the generator // is likely to persist beyond that stack frame. template <typename T> -class ValuesInIteratorRangeGenerator : public ParamGeneratorInterface<T> { - public: +class ValuesInIteratorRangeGenerator : public ParamGeneratorInterface<T> +{ +public: template <typename ForwardIterator> ValuesInIteratorRangeGenerator(ForwardIterator begin, ForwardIterator end) - : container_(begin, end) {} - virtual ~ValuesInIteratorRangeGenerator() {} + : container_(begin, end) + { + } + virtual ~ValuesInIteratorRangeGenerator() + { + } - virtual ParamIteratorInterface<T>* Begin() const { + virtual ParamIteratorInterface<T>* Begin() const + { return new Iterator(this, container_.begin()); } - virtual ParamIteratorInterface<T>* End() const { + virtual ParamIteratorInterface<T>* End() const + { return new Iterator(this, container_.end()); } - private: +private: typedef typename ::std::vector<T> ContainerType; - class Iterator : public ParamIteratorInterface<T> { - public: - Iterator(const ParamGeneratorInterface<T>* base, - typename ContainerType::const_iterator iterator) - : base_(base), iterator_(iterator) {} - virtual ~Iterator() {} + class Iterator : public ParamIteratorInterface<T> + { + public: + Iterator(const ParamGeneratorInterface<T>* base, typename ContainerType::const_iterator iterator) + : base_(base) + , iterator_(iterator) + { + } + virtual ~Iterator() + { + } - virtual const ParamGeneratorInterface<T>* BaseGenerator() const { + virtual const ParamGeneratorInterface<T>* BaseGenerator() const + { return base_; } - virtual void Advance() { + virtual void Advance() + { ++iterator_; value_.reset(); } - virtual ParamIteratorInterface<T>* Clone() const { + virtual ParamIteratorInterface<T>* Clone() const + { return new Iterator(*this); } // We need to use cached value referenced by iterator_ because *iterator_ @@ -10305,28 +10672,30 @@ class ValuesInIteratorRangeGenerator : public ParamGeneratorInterface<T> { // can advance iterator_ beyond the end of the range, and we cannot // detect that fact. The client code, on the other hand, is // responsible for not calling Current() on an out-of-range iterator. - virtual const T* Current() const { + virtual const T* Current() const + { if (value_.get() == NULL) value_.reset(new T(*iterator_)); return value_.get(); } - virtual bool Equals(const ParamIteratorInterface<T>& other) const { + virtual bool Equals(const ParamIteratorInterface<T>& other) const + { // Having the same base generator guarantees that the other // iterator is of the same type and we can downcast. - GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) - << "The program attempted to compare iterators " - << "from different generators." << std::endl; - return iterator_ == - CheckedDowncastToActualType<const Iterator>(&other)->iterator_; + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) << "The program attempted to compare iterators " + << "from different generators." << std::endl; + return iterator_ == CheckedDowncastToActualType<const Iterator>(&other)->iterator_; } - private: + private: Iterator(const Iterator& other) - // The explicit constructor call suppresses a false warning - // emitted by gcc when supplied with the -Wextra option. + // The explicit constructor call suppresses a false warning + // emitted by gcc when supplied with the -Wextra option. : ParamIteratorInterface<T>(), base_(other.base_), - iterator_(other.iterator_) {} + iterator_(other.iterator_) + { + } const ParamGeneratorInterface<T>* const base_; typename ContainerType::const_iterator iterator_; @@ -10336,30 +10705,34 @@ class ValuesInIteratorRangeGenerator : public ParamGeneratorInterface<T> { // Use of scoped_ptr helps manage cached value's lifetime, // which is bound by the lifespan of the iterator itself. mutable scoped_ptr<const T> value_; - }; // class ValuesInIteratorRangeGenerator::Iterator + }; // class ValuesInIteratorRangeGenerator::Iterator // No implementation - assignment is unsupported. void operator=(const ValuesInIteratorRangeGenerator& other); const ContainerType container_; -}; // class ValuesInIteratorRangeGenerator +}; // class ValuesInIteratorRangeGenerator // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Stores a parameter value and later creates tests parameterized with that // value. template <class TestClass> -class ParameterizedTestFactory : public TestFactoryBase { - public: +class ParameterizedTestFactory : public TestFactoryBase +{ +public: typedef typename TestClass::ParamType ParamType; - explicit ParameterizedTestFactory(ParamType parameter) : - parameter_(parameter) {} - virtual Test* CreateTest() { + explicit ParameterizedTestFactory(ParamType parameter) + : parameter_(parameter) + { + } + virtual Test* CreateTest() + { TestClass::SetParam(¶meter_); return new TestClass(); } - private: +private: const ParamType parameter_; GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestFactory); @@ -10370,9 +10743,12 @@ class ParameterizedTestFactory : public TestFactoryBase { // TestMetaFactoryBase is a base class for meta-factories that create // test factories for passing into MakeAndRegisterTestInfo function. template <class ParamType> -class TestMetaFactoryBase { - public: - virtual ~TestMetaFactoryBase() {} +class TestMetaFactoryBase +{ +public: + virtual ~TestMetaFactoryBase() + { + } virtual TestFactoryBase* CreateTestFactory(ParamType parameter) = 0; }; @@ -10386,18 +10762,21 @@ class TestMetaFactoryBase { // it for each Test/Parameter value combination. Thus it needs meta factory // creator class. template <class TestCase> -class TestMetaFactory - : public TestMetaFactoryBase<typename TestCase::ParamType> { - public: +class TestMetaFactory : public TestMetaFactoryBase<typename TestCase::ParamType> +{ +public: typedef typename TestCase::ParamType ParamType; - TestMetaFactory() {} + TestMetaFactory() + { + } - virtual TestFactoryBase* CreateTestFactory(ParamType parameter) { + virtual TestFactoryBase* CreateTestFactory(ParamType parameter) + { return new ParameterizedTestFactory<TestCase>(parameter); } - private: +private: GTEST_DISALLOW_COPY_AND_ASSIGN_(TestMetaFactory); }; @@ -10411,9 +10790,12 @@ class TestMetaFactory // in RegisterTests method. The ParameterizeTestCaseRegistry class holds // a collection of pointers to the ParameterizedTestCaseInfo objects // and calls RegisterTests() on each of them when asked. -class ParameterizedTestCaseInfoBase { - public: - virtual ~ParameterizedTestCaseInfoBase() {} +class ParameterizedTestCaseInfoBase +{ +public: + virtual ~ParameterizedTestCaseInfoBase() + { + } // Base part of test case name for display purposes. virtual const string& GetTestCaseName() const = 0; @@ -10425,10 +10807,12 @@ class ParameterizedTestCaseInfoBase { // instance of a ParameterizedTestCaseInfoBase derived class. virtual void RegisterTests() = 0; - protected: - ParameterizedTestCaseInfoBase() {} +protected: + ParameterizedTestCaseInfoBase() + { + } - private: +private: GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseInfoBase); }; @@ -10440,8 +10824,9 @@ class ParameterizedTestCaseInfoBase { // test case. It registers tests with all values generated by all // generators when asked. template <class TestCase> -class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase { - public: +class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase +{ +public: // ParamType and GeneratorCreationFunc are private types but are required // for declarations of public methods AddTestPattern() and // AddTestCaseInstantiation(). @@ -10450,101 +10835,104 @@ class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase { typedef ParamGenerator<ParamType>(GeneratorCreationFunc)(); explicit ParameterizedTestCaseInfo(const char* name) - : test_case_name_(name) {} + : test_case_name_(name) + { + } // Test case base name for display purposes. - virtual const string& GetTestCaseName() const { return test_case_name_; } + virtual const string& GetTestCaseName() const + { + return test_case_name_; + } // Test case id to verify identity. - virtual TypeId GetTestCaseTypeId() const { return GetTypeId<TestCase>(); } + virtual TypeId GetTestCaseTypeId() const + { + return GetTypeId<TestCase>(); + } // TEST_P macro uses AddTestPattern() to record information // about a single test in a LocalTestInfo structure. // test_case_name is the base name of the test case (without invocation // prefix). test_base_name is the name of an individual test without // parameter index. For the test SequenceA/FooTest.DoBar/1 FooTest is // test case base name and DoBar is test base name. - void AddTestPattern(const char* test_case_name, - const char* test_base_name, - TestMetaFactoryBase<ParamType>* meta_factory) { - tests_.push_back(linked_ptr<TestInfo>(new TestInfo(test_case_name, - test_base_name, - meta_factory))); + void AddTestPattern(const char* test_case_name, const char* test_base_name, + TestMetaFactoryBase<ParamType>* meta_factory) + { + tests_.push_back(linked_ptr<TestInfo>(new TestInfo(test_case_name, test_base_name, meta_factory))); } // INSTANTIATE_TEST_CASE_P macro uses AddGenerator() to record information // about a generator. - int AddTestCaseInstantiation(const string& instantiation_name, - GeneratorCreationFunc* func, - const char* /* file */, - int /* line */) { + int AddTestCaseInstantiation(const string& instantiation_name, GeneratorCreationFunc* func, const char* /* file */, + int /* line */) + { instantiations_.push_back(::std::make_pair(instantiation_name, func)); - return 0; // Return value used only to run this method in namespace scope. + return 0; // Return value used only to run this method in namespace scope. } // UnitTest class invokes this method to register tests in this test case // test cases right before running tests in RUN_ALL_TESTS macro. // This method should not be called more then once on any single // instance of a ParameterizedTestCaseInfoBase derived class. // UnitTest has a guard to prevent from calling this method more then once. - virtual void RegisterTests() { - for (typename TestInfoContainer::iterator test_it = tests_.begin(); - test_it != tests_.end(); ++test_it) { + virtual void RegisterTests() + { + for (typename TestInfoContainer::iterator test_it = tests_.begin(); test_it != tests_.end(); ++test_it) { linked_ptr<TestInfo> test_info = *test_it; - for (typename InstantiationContainer::iterator gen_it = - instantiations_.begin(); gen_it != instantiations_.end(); - ++gen_it) { + for (typename InstantiationContainer::iterator gen_it = instantiations_.begin(); gen_it != instantiations_.end(); + ++gen_it) { const string& instantiation_name = gen_it->first; ParamGenerator<ParamType> generator((*gen_it->second)()); string test_case_name; - if ( !instantiation_name.empty() ) + if (!instantiation_name.empty()) test_case_name = instantiation_name + "/"; test_case_name += test_info->test_case_base_name; int i = 0; - for (typename ParamGenerator<ParamType>::iterator param_it = - generator.begin(); - param_it != generator.end(); ++param_it, ++i) { + for (typename ParamGenerator<ParamType>::iterator param_it = generator.begin(); param_it != generator.end(); + ++param_it, ++i) { Message test_name_stream; test_name_stream << test_info->test_base_name << "/" << i; - MakeAndRegisterTestInfo( - test_case_name.c_str(), - test_name_stream.GetString().c_str(), - NULL, // No type parameter. - PrintToString(*param_it).c_str(), - GetTestCaseTypeId(), - TestCase::SetUpTestCase, - TestCase::TearDownTestCase, - test_info->test_meta_factory->CreateTestFactory(*param_it)); - } // for param_it - } // for gen_it - } // for test_it - } // RegisterTests - - private: + MakeAndRegisterTestInfo(test_case_name.c_str(), + test_name_stream.GetString().c_str(), + NULL, // No type parameter. + PrintToString(*param_it).c_str(), + GetTestCaseTypeId(), + TestCase::SetUpTestCase, + TestCase::TearDownTestCase, + test_info->test_meta_factory->CreateTestFactory(*param_it)); + } // for param_it + } // for gen_it + } // for test_it + } // RegisterTests + +private: // LocalTestInfo structure keeps information about a single test registered // with TEST_P macro. - struct TestInfo { - TestInfo(const char* a_test_case_base_name, - const char* a_test_base_name, - TestMetaFactoryBase<ParamType>* a_test_meta_factory) : - test_case_base_name(a_test_case_base_name), - test_base_name(a_test_base_name), - test_meta_factory(a_test_meta_factory) {} + struct TestInfo + { + TestInfo(const char* a_test_case_base_name, const char* a_test_base_name, + TestMetaFactoryBase<ParamType>* a_test_meta_factory) + : test_case_base_name(a_test_case_base_name) + , test_base_name(a_test_base_name) + , test_meta_factory(a_test_meta_factory) + { + } const string test_case_base_name; const string test_base_name; - const scoped_ptr<TestMetaFactoryBase<ParamType> > test_meta_factory; + const scoped_ptr<TestMetaFactoryBase<ParamType>> test_meta_factory; }; - typedef ::std::vector<linked_ptr<TestInfo> > TestInfoContainer; + typedef ::std::vector<linked_ptr<TestInfo>> TestInfoContainer; // Keeps pairs of <Instantiation name, Sequence generator creation function> // received from INSTANTIATE_TEST_CASE_P macros. - typedef ::std::vector<std::pair<string, GeneratorCreationFunc*> > - InstantiationContainer; + typedef ::std::vector<std::pair<string, GeneratorCreationFunc*>> InstantiationContainer; const string test_case_name_; TestInfoContainer tests_; InstantiationContainer instantiations_; GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseInfo); -}; // class ParameterizedTestCaseInfo +}; // class ParameterizedTestCaseInfo // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // @@ -10552,12 +10940,15 @@ class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase { // classes accessed by test case names. TEST_P and INSTANTIATE_TEST_CASE_P // macros use it to locate their corresponding ParameterizedTestCaseInfo // descriptors. -class ParameterizedTestCaseRegistry { - public: - ParameterizedTestCaseRegistry() {} - ~ParameterizedTestCaseRegistry() { - for (TestCaseInfoContainer::iterator it = test_case_infos_.begin(); - it != test_case_infos_.end(); ++it) { +class ParameterizedTestCaseRegistry +{ +public: + ParameterizedTestCaseRegistry() + { + } + ~ParameterizedTestCaseRegistry() + { + for (TestCaseInfoContainer::iterator it = test_case_infos_.begin(); it != test_case_infos_.end(); ++it) { delete *it; } } @@ -10565,26 +10956,22 @@ class ParameterizedTestCaseRegistry { // Looks up or creates and returns a structure containing information about // tests and instantiations of a particular test case. template <class TestCase> - ParameterizedTestCaseInfo<TestCase>* GetTestCasePatternHolder( - const char* test_case_name, - const char* file, - int line) { + ParameterizedTestCaseInfo<TestCase>* GetTestCasePatternHolder(const char* test_case_name, const char* file, int line) + { ParameterizedTestCaseInfo<TestCase>* typed_test_info = NULL; - for (TestCaseInfoContainer::iterator it = test_case_infos_.begin(); - it != test_case_infos_.end(); ++it) { + for (TestCaseInfoContainer::iterator it = test_case_infos_.begin(); it != test_case_infos_.end(); ++it) { if ((*it)->GetTestCaseName() == test_case_name) { if ((*it)->GetTestCaseTypeId() != GetTypeId<TestCase>()) { // Complain about incorrect usage of Google Test facilities // and terminate the program since we cannot guaranty correct // test case setup and tear-down in this case. - ReportInvalidTestCaseType(test_case_name, file, line); + ReportInvalidTestCaseType(test_case_name, file, line); posix::Abort(); } else { // At this point we are sure that the object we found is of the same // type we are looking for, so we downcast it to that type // without further checks. - typed_test_info = CheckedDowncastToActualType< - ParameterizedTestCaseInfo<TestCase> >(*it); + typed_test_info = CheckedDowncastToActualType<ParameterizedTestCaseInfo<TestCase>>(*it); } break; } @@ -10595,14 +10982,14 @@ class ParameterizedTestCaseRegistry { } return typed_test_info; } - void RegisterTests() { - for (TestCaseInfoContainer::iterator it = test_case_infos_.begin(); - it != test_case_infos_.end(); ++it) { + void RegisterTests() + { + for (TestCaseInfoContainer::iterator it = test_case_infos_.begin(); it != test_case_infos_.end(); ++it) { (*it)->RegisterTests(); } } - private: +private: typedef ::std::vector<ParameterizedTestCaseInfoBase*> TestCaseInfoContainer; TestCaseInfoContainer test_case_infos_; @@ -10610,12 +10997,12 @@ class ParameterizedTestCaseRegistry { GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseRegistry); }; -} // namespace internal -} // namespace testing +} // namespace internal +} // namespace testing -#endif // GTEST_HAS_PARAM_TEST +#endif // GTEST_HAS_PARAM_TEST -#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_ +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_ // This file was GENERATED by command: // pump.py gtest-param-util-generated.h.pump // DO NOT EDIT BY HAND!!! @@ -10675,29 +11062,34 @@ namespace testing { // Forward declarations of ValuesIn(), which is implemented in // include/gtest/gtest-param-test.h. template <typename ForwardIterator> -internal::ParamGenerator< - typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type> +internal::ParamGenerator<typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type> ValuesIn(ForwardIterator begin, ForwardIterator end); template <typename T, size_t N> -internal::ParamGenerator<T> ValuesIn(const T (&array)[N]); +internal::ParamGenerator<T> ValuesIn(const T(&array)[N]); template <class Container> -internal::ParamGenerator<typename Container::value_type> ValuesIn( - const Container& container); +internal::ParamGenerator<typename Container::value_type> ValuesIn(const Container& container); namespace internal { // Used in the Values() function to provide polymorphic capabilities. template <typename T1> -class ValueArray1 { - public: - explicit ValueArray1(T1 v1) : v1_(v1) {} +class ValueArray1 +{ +public: + explicit ValueArray1(T1 v1) + : v1_(v1) + { + } template <typename T> - operator ParamGenerator<T>() const { return ValuesIn(&v1_, &v1_ + 1); } + operator ParamGenerator<T>() const + { + return ValuesIn(&v1_, &v1_ + 1); + } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray1& other); @@ -10705,17 +11097,23 @@ class ValueArray1 { }; template <typename T1, typename T2> -class ValueArray2 { - public: - ValueArray2(T1 v1, T2 v2) : v1_(v1), v2_(v2) {} +class ValueArray2 +{ +public: + ValueArray2(T1 v1, T2 v2) + : v1_(v1) + , v2_(v2) + { + } template <typename T> - operator ParamGenerator<T>() const { + operator ParamGenerator<T>() const + { const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray2& other); @@ -10724,18 +11122,24 @@ class ValueArray2 { }; template <typename T1, typename T2, typename T3> -class ValueArray3 { - public: - ValueArray3(T1 v1, T2 v2, T3 v3) : v1_(v1), v2_(v2), v3_(v3) {} +class ValueArray3 +{ +public: + ValueArray3(T1 v1, T2 v2, T3 v3) + : v1_(v1) + , v2_(v2) + , v3_(v3) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray3& other); @@ -10745,19 +11149,25 @@ class ValueArray3 { }; template <typename T1, typename T2, typename T3, typename T4> -class ValueArray4 { - public: - ValueArray4(T1 v1, T2 v2, T3 v3, T4 v4) : v1_(v1), v2_(v2), v3_(v3), - v4_(v4) {} +class ValueArray4 +{ +public: + ValueArray4(T1 v1, T2 v2, T3 v3, T4 v4) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray4& other); @@ -10768,19 +11178,27 @@ class ValueArray4 { }; template <typename T1, typename T2, typename T3, typename T4, typename T5> -class ValueArray5 { - public: - ValueArray5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) : v1_(v1), v2_(v2), v3_(v3), - v4_(v4), v5_(v5) {} +class ValueArray5 +{ +public: + ValueArray5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_)}; + operator ParamGenerator<T>() const + { + const T array[] = { + static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray5& other); @@ -10791,22 +11209,33 @@ class ValueArray5 { const T5 v5_; }; -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6> -class ValueArray6 { - public: - ValueArray6(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) : v1_(v1), v2_(v2), - v3_(v3), v4_(v4), v5_(v5), v6_(v6) {} +template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6> +class ValueArray6 +{ +public: + ValueArray6(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), + static_cast<T>(v2_), + static_cast<T>(v3_), + static_cast<T>(v4_), + static_cast<T>(v5_), + static_cast<T>(v6_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray6& other); @@ -10818,22 +11247,35 @@ class ValueArray6 { const T6 v6_; }; -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7> -class ValueArray7 { - public: - ValueArray7(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) : v1_(v1), - v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7) {} +template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7> +class ValueArray7 +{ +public: + ValueArray7(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), + static_cast<T>(v2_), + static_cast<T>(v3_), + static_cast<T>(v4_), + static_cast<T>(v5_), + static_cast<T>(v6_), + static_cast<T>(v7_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray7& other); @@ -10846,23 +11288,37 @@ class ValueArray7 { const T7 v7_; }; -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8> -class ValueArray8 { - public: - ValueArray8(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8) {} +template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8> +class ValueArray8 +{ +public: + ValueArray8(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), + static_cast<T>(v2_), + static_cast<T>(v3_), + static_cast<T>(v4_), + static_cast<T>(v5_), + static_cast<T>(v6_), + static_cast<T>(v7_), + static_cast<T>(v8_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray8& other); @@ -10876,24 +11332,40 @@ class ValueArray8 { const T8 v8_; }; -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9> -class ValueArray9 { - public: - ValueArray9(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, - T9 v9) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9) {} +template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, + typename T9> +class ValueArray9 +{ +public: + ValueArray9(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), + static_cast<T>(v2_), + static_cast<T>(v3_), + static_cast<T>(v4_), + static_cast<T>(v5_), + static_cast<T>(v6_), + static_cast<T>(v7_), + static_cast<T>(v8_), + static_cast<T>(v9_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray9& other); @@ -10908,24 +11380,42 @@ class ValueArray9 { const T9 v9_; }; -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10> -class ValueArray10 { - public: - ValueArray10(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9), v10_(v10) {} +template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, + typename T9, typename T10> +class ValueArray10 +{ +public: + ValueArray10(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), + static_cast<T>(v2_), + static_cast<T>(v3_), + static_cast<T>(v4_), + static_cast<T>(v5_), + static_cast<T>(v6_), + static_cast<T>(v7_), + static_cast<T>(v8_), + static_cast<T>(v9_), + static_cast<T>(v10_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray10& other); @@ -10941,25 +11431,44 @@ class ValueArray10 { const T10 v10_; }; -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11> -class ValueArray11 { - public: - ValueArray11(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), - v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11) {} +template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, + typename T9, typename T10, typename T11> +class ValueArray11 +{ +public: + ValueArray11(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), + static_cast<T>(v2_), + static_cast<T>(v3_), + static_cast<T>(v4_), + static_cast<T>(v5_), + static_cast<T>(v6_), + static_cast<T>(v7_), + static_cast<T>(v8_), + static_cast<T>(v9_), + static_cast<T>(v10_), + static_cast<T>(v11_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray11& other); @@ -10976,26 +11485,46 @@ class ValueArray11 { const T11 v11_; }; -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> -class ValueArray12 { - public: - ValueArray12(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), - v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12) {} +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> +class ValueArray12 +{ +public: + ValueArray12(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), + static_cast<T>(v2_), + static_cast<T>(v3_), + static_cast<T>(v4_), + static_cast<T>(v5_), + static_cast<T>(v6_), + static_cast<T>(v7_), + static_cast<T>(v8_), + static_cast<T>(v9_), + static_cast<T>(v10_), + static_cast<T>(v11_), + static_cast<T>(v12_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray12& other); @@ -11013,27 +11542,48 @@ class ValueArray12 { const T12 v12_; }; -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> -class ValueArray13 { - public: - ValueArray13(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), - v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), - v12_(v12), v13_(v13) {} +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> +class ValueArray13 +{ +public: + ValueArray13(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), + static_cast<T>(v2_), + static_cast<T>(v3_), + static_cast<T>(v4_), + static_cast<T>(v5_), + static_cast<T>(v6_), + static_cast<T>(v7_), + static_cast<T>(v8_), + static_cast<T>(v9_), + static_cast<T>(v10_), + static_cast<T>(v11_), + static_cast<T>(v12_), + static_cast<T>(v13_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray13& other); @@ -11052,27 +11602,51 @@ class ValueArray13 { const T13 v13_; }; -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> -class ValueArray14 { - public: - ValueArray14(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) : v1_(v1), v2_(v2), v3_(v3), - v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), - v11_(v11), v12_(v12), v13_(v13), v14_(v14) {} +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> +class ValueArray14 +{ +public: + ValueArray14(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), + static_cast<T>(v2_), + static_cast<T>(v3_), + static_cast<T>(v4_), + static_cast<T>(v5_), + static_cast<T>(v6_), + static_cast<T>(v7_), + static_cast<T>(v8_), + static_cast<T>(v9_), + static_cast<T>(v10_), + static_cast<T>(v11_), + static_cast<T>(v12_), + static_cast<T>(v13_), + static_cast<T>(v14_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray14& other); @@ -11092,28 +11666,53 @@ class ValueArray14 { const T14 v14_; }; -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> -class ValueArray15 { - public: - ValueArray15(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) : v1_(v1), v2_(v2), - v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), - v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15) {} +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> +class ValueArray15 +{ +public: + ValueArray15(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), + static_cast<T>(v2_), + static_cast<T>(v3_), + static_cast<T>(v4_), + static_cast<T>(v5_), + static_cast<T>(v6_), + static_cast<T>(v7_), + static_cast<T>(v8_), + static_cast<T>(v9_), + static_cast<T>(v10_), + static_cast<T>(v11_), + static_cast<T>(v12_), + static_cast<T>(v13_), + static_cast<T>(v14_), + static_cast<T>(v15_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray15& other); @@ -11134,30 +11733,55 @@ class ValueArray15 { const T15 v15_; }; -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> -class ValueArray16 { - public: - ValueArray16(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16) : v1_(v1), - v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), - v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), - v16_(v16) {} +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> +class ValueArray16 +{ +public: + ValueArray16(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), + static_cast<T>(v2_), + static_cast<T>(v3_), + static_cast<T>(v4_), + static_cast<T>(v5_), + static_cast<T>(v6_), + static_cast<T>(v7_), + static_cast<T>(v8_), + static_cast<T>(v9_), + static_cast<T>(v10_), + static_cast<T>(v11_), + static_cast<T>(v12_), + static_cast<T>(v13_), + static_cast<T>(v14_), + static_cast<T>(v15_), + static_cast<T>(v16_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray16& other); @@ -11179,30 +11803,58 @@ class ValueArray16 { const T16 v16_; }; -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> -class ValueArray17 { - public: - ValueArray17(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, - T17 v17) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), - v15_(v15), v16_(v16), v17_(v17) {} +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> +class ValueArray17 +{ +public: + ValueArray17(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), + static_cast<T>(v2_), + static_cast<T>(v3_), + static_cast<T>(v4_), + static_cast<T>(v5_), + static_cast<T>(v6_), + static_cast<T>(v7_), + static_cast<T>(v8_), + static_cast<T>(v9_), + static_cast<T>(v10_), + static_cast<T>(v11_), + static_cast<T>(v12_), + static_cast<T>(v13_), + static_cast<T>(v14_), + static_cast<T>(v15_), + static_cast<T>(v16_), + static_cast<T>(v17_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray17& other); @@ -11225,31 +11877,60 @@ class ValueArray17 { const T17 v17_; }; -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> -class ValueArray18 { - public: - ValueArray18(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), - v15_(v15), v16_(v16), v17_(v17), v18_(v18) {} +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> +class ValueArray18 +{ +public: + ValueArray18(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), + static_cast<T>(v2_), + static_cast<T>(v3_), + static_cast<T>(v4_), + static_cast<T>(v5_), + static_cast<T>(v6_), + static_cast<T>(v7_), + static_cast<T>(v8_), + static_cast<T>(v9_), + static_cast<T>(v10_), + static_cast<T>(v11_), + static_cast<T>(v12_), + static_cast<T>(v13_), + static_cast<T>(v14_), + static_cast<T>(v15_), + static_cast<T>(v16_), + static_cast<T>(v17_), + static_cast<T>(v18_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray18& other); @@ -11273,31 +11954,62 @@ class ValueArray18 { const T18 v18_; }; -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> -class ValueArray19 { - public: - ValueArray19(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), - v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), - v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19) {} +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> +class ValueArray19 +{ +public: + ValueArray19(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), + static_cast<T>(v2_), + static_cast<T>(v3_), + static_cast<T>(v4_), + static_cast<T>(v5_), + static_cast<T>(v6_), + static_cast<T>(v7_), + static_cast<T>(v8_), + static_cast<T>(v9_), + static_cast<T>(v10_), + static_cast<T>(v11_), + static_cast<T>(v12_), + static_cast<T>(v13_), + static_cast<T>(v14_), + static_cast<T>(v15_), + static_cast<T>(v16_), + static_cast<T>(v17_), + static_cast<T>(v18_), + static_cast<T>(v19_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray19& other); @@ -11322,32 +12034,49 @@ class ValueArray19 { const T19 v19_; }; -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> -class ValueArray20 { - public: - ValueArray20(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), - v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), - v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), - v19_(v19), v20_(v20) {} +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> +class ValueArray20 +{ +public: + ValueArray20(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), + static_cast<T>(v5_), static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), + static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), static_cast<T>(v12_), + static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), static_cast<T>(v16_), + static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray20& other); @@ -11373,34 +12102,51 @@ class ValueArray20 { const T20 v20_; }; -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> -class ValueArray21 { - public: - ValueArray21(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), - v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), - v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), - v18_(v18), v19_(v19), v20_(v20), v21_(v21) {} +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> +class ValueArray21 +{ +public: + ValueArray21(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), + static_cast<T>(v5_), static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), + static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), static_cast<T>(v12_), + static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), static_cast<T>(v16_), + static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray21& other); @@ -11427,34 +12173,52 @@ class ValueArray21 { const T21 v21_; }; -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> -class ValueArray22 { - public: - ValueArray22(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) : v1_(v1), v2_(v2), v3_(v3), - v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), - v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), - v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22) {} +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> +class ValueArray22 +{ +public: + ValueArray22(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), + static_cast<T>(v5_), static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), + static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), static_cast<T>(v12_), + static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), static_cast<T>(v16_), + static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray22& other); @@ -11482,35 +12246,53 @@ class ValueArray22 { const T22 v22_; }; -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> -class ValueArray23 { - public: - ValueArray23(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) : v1_(v1), v2_(v2), - v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), - v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), - v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), - v23_(v23) {} +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> +class ValueArray23 +{ +public: + ValueArray23(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), + static_cast<T>(v5_), static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), + static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), static_cast<T>(v12_), + static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), static_cast<T>(v16_), + static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray23& other); @@ -11539,36 +12321,55 @@ class ValueArray23 { const T23 v23_; }; -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> -class ValueArray24 { - public: - ValueArray24(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) : v1_(v1), - v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), - v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), - v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), - v22_(v22), v23_(v23), v24_(v24) {} +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> +class ValueArray24 +{ +public: + ValueArray24(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), + static_cast<T>(v5_), static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), + static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), static_cast<T>(v12_), + static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), static_cast<T>(v16_), + static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray24& other); @@ -11598,36 +12399,57 @@ class ValueArray24 { const T24 v24_; }; -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> -class ValueArray25 { - public: - ValueArray25(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, - T25 v25) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), - v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), - v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25) {} +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> +class ValueArray25 +{ +public: + ValueArray25(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_)}; + operator ParamGenerator<T>() const + { + const T array[] = { + static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), + static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), static_cast<T>(v9_), static_cast<T>(v10_), + static_cast<T>(v11_), static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), + static_cast<T>(v16_), static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), static_cast<T>(v25_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray25& other); @@ -11658,37 +12480,59 @@ class ValueArray25 { const T25 v25_; }; -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> -class ValueArray26 { - public: - ValueArray26(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), - v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), - v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26) {} +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> +class ValueArray26 +{ +public: + ValueArray26(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), + static_cast<T>(v5_), static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), + static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), static_cast<T>(v12_), + static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), static_cast<T>(v16_), + static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), + static_cast<T>(v25_), static_cast<T>(v26_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray26& other); @@ -11720,39 +12564,60 @@ class ValueArray26 { const T26 v26_; }; -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> -class ValueArray27 { - public: - ValueArray27(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), - v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), - v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), - v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), - v26_(v26), v27_(v27) {} +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> +class ValueArray27 +{ +public: + ValueArray27(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), + static_cast<T>(v5_), static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), + static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), static_cast<T>(v12_), + static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), static_cast<T>(v16_), + static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), + static_cast<T>(v25_), static_cast<T>(v26_), static_cast<T>(v27_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray27& other); @@ -11785,39 +12650,61 @@ class ValueArray27 { const T27 v27_; }; -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> -class ValueArray28 { - public: - ValueArray28(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), - v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), - v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), - v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), - v25_(v25), v26_(v26), v27_(v27), v28_(v28) {} +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> +class ValueArray28 +{ +public: + ValueArray28(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + , v28_(v28) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_), static_cast<T>(v28_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), + static_cast<T>(v5_), static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), + static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), static_cast<T>(v12_), + static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), static_cast<T>(v16_), + static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), + static_cast<T>(v25_), static_cast<T>(v26_), static_cast<T>(v27_), static_cast<T>(v28_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray28& other); @@ -11851,39 +12738,62 @@ class ValueArray28 { const T28 v28_; }; -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> -class ValueArray29 { - public: - ValueArray29(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), - v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), - v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), - v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), - v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29) {} +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> +class ValueArray29 +{ +public: + ValueArray29(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + , v28_(v28) + , v29_(v29) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_)}; + operator ParamGenerator<T>() const + { + const T array[] = { + static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), + static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), static_cast<T>(v9_), static_cast<T>(v10_), + static_cast<T>(v11_), static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), + static_cast<T>(v16_), static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), static_cast<T>(v25_), + static_cast<T>(v26_), static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray29& other); @@ -11918,41 +12828,63 @@ class ValueArray29 { const T29 v29_; }; -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> -class ValueArray30 { - public: - ValueArray30(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) : v1_(v1), v2_(v2), v3_(v3), - v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), - v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), - v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), - v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), - v29_(v29), v30_(v30) {} +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> +class ValueArray30 +{ +public: + ValueArray30(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + , v28_(v28) + , v29_(v29) + , v30_(v30) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), - static_cast<T>(v30_)}; + operator ParamGenerator<T>() const + { + const T array[] = { + static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), + static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), static_cast<T>(v9_), static_cast<T>(v10_), + static_cast<T>(v11_), static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), + static_cast<T>(v16_), static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), static_cast<T>(v25_), + static_cast<T>(v26_), static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), static_cast<T>(v30_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray30& other); @@ -11988,42 +12920,66 @@ class ValueArray30 { const T30 v30_; }; -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> -class ValueArray31 { - public: - ValueArray31(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) : v1_(v1), v2_(v2), - v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), - v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), - v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), - v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), - v29_(v29), v30_(v30), v31_(v31) {} +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> +class ValueArray31 +{ +public: + ValueArray31(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + , v28_(v28) + , v29_(v29) + , v30_(v30) + , v31_(v31) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), - static_cast<T>(v30_), static_cast<T>(v31_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), + static_cast<T>(v5_), static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), + static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), static_cast<T>(v12_), + static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), static_cast<T>(v16_), + static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), + static_cast<T>(v25_), static_cast<T>(v26_), static_cast<T>(v27_), static_cast<T>(v28_), + static_cast<T>(v29_), static_cast<T>(v30_), static_cast<T>(v31_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray31& other); @@ -12060,42 +13016,67 @@ class ValueArray31 { const T31 v31_; }; -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> -class ValueArray32 { - public: - ValueArray32(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) : v1_(v1), - v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), - v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), - v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), - v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), - v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32) {} +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> +class ValueArray32 +{ +public: + ValueArray32(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + , v28_(v28) + , v29_(v29) + , v30_(v30) + , v31_(v31) + , v32_(v32) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), - static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), + static_cast<T>(v5_), static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), + static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), static_cast<T>(v12_), + static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), static_cast<T>(v16_), + static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), + static_cast<T>(v25_), static_cast<T>(v26_), static_cast<T>(v27_), static_cast<T>(v28_), + static_cast<T>(v29_), static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray32& other); @@ -12133,44 +13114,68 @@ class ValueArray32 { const T32 v32_; }; -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> -class ValueArray33 { - public: - ValueArray33(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, - T33 v33) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), - v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), - v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), - v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), - v33_(v33) {} +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> +class ValueArray33 +{ +public: + ValueArray33(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + , v28_(v28) + , v29_(v29) + , v30_(v30) + , v31_(v31) + , v32_(v32) + , v33_(v33) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), - static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), - static_cast<T>(v33_)}; + operator ParamGenerator<T>() const + { + const T array[] = { + static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), + static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), static_cast<T>(v9_), static_cast<T>(v10_), + static_cast<T>(v11_), static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), + static_cast<T>(v16_), static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), static_cast<T>(v25_), + static_cast<T>(v26_), static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), static_cast<T>(v30_), + static_cast<T>(v31_), static_cast<T>(v32_), static_cast<T>(v33_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray33& other); @@ -12209,44 +13214,69 @@ class ValueArray33 { const T33 v33_; }; -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> -class ValueArray34 { - public: - ValueArray34(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), - v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), - v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), - v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), - v33_(v33), v34_(v34) {} +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> +class ValueArray34 +{ +public: + ValueArray34(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + , v28_(v28) + , v29_(v29) + , v30_(v30) + , v31_(v31) + , v32_(v32) + , v33_(v33) + , v34_(v34) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), - static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), - static_cast<T>(v33_), static_cast<T>(v34_)}; + operator ParamGenerator<T>() const + { + const T array[] = { + static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), + static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), static_cast<T>(v9_), static_cast<T>(v10_), + static_cast<T>(v11_), static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), + static_cast<T>(v16_), static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), static_cast<T>(v25_), + static_cast<T>(v26_), static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), static_cast<T>(v30_), + static_cast<T>(v31_), static_cast<T>(v32_), static_cast<T>(v33_), static_cast<T>(v34_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray34& other); @@ -12286,44 +13316,70 @@ class ValueArray34 { const T34 v34_; }; -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> -class ValueArray35 { - public: - ValueArray35(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), - v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), - v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), - v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), - v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), - v32_(v32), v33_(v33), v34_(v34), v35_(v35) {} +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> +class ValueArray35 +{ +public: + ValueArray35(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + , v28_(v28) + , v29_(v29) + , v30_(v30) + , v31_(v31) + , v32_(v32) + , v33_(v33) + , v34_(v34) + , v35_(v35) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), - static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), - static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_)}; + operator ParamGenerator<T>() const + { + const T array[] = { + static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), + static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), static_cast<T>(v9_), static_cast<T>(v10_), + static_cast<T>(v11_), static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), + static_cast<T>(v16_), static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), static_cast<T>(v25_), + static_cast<T>(v26_), static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), static_cast<T>(v30_), + static_cast<T>(v31_), static_cast<T>(v32_), static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray35& other); @@ -12364,46 +13420,73 @@ class ValueArray35 { const T35 v35_; }; -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> -class ValueArray36 { - public: - ValueArray36(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), - v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), - v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), - v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), - v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), - v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36) {} +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> +class ValueArray36 +{ +public: + ValueArray36(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, + T36 v36) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + , v28_(v28) + , v29_(v29) + , v30_(v30) + , v31_(v31) + , v32_(v32) + , v33_(v33) + , v34_(v34) + , v35_(v35) + , v36_(v36) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), - static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), - static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), - static_cast<T>(v36_)}; + operator ParamGenerator<T>() const + { + const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), + static_cast<T>(v5_), static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), + static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), static_cast<T>(v12_), + static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), static_cast<T>(v16_), + static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), + static_cast<T>(v25_), static_cast<T>(v26_), static_cast<T>(v27_), static_cast<T>(v28_), + static_cast<T>(v29_), static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), + static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), static_cast<T>(v36_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray36& other); @@ -12445,47 +13528,74 @@ class ValueArray36 { const T36 v36_; }; -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> -class ValueArray37 { - public: - ValueArray37(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), - v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), - v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), - v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), - v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), - v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), - v36_(v36), v37_(v37) {} +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> +class ValueArray37 +{ +public: + ValueArray37(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, + T36 v36, T37 v37) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + , v28_(v28) + , v29_(v29) + , v30_(v30) + , v31_(v31) + , v32_(v32) + , v33_(v33) + , v34_(v34) + , v35_(v35) + , v36_(v36) + , v37_(v37) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), - static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), - static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), + operator ParamGenerator<T>() const + { + const T array[] = { + static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), + static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), static_cast<T>(v9_), static_cast<T>(v10_), + static_cast<T>(v11_), static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), + static_cast<T>(v16_), static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), static_cast<T>(v25_), + static_cast<T>(v26_), static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), static_cast<T>(v30_), + static_cast<T>(v31_), static_cast<T>(v32_), static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), static_cast<T>(v36_), static_cast<T>(v37_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray37& other); @@ -12528,47 +13638,76 @@ class ValueArray37 { const T37 v37_; }; -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> -class ValueArray38 { - public: - ValueArray38(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) : v1_(v1), v2_(v2), v3_(v3), - v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), - v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), - v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), - v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), - v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), - v35_(v35), v36_(v36), v37_(v37), v38_(v38) {} +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> +class ValueArray38 +{ +public: + ValueArray38(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, + T36 v36, T37 v37, T38 v38) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + , v28_(v28) + , v29_(v29) + , v30_(v30) + , v31_(v31) + , v32_(v32) + , v33_(v33) + , v34_(v34) + , v35_(v35) + , v36_(v36) + , v37_(v37) + , v38_(v38) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), - static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), - static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), + operator ParamGenerator<T>() const + { + const T array[] = { + static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), + static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), static_cast<T>(v9_), static_cast<T>(v10_), + static_cast<T>(v11_), static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), + static_cast<T>(v16_), static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), static_cast<T>(v25_), + static_cast<T>(v26_), static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), static_cast<T>(v30_), + static_cast<T>(v31_), static_cast<T>(v32_), static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray38& other); @@ -12612,48 +13751,77 @@ class ValueArray38 { const T38 v38_; }; -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> -class ValueArray39 { - public: - ValueArray39(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) : v1_(v1), v2_(v2), - v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), - v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), - v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), - v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), - v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), - v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39) {} +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> +class ValueArray39 +{ +public: + ValueArray39(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, + T36 v36, T37 v37, T38 v38, T39 v39) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + , v28_(v28) + , v29_(v29) + , v30_(v30) + , v31_(v31) + , v32_(v32) + , v33_(v33) + , v34_(v34) + , v35_(v35) + , v36_(v36) + , v37_(v37) + , v38_(v38) + , v39_(v39) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), - static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), - static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), - static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), - static_cast<T>(v39_)}; + operator ParamGenerator<T>() const + { + const T array[] = { + static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), + static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), static_cast<T>(v9_), static_cast<T>(v10_), + static_cast<T>(v11_), static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), + static_cast<T>(v16_), static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), static_cast<T>(v25_), + static_cast<T>(v26_), static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), static_cast<T>(v30_), + static_cast<T>(v31_), static_cast<T>(v32_), static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), + static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), static_cast<T>(v39_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray39& other); @@ -12698,49 +13866,78 @@ class ValueArray39 { const T39 v39_; }; -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> -class ValueArray40 { - public: - ValueArray40(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) : v1_(v1), - v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), - v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), - v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), - v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), - v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), - v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), - v40_(v40) {} +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> +class ValueArray40 +{ +public: + ValueArray40(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, + T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + , v28_(v28) + , v29_(v29) + , v30_(v30) + , v31_(v31) + , v32_(v32) + , v33_(v33) + , v34_(v34) + , v35_(v35) + , v36_(v36) + , v37_(v37) + , v38_(v38) + , v39_(v39) + , v40_(v40) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), - static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), - static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), - static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), - static_cast<T>(v39_), static_cast<T>(v40_)}; + operator ParamGenerator<T>() const + { + const T array[] = { + static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), + static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), static_cast<T>(v9_), static_cast<T>(v10_), + static_cast<T>(v11_), static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), + static_cast<T>(v16_), static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), static_cast<T>(v25_), + static_cast<T>(v26_), static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), static_cast<T>(v30_), + static_cast<T>(v31_), static_cast<T>(v32_), static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), + static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), static_cast<T>(v39_), static_cast<T>(v40_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray40& other); @@ -12786,50 +13983,80 @@ class ValueArray40 { const T40 v40_; }; -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> -class ValueArray41 { - public: - ValueArray41(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, - T41 v41) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), - v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), - v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), - v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), - v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), - v39_(v39), v40_(v40), v41_(v41) {} +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> +class ValueArray41 +{ +public: + ValueArray41(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, + T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + , v28_(v28) + , v29_(v29) + , v30_(v30) + , v31_(v31) + , v32_(v32) + , v33_(v33) + , v34_(v34) + , v35_(v35) + , v36_(v36) + , v37_(v37) + , v38_(v38) + , v39_(v39) + , v40_(v40) + , v41_(v41) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), - static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), - static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), - static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), - static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_)}; + operator ParamGenerator<T>() const + { + const T array[] = { + static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), + static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), static_cast<T>(v9_), static_cast<T>(v10_), + static_cast<T>(v11_), static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), + static_cast<T>(v16_), static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), static_cast<T>(v25_), + static_cast<T>(v26_), static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), static_cast<T>(v30_), + static_cast<T>(v31_), static_cast<T>(v32_), static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), + static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), static_cast<T>(v39_), static_cast<T>(v40_), + static_cast<T>(v41_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray41& other); @@ -12876,51 +14103,81 @@ class ValueArray41 { const T41 v41_; }; -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> -class ValueArray42 { - public: - ValueArray42(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), - v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), - v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), - v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), - v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), - v39_(v39), v40_(v40), v41_(v41), v42_(v42) {} +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> +class ValueArray42 +{ +public: + ValueArray42(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, + T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + , v28_(v28) + , v29_(v29) + , v30_(v30) + , v31_(v31) + , v32_(v32) + , v33_(v33) + , v34_(v34) + , v35_(v35) + , v36_(v36) + , v37_(v37) + , v38_(v38) + , v39_(v39) + , v40_(v40) + , v41_(v41) + , v42_(v42) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), - static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), - static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), - static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), - static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), - static_cast<T>(v42_)}; + operator ParamGenerator<T>() const + { + const T array[] = { + static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), + static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), static_cast<T>(v9_), static_cast<T>(v10_), + static_cast<T>(v11_), static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), + static_cast<T>(v16_), static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), static_cast<T>(v25_), + static_cast<T>(v26_), static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), static_cast<T>(v30_), + static_cast<T>(v31_), static_cast<T>(v32_), static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), + static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), static_cast<T>(v39_), static_cast<T>(v40_), + static_cast<T>(v41_), static_cast<T>(v42_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray42& other); @@ -12968,51 +14225,82 @@ class ValueArray42 { const T42 v42_; }; -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> -class ValueArray43 { - public: - ValueArray43(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), - v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), - v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), - v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), - v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), - v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), - v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43) {} +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> +class ValueArray43 +{ +public: + ValueArray43(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, + T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + , v28_(v28) + , v29_(v29) + , v30_(v30) + , v31_(v31) + , v32_(v32) + , v33_(v33) + , v34_(v34) + , v35_(v35) + , v36_(v36) + , v37_(v37) + , v38_(v38) + , v39_(v39) + , v40_(v40) + , v41_(v41) + , v42_(v42) + , v43_(v43) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), - static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), - static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), - static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), - static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), - static_cast<T>(v42_), static_cast<T>(v43_)}; + operator ParamGenerator<T>() const + { + const T array[] = { + static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), + static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), static_cast<T>(v9_), static_cast<T>(v10_), + static_cast<T>(v11_), static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), + static_cast<T>(v16_), static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), static_cast<T>(v25_), + static_cast<T>(v26_), static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), static_cast<T>(v30_), + static_cast<T>(v31_), static_cast<T>(v32_), static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), + static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), static_cast<T>(v39_), static_cast<T>(v40_), + static_cast<T>(v41_), static_cast<T>(v42_), static_cast<T>(v43_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray43& other); @@ -13061,52 +14349,83 @@ class ValueArray43 { const T43 v43_; }; -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> -class ValueArray44 { - public: - ValueArray44(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43, T44 v44) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), - v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), - v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), - v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), - v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), - v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), - v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), - v43_(v43), v44_(v44) {} +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> +class ValueArray44 +{ +public: + ValueArray44(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, + T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + , v28_(v28) + , v29_(v29) + , v30_(v30) + , v31_(v31) + , v32_(v32) + , v33_(v33) + , v34_(v34) + , v35_(v35) + , v36_(v36) + , v37_(v37) + , v38_(v38) + , v39_(v39) + , v40_(v40) + , v41_(v41) + , v42_(v42) + , v43_(v43) + , v44_(v44) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), - static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), - static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), - static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), - static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), - static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_)}; + operator ParamGenerator<T>() const + { + const T array[] = { + static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), + static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), static_cast<T>(v9_), static_cast<T>(v10_), + static_cast<T>(v11_), static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), + static_cast<T>(v16_), static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), static_cast<T>(v25_), + static_cast<T>(v26_), static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), static_cast<T>(v30_), + static_cast<T>(v31_), static_cast<T>(v32_), static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), + static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), static_cast<T>(v39_), static_cast<T>(v40_), + static_cast<T>(v41_), static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray44& other); @@ -13156,53 +14475,85 @@ class ValueArray44 { const T44 v44_; }; -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> -class ValueArray45 { - public: - ValueArray45(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43, T44 v44, T45 v45) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), - v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), - v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), - v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), - v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), - v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), - v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), - v42_(v42), v43_(v43), v44_(v44), v45_(v45) {} +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> +class ValueArray45 +{ +public: + ValueArray45(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, + T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + , v28_(v28) + , v29_(v29) + , v30_(v30) + , v31_(v31) + , v32_(v32) + , v33_(v33) + , v34_(v34) + , v35_(v35) + , v36_(v36) + , v37_(v37) + , v38_(v38) + , v39_(v39) + , v40_(v40) + , v41_(v41) + , v42_(v42) + , v43_(v43) + , v44_(v44) + , v45_(v45) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), - static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), - static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), - static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), - static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), - static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), - static_cast<T>(v45_)}; + operator ParamGenerator<T>() const + { + const T array[] = { + static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), + static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), static_cast<T>(v9_), static_cast<T>(v10_), + static_cast<T>(v11_), static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), + static_cast<T>(v16_), static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), static_cast<T>(v25_), + static_cast<T>(v26_), static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), static_cast<T>(v30_), + static_cast<T>(v31_), static_cast<T>(v32_), static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), + static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), static_cast<T>(v39_), static_cast<T>(v40_), + static_cast<T>(v41_), static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), static_cast<T>(v45_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray45& other); @@ -13253,54 +14604,87 @@ class ValueArray45 { const T45 v45_; }; -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> -class ValueArray46 { - public: - ValueArray46(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) : v1_(v1), v2_(v2), v3_(v3), - v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), - v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), - v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), - v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), - v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), - v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), - v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46) {} +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> +class ValueArray46 +{ +public: + ValueArray46(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, + T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + , v28_(v28) + , v29_(v29) + , v30_(v30) + , v31_(v31) + , v32_(v32) + , v33_(v33) + , v34_(v34) + , v35_(v35) + , v36_(v36) + , v37_(v37) + , v38_(v38) + , v39_(v39) + , v40_(v40) + , v41_(v41) + , v42_(v42) + , v43_(v43) + , v44_(v44) + , v45_(v45) + , v46_(v46) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), - static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), - static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), - static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), - static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), - static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), - static_cast<T>(v45_), static_cast<T>(v46_)}; + operator ParamGenerator<T>() const + { + const T array[] = { + static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), + static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), static_cast<T>(v9_), static_cast<T>(v10_), + static_cast<T>(v11_), static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), + static_cast<T>(v16_), static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), static_cast<T>(v25_), + static_cast<T>(v26_), static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), static_cast<T>(v30_), + static_cast<T>(v31_), static_cast<T>(v32_), static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), + static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), static_cast<T>(v39_), static_cast<T>(v40_), + static_cast<T>(v41_), static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), static_cast<T>(v45_), + static_cast<T>(v46_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray46& other); @@ -13352,55 +14736,89 @@ class ValueArray46 { const T46 v46_; }; -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> -class ValueArray47 { - public: - ValueArray47(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) : v1_(v1), v2_(v2), - v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), - v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), - v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), - v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), - v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), - v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), - v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46), - v47_(v47) {} +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> +class ValueArray47 +{ +public: + ValueArray47(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, + T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, + T47 v47) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + , v28_(v28) + , v29_(v29) + , v30_(v30) + , v31_(v31) + , v32_(v32) + , v33_(v33) + , v34_(v34) + , v35_(v35) + , v36_(v36) + , v37_(v37) + , v38_(v38) + , v39_(v39) + , v40_(v40) + , v41_(v41) + , v42_(v42) + , v43_(v43) + , v44_(v44) + , v45_(v45) + , v46_(v46) + , v47_(v47) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), - static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), - static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), - static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), - static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), - static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), - static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_)}; + operator ParamGenerator<T>() const + { + const T array[] = { + static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), + static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), static_cast<T>(v9_), static_cast<T>(v10_), + static_cast<T>(v11_), static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), + static_cast<T>(v16_), static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), static_cast<T>(v25_), + static_cast<T>(v26_), static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), static_cast<T>(v30_), + static_cast<T>(v31_), static_cast<T>(v32_), static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), + static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), static_cast<T>(v39_), static_cast<T>(v40_), + static_cast<T>(v41_), static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), static_cast<T>(v45_), + static_cast<T>(v46_), static_cast<T>(v47_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray47& other); @@ -13453,56 +14871,90 @@ class ValueArray47 { const T47 v47_; }; -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> -class ValueArray48 { - public: - ValueArray48(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) : v1_(v1), - v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), - v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), - v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), - v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), - v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), - v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), - v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), - v46_(v46), v47_(v47), v48_(v48) {} +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> +class ValueArray48 +{ +public: + ValueArray48(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, + T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, + T47 v47, T48 v48) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + , v28_(v28) + , v29_(v29) + , v30_(v30) + , v31_(v31) + , v32_(v32) + , v33_(v33) + , v34_(v34) + , v35_(v35) + , v36_(v36) + , v37_(v37) + , v38_(v38) + , v39_(v39) + , v40_(v40) + , v41_(v41) + , v42_(v42) + , v43_(v43) + , v44_(v44) + , v45_(v45) + , v46_(v46) + , v47_(v47) + , v48_(v48) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), - static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), - static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), - static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), - static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), - static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), - static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_), - static_cast<T>(v48_)}; + operator ParamGenerator<T>() const + { + const T array[] = { + static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), + static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), static_cast<T>(v9_), static_cast<T>(v10_), + static_cast<T>(v11_), static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), + static_cast<T>(v16_), static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), static_cast<T>(v25_), + static_cast<T>(v26_), static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), static_cast<T>(v30_), + static_cast<T>(v31_), static_cast<T>(v32_), static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), + static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), static_cast<T>(v39_), static_cast<T>(v40_), + static_cast<T>(v41_), static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), static_cast<T>(v45_), + static_cast<T>(v46_), static_cast<T>(v47_), static_cast<T>(v48_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray48& other); @@ -13556,56 +15008,91 @@ class ValueArray48 { const T48 v48_; }; -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> -class ValueArray49 { - public: - ValueArray49(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, - T49 v49) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), - v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), - v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), - v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), - v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), - v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), - v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49) {} +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> +class ValueArray49 +{ +public: + ValueArray49(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, + T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, + T47 v47, T48 v48, T49 v49) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + , v28_(v28) + , v29_(v29) + , v30_(v30) + , v31_(v31) + , v32_(v32) + , v33_(v33) + , v34_(v34) + , v35_(v35) + , v36_(v36) + , v37_(v37) + , v38_(v38) + , v39_(v39) + , v40_(v40) + , v41_(v41) + , v42_(v42) + , v43_(v43) + , v44_(v44) + , v45_(v45) + , v46_(v46) + , v47_(v47) + , v48_(v48) + , v49_(v49) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), - static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), - static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), - static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), - static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), - static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), - static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_), - static_cast<T>(v48_), static_cast<T>(v49_)}; + operator ParamGenerator<T>() const + { + const T array[] = { + static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), + static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), static_cast<T>(v9_), static_cast<T>(v10_), + static_cast<T>(v11_), static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), + static_cast<T>(v16_), static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), static_cast<T>(v25_), + static_cast<T>(v26_), static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), static_cast<T>(v30_), + static_cast<T>(v31_), static_cast<T>(v32_), static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), + static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), static_cast<T>(v39_), static_cast<T>(v40_), + static_cast<T>(v41_), static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), static_cast<T>(v45_), + static_cast<T>(v46_), static_cast<T>(v47_), static_cast<T>(v48_), static_cast<T>(v49_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray49& other); @@ -13660,56 +15147,92 @@ class ValueArray49 { const T49 v49_; }; -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> -class ValueArray50 { - public: - ValueArray50(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49, - T50 v50) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), - v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), - v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), - v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), - v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), - v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), - v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), - v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49), v50_(v50) {} +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> +class ValueArray50 +{ +public: + ValueArray50(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, + T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, + T47 v47, T48 v48, T49 v49, T50 v50) + : v1_(v1) + , v2_(v2) + , v3_(v3) + , v4_(v4) + , v5_(v5) + , v6_(v6) + , v7_(v7) + , v8_(v8) + , v9_(v9) + , v10_(v10) + , v11_(v11) + , v12_(v12) + , v13_(v13) + , v14_(v14) + , v15_(v15) + , v16_(v16) + , v17_(v17) + , v18_(v18) + , v19_(v19) + , v20_(v20) + , v21_(v21) + , v22_(v22) + , v23_(v23) + , v24_(v24) + , v25_(v25) + , v26_(v26) + , v27_(v27) + , v28_(v28) + , v29_(v29) + , v30_(v30) + , v31_(v31) + , v32_(v32) + , v33_(v33) + , v34_(v34) + , v35_(v35) + , v36_(v36) + , v37_(v37) + , v38_(v38) + , v39_(v39) + , v40_(v40) + , v41_(v41) + , v42_(v42) + , v43_(v43) + , v44_(v44) + , v45_(v45) + , v46_(v46) + , v47_(v47) + , v48_(v48) + , v49_(v49) + , v50_(v50) + { + } template <typename T> - operator ParamGenerator<T>() const { - const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_), - static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), - static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), - static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_), - static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), - static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_), - static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), - static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), - static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_), - static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), - static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_), - static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), - static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), - static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_), - static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), - static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_), - static_cast<T>(v48_), static_cast<T>(v49_), static_cast<T>(v50_)}; + operator ParamGenerator<T>() const + { + const T array[] = { + static_cast<T>(v1_), static_cast<T>(v2_), static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_), + static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_), static_cast<T>(v9_), static_cast<T>(v10_), + static_cast<T>(v11_), static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_), static_cast<T>(v15_), + static_cast<T>(v16_), static_cast<T>(v17_), static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_), + static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_), static_cast<T>(v24_), static_cast<T>(v25_), + static_cast<T>(v26_), static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_), static_cast<T>(v30_), + static_cast<T>(v31_), static_cast<T>(v32_), static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_), + static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_), static_cast<T>(v39_), static_cast<T>(v40_), + static_cast<T>(v41_), static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_), static_cast<T>(v45_), + static_cast<T>(v46_), static_cast<T>(v47_), static_cast<T>(v48_), static_cast<T>(v49_), static_cast<T>(v50_)}; return ValuesIn(array); } - private: +private: // No implementation - assignment is unsupported. void operator=(const ValueArray50& other); @@ -13765,51 +15288,65 @@ class ValueArray50 { const T50 v50_; }; -# if GTEST_HAS_COMBINE +#if GTEST_HAS_COMBINE // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Generates values from the Cartesian product of values produced // by the argument generators. // template <typename T1, typename T2> -class CartesianProductGenerator2 - : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2> > { - public: +class CartesianProductGenerator2 : public ParamGeneratorInterface<::std::tr1::tuple<T1, T2>> +{ +public: typedef ::std::tr1::tuple<T1, T2> ParamType; - CartesianProductGenerator2(const ParamGenerator<T1>& g1, - const ParamGenerator<T2>& g2) - : g1_(g1), g2_(g2) {} - virtual ~CartesianProductGenerator2() {} + CartesianProductGenerator2(const ParamGenerator<T1>& g1, const ParamGenerator<T2>& g2) + : g1_(g1) + , g2_(g2) + { + } + virtual ~CartesianProductGenerator2() + { + } - virtual ParamIteratorInterface<ParamType>* Begin() const { + virtual ParamIteratorInterface<ParamType>* Begin() const + { return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin()); } - virtual ParamIteratorInterface<ParamType>* End() const { + virtual ParamIteratorInterface<ParamType>* End() const + { return new Iterator(this, g1_, g1_.end(), g2_, g2_.end()); } - private: - class Iterator : public ParamIteratorInterface<ParamType> { - public: - Iterator(const ParamGeneratorInterface<ParamType>* base, - const ParamGenerator<T1>& g1, - const typename ParamGenerator<T1>::iterator& current1, - const ParamGenerator<T2>& g2, - const typename ParamGenerator<T2>::iterator& current2) - : base_(base), - begin1_(g1.begin()), end1_(g1.end()), current1_(current1), - begin2_(g2.begin()), end2_(g2.end()), current2_(current2) { +private: + class Iterator : public ParamIteratorInterface<ParamType> + { + public: + Iterator(const ParamGeneratorInterface<ParamType>* base, const ParamGenerator<T1>& g1, + const typename ParamGenerator<T1>::iterator& current1, const ParamGenerator<T2>& g2, + const typename ParamGenerator<T2>::iterator& current2) + : base_(base) + , begin1_(g1.begin()) + , end1_(g1.end()) + , current1_(current1) + , begin2_(g2.begin()) + , end2_(g2.end()) + , current2_(current2) + { ComputeCurrentValue(); } - virtual ~Iterator() {} + virtual ~Iterator() + { + } - virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { + virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const + { return base_; } // Advance should not be called on beyond-of-range iterators // so no component iterators must be beyond end of range, either. - virtual void Advance() { + virtual void Advance() + { assert(!AtEnd()); ++current2_; if (current2_ == end2_) { @@ -13818,49 +15355,51 @@ class CartesianProductGenerator2 } ComputeCurrentValue(); } - virtual ParamIteratorInterface<ParamType>* Clone() const { + virtual ParamIteratorInterface<ParamType>* Clone() const + { return new Iterator(*this); } - virtual const ParamType* Current() const { return ¤t_value_; } - virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { + virtual const ParamType* Current() const + { + return ¤t_value_; + } + virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const + { // Having the same base generator guarantees that the other // iterator is of the same type and we can downcast. - GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) - << "The program attempted to compare iterators " - << "from different generators." << std::endl; - const Iterator* typed_other = - CheckedDowncastToActualType<const Iterator>(&other); + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = CheckedDowncastToActualType<const Iterator>(&other); // We must report iterators equal if they both point beyond their // respective ranges. That can happen in a variety of fashions, // so we have to consult AtEnd(). - return (AtEnd() && typed_other->AtEnd()) || - ( - current1_ == typed_other->current1_ && - current2_ == typed_other->current2_); + return (AtEnd() && typed_other->AtEnd()) + || (current1_ == typed_other->current1_ && current2_ == typed_other->current2_); } - private: + private: Iterator(const Iterator& other) - : base_(other.base_), - begin1_(other.begin1_), - end1_(other.end1_), - current1_(other.current1_), - begin2_(other.begin2_), - end2_(other.end2_), - current2_(other.current2_) { + : base_(other.base_) + , begin1_(other.begin1_) + , end1_(other.end1_) + , current1_(other.current1_) + , begin2_(other.begin2_) + , end2_(other.end2_) + , current2_(other.current2_) + { ComputeCurrentValue(); } - void ComputeCurrentValue() { + void ComputeCurrentValue() + { if (!AtEnd()) current_value_ = ParamType(*current1_, *current2_); } - bool AtEnd() const { + bool AtEnd() const + { // We must report iterator past the end of the range when either of the // component iterators has reached the end of its range. - return - current1_ == end1_ || - current2_ == end2_; + return current1_ == end1_ || current2_ == end2_; } // No implementation - assignment is unsupported. @@ -13876,59 +15415,74 @@ class CartesianProductGenerator2 const typename ParamGenerator<T2>::iterator end2_; typename ParamGenerator<T2>::iterator current2_; ParamType current_value_; - }; // class CartesianProductGenerator2::Iterator + }; // class CartesianProductGenerator2::Iterator // No implementation - assignment is unsupported. void operator=(const CartesianProductGenerator2& other); const ParamGenerator<T1> g1_; const ParamGenerator<T2> g2_; -}; // class CartesianProductGenerator2 +}; // class CartesianProductGenerator2 template <typename T1, typename T2, typename T3> -class CartesianProductGenerator3 - : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3> > { - public: +class CartesianProductGenerator3 : public ParamGeneratorInterface<::std::tr1::tuple<T1, T2, T3>> +{ +public: typedef ::std::tr1::tuple<T1, T2, T3> ParamType; - CartesianProductGenerator3(const ParamGenerator<T1>& g1, - const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3) - : g1_(g1), g2_(g2), g3_(g3) {} - virtual ~CartesianProductGenerator3() {} + CartesianProductGenerator3(const ParamGenerator<T1>& g1, const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3) + : g1_(g1) + , g2_(g2) + , g3_(g3) + { + } + virtual ~CartesianProductGenerator3() + { + } - virtual ParamIteratorInterface<ParamType>* Begin() const { - return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, - g3_.begin()); + virtual ParamIteratorInterface<ParamType>* Begin() const + { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, g3_.begin()); } - virtual ParamIteratorInterface<ParamType>* End() const { + virtual ParamIteratorInterface<ParamType>* End() const + { return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end()); } - private: - class Iterator : public ParamIteratorInterface<ParamType> { - public: - Iterator(const ParamGeneratorInterface<ParamType>* base, - const ParamGenerator<T1>& g1, - const typename ParamGenerator<T1>::iterator& current1, - const ParamGenerator<T2>& g2, - const typename ParamGenerator<T2>::iterator& current2, - const ParamGenerator<T3>& g3, - const typename ParamGenerator<T3>::iterator& current3) - : base_(base), - begin1_(g1.begin()), end1_(g1.end()), current1_(current1), - begin2_(g2.begin()), end2_(g2.end()), current2_(current2), - begin3_(g3.begin()), end3_(g3.end()), current3_(current3) { +private: + class Iterator : public ParamIteratorInterface<ParamType> + { + public: + Iterator(const ParamGeneratorInterface<ParamType>* base, const ParamGenerator<T1>& g1, + const typename ParamGenerator<T1>::iterator& current1, const ParamGenerator<T2>& g2, + const typename ParamGenerator<T2>::iterator& current2, const ParamGenerator<T3>& g3, + const typename ParamGenerator<T3>::iterator& current3) + : base_(base) + , begin1_(g1.begin()) + , end1_(g1.end()) + , current1_(current1) + , begin2_(g2.begin()) + , end2_(g2.end()) + , current2_(current2) + , begin3_(g3.begin()) + , end3_(g3.end()) + , current3_(current3) + { ComputeCurrentValue(); } - virtual ~Iterator() {} + virtual ~Iterator() + { + } - virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { + virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const + { return base_; } // Advance should not be called on beyond-of-range iterators // so no component iterators must be beyond end of range, either. - virtual void Advance() { + virtual void Advance() + { assert(!AtEnd()); ++current3_; if (current3_ == end3_) { @@ -13941,54 +15495,55 @@ class CartesianProductGenerator3 } ComputeCurrentValue(); } - virtual ParamIteratorInterface<ParamType>* Clone() const { + virtual ParamIteratorInterface<ParamType>* Clone() const + { return new Iterator(*this); } - virtual const ParamType* Current() const { return ¤t_value_; } - virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { + virtual const ParamType* Current() const + { + return ¤t_value_; + } + virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const + { // Having the same base generator guarantees that the other // iterator is of the same type and we can downcast. - GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) - << "The program attempted to compare iterators " - << "from different generators." << std::endl; - const Iterator* typed_other = - CheckedDowncastToActualType<const Iterator>(&other); + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = CheckedDowncastToActualType<const Iterator>(&other); // We must report iterators equal if they both point beyond their // respective ranges. That can happen in a variety of fashions, // so we have to consult AtEnd(). - return (AtEnd() && typed_other->AtEnd()) || - ( - current1_ == typed_other->current1_ && - current2_ == typed_other->current2_ && - current3_ == typed_other->current3_); + return (AtEnd() && typed_other->AtEnd()) + || (current1_ == typed_other->current1_ && current2_ == typed_other->current2_ + && current3_ == typed_other->current3_); } - private: + private: Iterator(const Iterator& other) - : base_(other.base_), - begin1_(other.begin1_), - end1_(other.end1_), - current1_(other.current1_), - begin2_(other.begin2_), - end2_(other.end2_), - current2_(other.current2_), - begin3_(other.begin3_), - end3_(other.end3_), - current3_(other.current3_) { + : base_(other.base_) + , begin1_(other.begin1_) + , end1_(other.end1_) + , current1_(other.current1_) + , begin2_(other.begin2_) + , end2_(other.end2_) + , current2_(other.current2_) + , begin3_(other.begin3_) + , end3_(other.end3_) + , current3_(other.current3_) + { ComputeCurrentValue(); } - void ComputeCurrentValue() { + void ComputeCurrentValue() + { if (!AtEnd()) current_value_ = ParamType(*current1_, *current2_, *current3_); } - bool AtEnd() const { + bool AtEnd() const + { // We must report iterator past the end of the range when either of the // component iterators has reached the end of its range. - return - current1_ == end1_ || - current2_ == end2_ || - current3_ == end3_; + return current1_ == end1_ || current2_ == end2_ || current3_ == end3_; } // No implementation - assignment is unsupported. @@ -14007,7 +15562,7 @@ class CartesianProductGenerator3 const typename ParamGenerator<T3>::iterator end3_; typename ParamGenerator<T3>::iterator current3_; ParamType current_value_; - }; // class CartesianProductGenerator3::Iterator + }; // class CartesianProductGenerator3::Iterator // No implementation - assignment is unsupported. void operator=(const CartesianProductGenerator3& other); @@ -14015,57 +15570,73 @@ class CartesianProductGenerator3 const ParamGenerator<T1> g1_; const ParamGenerator<T2> g2_; const ParamGenerator<T3> g3_; -}; // class CartesianProductGenerator3 +}; // class CartesianProductGenerator3 template <typename T1, typename T2, typename T3, typename T4> -class CartesianProductGenerator4 - : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4> > { - public: +class CartesianProductGenerator4 : public ParamGeneratorInterface<::std::tr1::tuple<T1, T2, T3, T4>> +{ +public: typedef ::std::tr1::tuple<T1, T2, T3, T4> ParamType; - CartesianProductGenerator4(const ParamGenerator<T1>& g1, - const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, - const ParamGenerator<T4>& g4) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {} - virtual ~CartesianProductGenerator4() {} - - virtual ParamIteratorInterface<ParamType>* Begin() const { - return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, - g3_.begin(), g4_, g4_.begin()); - } - virtual ParamIteratorInterface<ParamType>* End() const { - return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), - g4_, g4_.end()); - } - - private: - class Iterator : public ParamIteratorInterface<ParamType> { - public: - Iterator(const ParamGeneratorInterface<ParamType>* base, - const ParamGenerator<T1>& g1, - const typename ParamGenerator<T1>::iterator& current1, - const ParamGenerator<T2>& g2, - const typename ParamGenerator<T2>::iterator& current2, - const ParamGenerator<T3>& g3, - const typename ParamGenerator<T3>::iterator& current3, - const ParamGenerator<T4>& g4, - const typename ParamGenerator<T4>::iterator& current4) - : base_(base), - begin1_(g1.begin()), end1_(g1.end()), current1_(current1), - begin2_(g2.begin()), end2_(g2.end()), current2_(current2), - begin3_(g3.begin()), end3_(g3.end()), current3_(current3), - begin4_(g4.begin()), end4_(g4.end()), current4_(current4) { + CartesianProductGenerator4(const ParamGenerator<T1>& g1, const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, + const ParamGenerator<T4>& g4) + : g1_(g1) + , g2_(g2) + , g3_(g3) + , g4_(g4) + { + } + virtual ~CartesianProductGenerator4() + { + } + + virtual ParamIteratorInterface<ParamType>* Begin() const + { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, g3_.begin(), g4_, g4_.begin()); + } + virtual ParamIteratorInterface<ParamType>* End() const + { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), g4_, g4_.end()); + } + +private: + class Iterator : public ParamIteratorInterface<ParamType> + { + public: + Iterator(const ParamGeneratorInterface<ParamType>* base, const ParamGenerator<T1>& g1, + const typename ParamGenerator<T1>::iterator& current1, const ParamGenerator<T2>& g2, + const typename ParamGenerator<T2>::iterator& current2, const ParamGenerator<T3>& g3, + const typename ParamGenerator<T3>::iterator& current3, const ParamGenerator<T4>& g4, + const typename ParamGenerator<T4>::iterator& current4) + : base_(base) + , begin1_(g1.begin()) + , end1_(g1.end()) + , current1_(current1) + , begin2_(g2.begin()) + , end2_(g2.end()) + , current2_(current2) + , begin3_(g3.begin()) + , end3_(g3.end()) + , current3_(current3) + , begin4_(g4.begin()) + , end4_(g4.end()) + , current4_(current4) + { ComputeCurrentValue(); } - virtual ~Iterator() {} + virtual ~Iterator() + { + } - virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { + virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const + { return base_; } // Advance should not be called on beyond-of-range iterators // so no component iterators must be beyond end of range, either. - virtual void Advance() { + virtual void Advance() + { assert(!AtEnd()); ++current4_; if (current4_ == end4_) { @@ -14082,60 +15653,59 @@ class CartesianProductGenerator4 } ComputeCurrentValue(); } - virtual ParamIteratorInterface<ParamType>* Clone() const { + virtual ParamIteratorInterface<ParamType>* Clone() const + { return new Iterator(*this); } - virtual const ParamType* Current() const { return ¤t_value_; } - virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { + virtual const ParamType* Current() const + { + return ¤t_value_; + } + virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const + { // Having the same base generator guarantees that the other // iterator is of the same type and we can downcast. - GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) - << "The program attempted to compare iterators " - << "from different generators." << std::endl; - const Iterator* typed_other = - CheckedDowncastToActualType<const Iterator>(&other); + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = CheckedDowncastToActualType<const Iterator>(&other); // We must report iterators equal if they both point beyond their // respective ranges. That can happen in a variety of fashions, // so we have to consult AtEnd(). - return (AtEnd() && typed_other->AtEnd()) || - ( - current1_ == typed_other->current1_ && - current2_ == typed_other->current2_ && - current3_ == typed_other->current3_ && - current4_ == typed_other->current4_); + return (AtEnd() && typed_other->AtEnd()) + || (current1_ == typed_other->current1_ && current2_ == typed_other->current2_ + && current3_ == typed_other->current3_ + && current4_ == typed_other->current4_); } - private: + private: Iterator(const Iterator& other) - : base_(other.base_), - begin1_(other.begin1_), - end1_(other.end1_), - current1_(other.current1_), - begin2_(other.begin2_), - end2_(other.end2_), - current2_(other.current2_), - begin3_(other.begin3_), - end3_(other.end3_), - current3_(other.current3_), - begin4_(other.begin4_), - end4_(other.end4_), - current4_(other.current4_) { + : base_(other.base_) + , begin1_(other.begin1_) + , end1_(other.end1_) + , current1_(other.current1_) + , begin2_(other.begin2_) + , end2_(other.end2_) + , current2_(other.current2_) + , begin3_(other.begin3_) + , end3_(other.end3_) + , current3_(other.current3_) + , begin4_(other.begin4_) + , end4_(other.end4_) + , current4_(other.current4_) + { ComputeCurrentValue(); } - void ComputeCurrentValue() { + void ComputeCurrentValue() + { if (!AtEnd()) - current_value_ = ParamType(*current1_, *current2_, *current3_, - *current4_); + current_value_ = ParamType(*current1_, *current2_, *current3_, *current4_); } - bool AtEnd() const { + bool AtEnd() const + { // We must report iterator past the end of the range when either of the // component iterators has reached the end of its range. - return - current1_ == end1_ || - current2_ == end2_ || - current3_ == end3_ || - current4_ == end4_; + return current1_ == end1_ || current2_ == end2_ || current3_ == end3_ || current4_ == end4_; } // No implementation - assignment is unsupported. @@ -14157,7 +15727,7 @@ class CartesianProductGenerator4 const typename ParamGenerator<T4>::iterator end4_; typename ParamGenerator<T4>::iterator current4_; ParamType current_value_; - }; // class CartesianProductGenerator4::Iterator + }; // class CartesianProductGenerator4::Iterator // No implementation - assignment is unsupported. void operator=(const CartesianProductGenerator4& other); @@ -14166,60 +15736,78 @@ class CartesianProductGenerator4 const ParamGenerator<T2> g2_; const ParamGenerator<T3> g3_; const ParamGenerator<T4> g4_; -}; // class CartesianProductGenerator4 +}; // class CartesianProductGenerator4 template <typename T1, typename T2, typename T3, typename T4, typename T5> -class CartesianProductGenerator5 - : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5> > { - public: +class CartesianProductGenerator5 : public ParamGeneratorInterface<::std::tr1::tuple<T1, T2, T3, T4, T5>> +{ +public: typedef ::std::tr1::tuple<T1, T2, T3, T4, T5> ParamType; - CartesianProductGenerator5(const ParamGenerator<T1>& g1, - const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, - const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {} - virtual ~CartesianProductGenerator5() {} - - virtual ParamIteratorInterface<ParamType>* Begin() const { - return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, - g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin()); - } - virtual ParamIteratorInterface<ParamType>* End() const { - return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), - g4_, g4_.end(), g5_, g5_.end()); - } - - private: - class Iterator : public ParamIteratorInterface<ParamType> { - public: - Iterator(const ParamGeneratorInterface<ParamType>* base, - const ParamGenerator<T1>& g1, - const typename ParamGenerator<T1>::iterator& current1, - const ParamGenerator<T2>& g2, - const typename ParamGenerator<T2>::iterator& current2, - const ParamGenerator<T3>& g3, - const typename ParamGenerator<T3>::iterator& current3, - const ParamGenerator<T4>& g4, - const typename ParamGenerator<T4>::iterator& current4, - const ParamGenerator<T5>& g5, - const typename ParamGenerator<T5>::iterator& current5) - : base_(base), - begin1_(g1.begin()), end1_(g1.end()), current1_(current1), - begin2_(g2.begin()), end2_(g2.end()), current2_(current2), - begin3_(g3.begin()), end3_(g3.end()), current3_(current3), - begin4_(g4.begin()), end4_(g4.end()), current4_(current4), - begin5_(g5.begin()), end5_(g5.end()), current5_(current5) { + CartesianProductGenerator5(const ParamGenerator<T1>& g1, const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, + const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5) + : g1_(g1) + , g2_(g2) + , g3_(g3) + , g4_(g4) + , g5_(g5) + { + } + virtual ~CartesianProductGenerator5() + { + } + + virtual ParamIteratorInterface<ParamType>* Begin() const + { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin()); + } + virtual ParamIteratorInterface<ParamType>* End() const + { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), g4_, g4_.end(), g5_, g5_.end()); + } + +private: + class Iterator : public ParamIteratorInterface<ParamType> + { + public: + Iterator(const ParamGeneratorInterface<ParamType>* base, const ParamGenerator<T1>& g1, + const typename ParamGenerator<T1>::iterator& current1, const ParamGenerator<T2>& g2, + const typename ParamGenerator<T2>::iterator& current2, const ParamGenerator<T3>& g3, + const typename ParamGenerator<T3>::iterator& current3, const ParamGenerator<T4>& g4, + const typename ParamGenerator<T4>::iterator& current4, const ParamGenerator<T5>& g5, + const typename ParamGenerator<T5>::iterator& current5) + : base_(base) + , begin1_(g1.begin()) + , end1_(g1.end()) + , current1_(current1) + , begin2_(g2.begin()) + , end2_(g2.end()) + , current2_(current2) + , begin3_(g3.begin()) + , end3_(g3.end()) + , current3_(current3) + , begin4_(g4.begin()) + , end4_(g4.end()) + , current4_(current4) + , begin5_(g5.begin()) + , end5_(g5.end()) + , current5_(current5) + { ComputeCurrentValue(); } - virtual ~Iterator() {} + virtual ~Iterator() + { + } - virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { + virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const + { return base_; } // Advance should not be called on beyond-of-range iterators // so no component iterators must be beyond end of range, either. - virtual void Advance() { + virtual void Advance() + { assert(!AtEnd()); ++current5_; if (current5_ == end5_) { @@ -14240,65 +15828,63 @@ class CartesianProductGenerator5 } ComputeCurrentValue(); } - virtual ParamIteratorInterface<ParamType>* Clone() const { + virtual ParamIteratorInterface<ParamType>* Clone() const + { return new Iterator(*this); } - virtual const ParamType* Current() const { return ¤t_value_; } - virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { + virtual const ParamType* Current() const + { + return ¤t_value_; + } + virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const + { // Having the same base generator guarantees that the other // iterator is of the same type and we can downcast. - GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) - << "The program attempted to compare iterators " - << "from different generators." << std::endl; - const Iterator* typed_other = - CheckedDowncastToActualType<const Iterator>(&other); + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = CheckedDowncastToActualType<const Iterator>(&other); // We must report iterators equal if they both point beyond their // respective ranges. That can happen in a variety of fashions, // so we have to consult AtEnd(). - return (AtEnd() && typed_other->AtEnd()) || - ( - current1_ == typed_other->current1_ && - current2_ == typed_other->current2_ && - current3_ == typed_other->current3_ && - current4_ == typed_other->current4_ && - current5_ == typed_other->current5_); + return (AtEnd() && typed_other->AtEnd()) + || (current1_ == typed_other->current1_ && current2_ == typed_other->current2_ + && current3_ == typed_other->current3_ + && current4_ == typed_other->current4_ + && current5_ == typed_other->current5_); } - private: + private: Iterator(const Iterator& other) - : base_(other.base_), - begin1_(other.begin1_), - end1_(other.end1_), - current1_(other.current1_), - begin2_(other.begin2_), - end2_(other.end2_), - current2_(other.current2_), - begin3_(other.begin3_), - end3_(other.end3_), - current3_(other.current3_), - begin4_(other.begin4_), - end4_(other.end4_), - current4_(other.current4_), - begin5_(other.begin5_), - end5_(other.end5_), - current5_(other.current5_) { + : base_(other.base_) + , begin1_(other.begin1_) + , end1_(other.end1_) + , current1_(other.current1_) + , begin2_(other.begin2_) + , end2_(other.end2_) + , current2_(other.current2_) + , begin3_(other.begin3_) + , end3_(other.end3_) + , current3_(other.current3_) + , begin4_(other.begin4_) + , end4_(other.end4_) + , current4_(other.current4_) + , begin5_(other.begin5_) + , end5_(other.end5_) + , current5_(other.current5_) + { ComputeCurrentValue(); } - void ComputeCurrentValue() { + void ComputeCurrentValue() + { if (!AtEnd()) - current_value_ = ParamType(*current1_, *current2_, *current3_, - *current4_, *current5_); + current_value_ = ParamType(*current1_, *current2_, *current3_, *current4_, *current5_); } - bool AtEnd() const { + bool AtEnd() const + { // We must report iterator past the end of the range when either of the // component iterators has reached the end of its range. - return - current1_ == end1_ || - current2_ == end2_ || - current3_ == end3_ || - current4_ == end4_ || - current5_ == end5_; + return current1_ == end1_ || current2_ == end2_ || current3_ == end3_ || current4_ == end4_ || current5_ == end5_; } // No implementation - assignment is unsupported. @@ -14323,7 +15909,7 @@ class CartesianProductGenerator5 const typename ParamGenerator<T5>::iterator end5_; typename ParamGenerator<T5>::iterator current5_; ParamType current_value_; - }; // class CartesianProductGenerator5::Iterator + }; // class CartesianProductGenerator5::Iterator // No implementation - assignment is unsupported. void operator=(const CartesianProductGenerator5& other); @@ -14333,66 +15919,96 @@ class CartesianProductGenerator5 const ParamGenerator<T3> g3_; const ParamGenerator<T4> g4_; const ParamGenerator<T5> g5_; -}; // class CartesianProductGenerator5 +}; // class CartesianProductGenerator5 -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6> -class CartesianProductGenerator6 - : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, - T6> > { - public: +template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6> +class CartesianProductGenerator6 : public ParamGeneratorInterface<::std::tr1::tuple<T1, T2, T3, T4, T5, T6>> +{ +public: typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> ParamType; - CartesianProductGenerator6(const ParamGenerator<T1>& g1, - const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, - const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, - const ParamGenerator<T6>& g6) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {} - virtual ~CartesianProductGenerator6() {} - - virtual ParamIteratorInterface<ParamType>* Begin() const { - return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, - g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin()); - } - virtual ParamIteratorInterface<ParamType>* End() const { - return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), - g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end()); - } - - private: - class Iterator : public ParamIteratorInterface<ParamType> { - public: - Iterator(const ParamGeneratorInterface<ParamType>* base, - const ParamGenerator<T1>& g1, - const typename ParamGenerator<T1>::iterator& current1, - const ParamGenerator<T2>& g2, - const typename ParamGenerator<T2>::iterator& current2, - const ParamGenerator<T3>& g3, - const typename ParamGenerator<T3>::iterator& current3, - const ParamGenerator<T4>& g4, - const typename ParamGenerator<T4>::iterator& current4, - const ParamGenerator<T5>& g5, - const typename ParamGenerator<T5>::iterator& current5, - const ParamGenerator<T6>& g6, - const typename ParamGenerator<T6>::iterator& current6) - : base_(base), - begin1_(g1.begin()), end1_(g1.end()), current1_(current1), - begin2_(g2.begin()), end2_(g2.end()), current2_(current2), - begin3_(g3.begin()), end3_(g3.end()), current3_(current3), - begin4_(g4.begin()), end4_(g4.end()), current4_(current4), - begin5_(g5.begin()), end5_(g5.end()), current5_(current5), - begin6_(g6.begin()), end6_(g6.end()), current6_(current6) { + CartesianProductGenerator6(const ParamGenerator<T1>& g1, const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, + const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, const ParamGenerator<T6>& g6) + : g1_(g1) + , g2_(g2) + , g3_(g3) + , g4_(g4) + , g5_(g5) + , g6_(g6) + { + } + virtual ~CartesianProductGenerator6() + { + } + + virtual ParamIteratorInterface<ParamType>* Begin() const + { + return new Iterator(this, + g1_, + g1_.begin(), + g2_, + g2_.begin(), + g3_, + g3_.begin(), + g4_, + g4_.begin(), + g5_, + g5_.begin(), + g6_, + g6_.begin()); + } + virtual ParamIteratorInterface<ParamType>* End() const + { + return new Iterator( + this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end()); + } + +private: + class Iterator : public ParamIteratorInterface<ParamType> + { + public: + Iterator(const ParamGeneratorInterface<ParamType>* base, const ParamGenerator<T1>& g1, + const typename ParamGenerator<T1>::iterator& current1, const ParamGenerator<T2>& g2, + const typename ParamGenerator<T2>::iterator& current2, const ParamGenerator<T3>& g3, + const typename ParamGenerator<T3>::iterator& current3, const ParamGenerator<T4>& g4, + const typename ParamGenerator<T4>::iterator& current4, const ParamGenerator<T5>& g5, + const typename ParamGenerator<T5>::iterator& current5, const ParamGenerator<T6>& g6, + const typename ParamGenerator<T6>::iterator& current6) + : base_(base) + , begin1_(g1.begin()) + , end1_(g1.end()) + , current1_(current1) + , begin2_(g2.begin()) + , end2_(g2.end()) + , current2_(current2) + , begin3_(g3.begin()) + , end3_(g3.end()) + , current3_(current3) + , begin4_(g4.begin()) + , end4_(g4.end()) + , current4_(current4) + , begin5_(g5.begin()) + , end5_(g5.end()) + , current5_(current5) + , begin6_(g6.begin()) + , end6_(g6.end()) + , current6_(current6) + { ComputeCurrentValue(); } - virtual ~Iterator() {} + virtual ~Iterator() + { + } - virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { + virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const + { return base_; } // Advance should not be called on beyond-of-range iterators // so no component iterators must be beyond end of range, either. - virtual void Advance() { + virtual void Advance() + { assert(!AtEnd()); ++current6_; if (current6_ == end6_) { @@ -14417,70 +16033,68 @@ class CartesianProductGenerator6 } ComputeCurrentValue(); } - virtual ParamIteratorInterface<ParamType>* Clone() const { + virtual ParamIteratorInterface<ParamType>* Clone() const + { return new Iterator(*this); } - virtual const ParamType* Current() const { return ¤t_value_; } - virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { + virtual const ParamType* Current() const + { + return ¤t_value_; + } + virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const + { // Having the same base generator guarantees that the other // iterator is of the same type and we can downcast. - GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) - << "The program attempted to compare iterators " - << "from different generators." << std::endl; - const Iterator* typed_other = - CheckedDowncastToActualType<const Iterator>(&other); + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = CheckedDowncastToActualType<const Iterator>(&other); // We must report iterators equal if they both point beyond their // respective ranges. That can happen in a variety of fashions, // so we have to consult AtEnd(). - return (AtEnd() && typed_other->AtEnd()) || - ( - current1_ == typed_other->current1_ && - current2_ == typed_other->current2_ && - current3_ == typed_other->current3_ && - current4_ == typed_other->current4_ && - current5_ == typed_other->current5_ && - current6_ == typed_other->current6_); + return (AtEnd() && typed_other->AtEnd()) + || (current1_ == typed_other->current1_ && current2_ == typed_other->current2_ + && current3_ == typed_other->current3_ + && current4_ == typed_other->current4_ + && current5_ == typed_other->current5_ + && current6_ == typed_other->current6_); } - private: + private: Iterator(const Iterator& other) - : base_(other.base_), - begin1_(other.begin1_), - end1_(other.end1_), - current1_(other.current1_), - begin2_(other.begin2_), - end2_(other.end2_), - current2_(other.current2_), - begin3_(other.begin3_), - end3_(other.end3_), - current3_(other.current3_), - begin4_(other.begin4_), - end4_(other.end4_), - current4_(other.current4_), - begin5_(other.begin5_), - end5_(other.end5_), - current5_(other.current5_), - begin6_(other.begin6_), - end6_(other.end6_), - current6_(other.current6_) { + : base_(other.base_) + , begin1_(other.begin1_) + , end1_(other.end1_) + , current1_(other.current1_) + , begin2_(other.begin2_) + , end2_(other.end2_) + , current2_(other.current2_) + , begin3_(other.begin3_) + , end3_(other.end3_) + , current3_(other.current3_) + , begin4_(other.begin4_) + , end4_(other.end4_) + , current4_(other.current4_) + , begin5_(other.begin5_) + , end5_(other.end5_) + , current5_(other.current5_) + , begin6_(other.begin6_) + , end6_(other.end6_) + , current6_(other.current6_) + { ComputeCurrentValue(); } - void ComputeCurrentValue() { + void ComputeCurrentValue() + { if (!AtEnd()) - current_value_ = ParamType(*current1_, *current2_, *current3_, - *current4_, *current5_, *current6_); + current_value_ = ParamType(*current1_, *current2_, *current3_, *current4_, *current5_, *current6_); } - bool AtEnd() const { + bool AtEnd() const + { // We must report iterator past the end of the range when either of the // component iterators has reached the end of its range. - return - current1_ == end1_ || - current2_ == end2_ || - current3_ == end3_ || - current4_ == end4_ || - current5_ == end5_ || - current6_ == end6_; + return current1_ == end1_ || current2_ == end2_ || current3_ == end3_ || current4_ == end4_ || current5_ == end5_ + || current6_ == end6_; } // No implementation - assignment is unsupported. @@ -14508,7 +16122,7 @@ class CartesianProductGenerator6 const typename ParamGenerator<T6>::iterator end6_; typename ParamGenerator<T6>::iterator current6_; ParamType current_value_; - }; // class CartesianProductGenerator6::Iterator + }; // class CartesianProductGenerator6::Iterator // No implementation - assignment is unsupported. void operator=(const CartesianProductGenerator6& other); @@ -14519,70 +16133,117 @@ class CartesianProductGenerator6 const ParamGenerator<T4> g4_; const ParamGenerator<T5> g5_; const ParamGenerator<T6> g6_; -}; // class CartesianProductGenerator6 +}; // class CartesianProductGenerator6 -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7> -class CartesianProductGenerator7 - : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, - T7> > { - public: +template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7> +class CartesianProductGenerator7 : public ParamGeneratorInterface<::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7>> +{ +public: typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7> ParamType; - CartesianProductGenerator7(const ParamGenerator<T1>& g1, - const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, - const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, - const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {} - virtual ~CartesianProductGenerator7() {} - - virtual ParamIteratorInterface<ParamType>* Begin() const { - return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, - g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, - g7_.begin()); - } - virtual ParamIteratorInterface<ParamType>* End() const { - return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), - g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end()); - } - - private: - class Iterator : public ParamIteratorInterface<ParamType> { - public: - Iterator(const ParamGeneratorInterface<ParamType>* base, - const ParamGenerator<T1>& g1, - const typename ParamGenerator<T1>::iterator& current1, - const ParamGenerator<T2>& g2, - const typename ParamGenerator<T2>::iterator& current2, - const ParamGenerator<T3>& g3, - const typename ParamGenerator<T3>::iterator& current3, - const ParamGenerator<T4>& g4, - const typename ParamGenerator<T4>::iterator& current4, - const ParamGenerator<T5>& g5, - const typename ParamGenerator<T5>::iterator& current5, - const ParamGenerator<T6>& g6, - const typename ParamGenerator<T6>::iterator& current6, - const ParamGenerator<T7>& g7, - const typename ParamGenerator<T7>::iterator& current7) - : base_(base), - begin1_(g1.begin()), end1_(g1.end()), current1_(current1), - begin2_(g2.begin()), end2_(g2.end()), current2_(current2), - begin3_(g3.begin()), end3_(g3.end()), current3_(current3), - begin4_(g4.begin()), end4_(g4.end()), current4_(current4), - begin5_(g5.begin()), end5_(g5.end()), current5_(current5), - begin6_(g6.begin()), end6_(g6.end()), current6_(current6), - begin7_(g7.begin()), end7_(g7.end()), current7_(current7) { + CartesianProductGenerator7(const ParamGenerator<T1>& g1, const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, + const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, const ParamGenerator<T6>& g6, + const ParamGenerator<T7>& g7) + : g1_(g1) + , g2_(g2) + , g3_(g3) + , g4_(g4) + , g5_(g5) + , g6_(g6) + , g7_(g7) + { + } + virtual ~CartesianProductGenerator7() + { + } + + virtual ParamIteratorInterface<ParamType>* Begin() const + { + return new Iterator(this, + g1_, + g1_.begin(), + g2_, + g2_.begin(), + g3_, + g3_.begin(), + g4_, + g4_.begin(), + g5_, + g5_.begin(), + g6_, + g6_.begin(), + g7_, + g7_.begin()); + } + virtual ParamIteratorInterface<ParamType>* End() const + { + return new Iterator(this, + g1_, + g1_.end(), + g2_, + g2_.end(), + g3_, + g3_.end(), + g4_, + g4_.end(), + g5_, + g5_.end(), + g6_, + g6_.end(), + g7_, + g7_.end()); + } + +private: + class Iterator : public ParamIteratorInterface<ParamType> + { + public: + Iterator(const ParamGeneratorInterface<ParamType>* base, const ParamGenerator<T1>& g1, + const typename ParamGenerator<T1>::iterator& current1, const ParamGenerator<T2>& g2, + const typename ParamGenerator<T2>::iterator& current2, const ParamGenerator<T3>& g3, + const typename ParamGenerator<T3>::iterator& current3, const ParamGenerator<T4>& g4, + const typename ParamGenerator<T4>::iterator& current4, const ParamGenerator<T5>& g5, + const typename ParamGenerator<T5>::iterator& current5, const ParamGenerator<T6>& g6, + const typename ParamGenerator<T6>::iterator& current6, const ParamGenerator<T7>& g7, + const typename ParamGenerator<T7>::iterator& current7) + : base_(base) + , begin1_(g1.begin()) + , end1_(g1.end()) + , current1_(current1) + , begin2_(g2.begin()) + , end2_(g2.end()) + , current2_(current2) + , begin3_(g3.begin()) + , end3_(g3.end()) + , current3_(current3) + , begin4_(g4.begin()) + , end4_(g4.end()) + , current4_(current4) + , begin5_(g5.begin()) + , end5_(g5.end()) + , current5_(current5) + , begin6_(g6.begin()) + , end6_(g6.end()) + , current6_(current6) + , begin7_(g7.begin()) + , end7_(g7.end()) + , current7_(current7) + { ComputeCurrentValue(); } - virtual ~Iterator() {} + virtual ~Iterator() + { + } - virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { + virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const + { return base_; } // Advance should not be called on beyond-of-range iterators // so no component iterators must be beyond end of range, either. - virtual void Advance() { + virtual void Advance() + { assert(!AtEnd()); ++current7_; if (current7_ == end7_) { @@ -14611,75 +16272,72 @@ class CartesianProductGenerator7 } ComputeCurrentValue(); } - virtual ParamIteratorInterface<ParamType>* Clone() const { + virtual ParamIteratorInterface<ParamType>* Clone() const + { return new Iterator(*this); } - virtual const ParamType* Current() const { return ¤t_value_; } - virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { + virtual const ParamType* Current() const + { + return ¤t_value_; + } + virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const + { // Having the same base generator guarantees that the other // iterator is of the same type and we can downcast. - GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) - << "The program attempted to compare iterators " - << "from different generators." << std::endl; - const Iterator* typed_other = - CheckedDowncastToActualType<const Iterator>(&other); + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = CheckedDowncastToActualType<const Iterator>(&other); // We must report iterators equal if they both point beyond their // respective ranges. That can happen in a variety of fashions, // so we have to consult AtEnd(). - return (AtEnd() && typed_other->AtEnd()) || - ( - current1_ == typed_other->current1_ && - current2_ == typed_other->current2_ && - current3_ == typed_other->current3_ && - current4_ == typed_other->current4_ && - current5_ == typed_other->current5_ && - current6_ == typed_other->current6_ && - current7_ == typed_other->current7_); + return (AtEnd() && typed_other->AtEnd()) + || (current1_ == typed_other->current1_ && current2_ == typed_other->current2_ + && current3_ == typed_other->current3_ + && current4_ == typed_other->current4_ + && current5_ == typed_other->current5_ + && current6_ == typed_other->current6_ + && current7_ == typed_other->current7_); } - private: + private: Iterator(const Iterator& other) - : base_(other.base_), - begin1_(other.begin1_), - end1_(other.end1_), - current1_(other.current1_), - begin2_(other.begin2_), - end2_(other.end2_), - current2_(other.current2_), - begin3_(other.begin3_), - end3_(other.end3_), - current3_(other.current3_), - begin4_(other.begin4_), - end4_(other.end4_), - current4_(other.current4_), - begin5_(other.begin5_), - end5_(other.end5_), - current5_(other.current5_), - begin6_(other.begin6_), - end6_(other.end6_), - current6_(other.current6_), - begin7_(other.begin7_), - end7_(other.end7_), - current7_(other.current7_) { + : base_(other.base_) + , begin1_(other.begin1_) + , end1_(other.end1_) + , current1_(other.current1_) + , begin2_(other.begin2_) + , end2_(other.end2_) + , current2_(other.current2_) + , begin3_(other.begin3_) + , end3_(other.end3_) + , current3_(other.current3_) + , begin4_(other.begin4_) + , end4_(other.end4_) + , current4_(other.current4_) + , begin5_(other.begin5_) + , end5_(other.end5_) + , current5_(other.current5_) + , begin6_(other.begin6_) + , end6_(other.end6_) + , current6_(other.current6_) + , begin7_(other.begin7_) + , end7_(other.end7_) + , current7_(other.current7_) + { ComputeCurrentValue(); } - void ComputeCurrentValue() { + void ComputeCurrentValue() + { if (!AtEnd()) - current_value_ = ParamType(*current1_, *current2_, *current3_, - *current4_, *current5_, *current6_, *current7_); + current_value_ = ParamType(*current1_, *current2_, *current3_, *current4_, *current5_, *current6_, *current7_); } - bool AtEnd() const { + bool AtEnd() const + { // We must report iterator past the end of the range when either of the // component iterators has reached the end of its range. - return - current1_ == end1_ || - current2_ == end2_ || - current3_ == end3_ || - current4_ == end4_ || - current5_ == end5_ || - current6_ == end6_ || - current7_ == end7_; + return current1_ == end1_ || current2_ == end2_ || current3_ == end3_ || current4_ == end4_ || current5_ == end5_ + || current6_ == end6_ || current7_ == end7_; } // No implementation - assignment is unsupported. @@ -14710,7 +16368,7 @@ class CartesianProductGenerator7 const typename ParamGenerator<T7>::iterator end7_; typename ParamGenerator<T7>::iterator current7_; ParamType current_value_; - }; // class CartesianProductGenerator7::Iterator + }; // class CartesianProductGenerator7::Iterator // No implementation - assignment is unsupported. void operator=(const CartesianProductGenerator7& other); @@ -14722,76 +16380,126 @@ class CartesianProductGenerator7 const ParamGenerator<T5> g5_; const ParamGenerator<T6> g6_; const ParamGenerator<T7> g7_; -}; // class CartesianProductGenerator7 +}; // class CartesianProductGenerator7 -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8> -class CartesianProductGenerator8 - : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, - T7, T8> > { - public: +template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8> +class CartesianProductGenerator8 : public ParamGeneratorInterface<::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8>> +{ +public: typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8> ParamType; - CartesianProductGenerator8(const ParamGenerator<T1>& g1, - const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, - const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, - const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7, - const ParamGenerator<T8>& g8) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), - g8_(g8) {} - virtual ~CartesianProductGenerator8() {} - - virtual ParamIteratorInterface<ParamType>* Begin() const { - return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, - g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, - g7_.begin(), g8_, g8_.begin()); - } - virtual ParamIteratorInterface<ParamType>* End() const { - return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), - g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, - g8_.end()); - } - - private: - class Iterator : public ParamIteratorInterface<ParamType> { - public: - Iterator(const ParamGeneratorInterface<ParamType>* base, - const ParamGenerator<T1>& g1, - const typename ParamGenerator<T1>::iterator& current1, - const ParamGenerator<T2>& g2, - const typename ParamGenerator<T2>::iterator& current2, - const ParamGenerator<T3>& g3, - const typename ParamGenerator<T3>::iterator& current3, - const ParamGenerator<T4>& g4, - const typename ParamGenerator<T4>::iterator& current4, - const ParamGenerator<T5>& g5, - const typename ParamGenerator<T5>::iterator& current5, - const ParamGenerator<T6>& g6, - const typename ParamGenerator<T6>::iterator& current6, - const ParamGenerator<T7>& g7, - const typename ParamGenerator<T7>::iterator& current7, - const ParamGenerator<T8>& g8, - const typename ParamGenerator<T8>::iterator& current8) - : base_(base), - begin1_(g1.begin()), end1_(g1.end()), current1_(current1), - begin2_(g2.begin()), end2_(g2.end()), current2_(current2), - begin3_(g3.begin()), end3_(g3.end()), current3_(current3), - begin4_(g4.begin()), end4_(g4.end()), current4_(current4), - begin5_(g5.begin()), end5_(g5.end()), current5_(current5), - begin6_(g6.begin()), end6_(g6.end()), current6_(current6), - begin7_(g7.begin()), end7_(g7.end()), current7_(current7), - begin8_(g8.begin()), end8_(g8.end()), current8_(current8) { + CartesianProductGenerator8(const ParamGenerator<T1>& g1, const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, + const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, const ParamGenerator<T6>& g6, + const ParamGenerator<T7>& g7, const ParamGenerator<T8>& g8) + : g1_(g1) + , g2_(g2) + , g3_(g3) + , g4_(g4) + , g5_(g5) + , g6_(g6) + , g7_(g7) + , g8_(g8) + { + } + virtual ~CartesianProductGenerator8() + { + } + + virtual ParamIteratorInterface<ParamType>* Begin() const + { + return new Iterator(this, + g1_, + g1_.begin(), + g2_, + g2_.begin(), + g3_, + g3_.begin(), + g4_, + g4_.begin(), + g5_, + g5_.begin(), + g6_, + g6_.begin(), + g7_, + g7_.begin(), + g8_, + g8_.begin()); + } + virtual ParamIteratorInterface<ParamType>* End() const + { + return new Iterator(this, + g1_, + g1_.end(), + g2_, + g2_.end(), + g3_, + g3_.end(), + g4_, + g4_.end(), + g5_, + g5_.end(), + g6_, + g6_.end(), + g7_, + g7_.end(), + g8_, + g8_.end()); + } + +private: + class Iterator : public ParamIteratorInterface<ParamType> + { + public: + Iterator(const ParamGeneratorInterface<ParamType>* base, const ParamGenerator<T1>& g1, + const typename ParamGenerator<T1>::iterator& current1, const ParamGenerator<T2>& g2, + const typename ParamGenerator<T2>::iterator& current2, const ParamGenerator<T3>& g3, + const typename ParamGenerator<T3>::iterator& current3, const ParamGenerator<T4>& g4, + const typename ParamGenerator<T4>::iterator& current4, const ParamGenerator<T5>& g5, + const typename ParamGenerator<T5>::iterator& current5, const ParamGenerator<T6>& g6, + const typename ParamGenerator<T6>::iterator& current6, const ParamGenerator<T7>& g7, + const typename ParamGenerator<T7>::iterator& current7, const ParamGenerator<T8>& g8, + const typename ParamGenerator<T8>::iterator& current8) + : base_(base) + , begin1_(g1.begin()) + , end1_(g1.end()) + , current1_(current1) + , begin2_(g2.begin()) + , end2_(g2.end()) + , current2_(current2) + , begin3_(g3.begin()) + , end3_(g3.end()) + , current3_(current3) + , begin4_(g4.begin()) + , end4_(g4.end()) + , current4_(current4) + , begin5_(g5.begin()) + , end5_(g5.end()) + , current5_(current5) + , begin6_(g6.begin()) + , end6_(g6.end()) + , current6_(current6) + , begin7_(g7.begin()) + , end7_(g7.end()) + , current7_(current7) + , begin8_(g8.begin()) + , end8_(g8.end()) + , current8_(current8) + { ComputeCurrentValue(); } - virtual ~Iterator() {} + virtual ~Iterator() + { + } - virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { + virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const + { return base_; } // Advance should not be called on beyond-of-range iterators // so no component iterators must be beyond end of range, either. - virtual void Advance() { + virtual void Advance() + { assert(!AtEnd()); ++current8_; if (current8_ == end8_) { @@ -14824,80 +16532,77 @@ class CartesianProductGenerator8 } ComputeCurrentValue(); } - virtual ParamIteratorInterface<ParamType>* Clone() const { + virtual ParamIteratorInterface<ParamType>* Clone() const + { return new Iterator(*this); } - virtual const ParamType* Current() const { return ¤t_value_; } - virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { + virtual const ParamType* Current() const + { + return ¤t_value_; + } + virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const + { // Having the same base generator guarantees that the other // iterator is of the same type and we can downcast. - GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) - << "The program attempted to compare iterators " - << "from different generators." << std::endl; - const Iterator* typed_other = - CheckedDowncastToActualType<const Iterator>(&other); + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = CheckedDowncastToActualType<const Iterator>(&other); // We must report iterators equal if they both point beyond their // respective ranges. That can happen in a variety of fashions, // so we have to consult AtEnd(). - return (AtEnd() && typed_other->AtEnd()) || - ( - current1_ == typed_other->current1_ && - current2_ == typed_other->current2_ && - current3_ == typed_other->current3_ && - current4_ == typed_other->current4_ && - current5_ == typed_other->current5_ && - current6_ == typed_other->current6_ && - current7_ == typed_other->current7_ && - current8_ == typed_other->current8_); + return (AtEnd() && typed_other->AtEnd()) + || (current1_ == typed_other->current1_ && current2_ == typed_other->current2_ + && current3_ == typed_other->current3_ + && current4_ == typed_other->current4_ + && current5_ == typed_other->current5_ + && current6_ == typed_other->current6_ + && current7_ == typed_other->current7_ + && current8_ == typed_other->current8_); } - private: + private: Iterator(const Iterator& other) - : base_(other.base_), - begin1_(other.begin1_), - end1_(other.end1_), - current1_(other.current1_), - begin2_(other.begin2_), - end2_(other.end2_), - current2_(other.current2_), - begin3_(other.begin3_), - end3_(other.end3_), - current3_(other.current3_), - begin4_(other.begin4_), - end4_(other.end4_), - current4_(other.current4_), - begin5_(other.begin5_), - end5_(other.end5_), - current5_(other.current5_), - begin6_(other.begin6_), - end6_(other.end6_), - current6_(other.current6_), - begin7_(other.begin7_), - end7_(other.end7_), - current7_(other.current7_), - begin8_(other.begin8_), - end8_(other.end8_), - current8_(other.current8_) { + : base_(other.base_) + , begin1_(other.begin1_) + , end1_(other.end1_) + , current1_(other.current1_) + , begin2_(other.begin2_) + , end2_(other.end2_) + , current2_(other.current2_) + , begin3_(other.begin3_) + , end3_(other.end3_) + , current3_(other.current3_) + , begin4_(other.begin4_) + , end4_(other.end4_) + , current4_(other.current4_) + , begin5_(other.begin5_) + , end5_(other.end5_) + , current5_(other.current5_) + , begin6_(other.begin6_) + , end6_(other.end6_) + , current6_(other.current6_) + , begin7_(other.begin7_) + , end7_(other.end7_) + , current7_(other.current7_) + , begin8_(other.begin8_) + , end8_(other.end8_) + , current8_(other.current8_) + { ComputeCurrentValue(); } - void ComputeCurrentValue() { + void ComputeCurrentValue() + { if (!AtEnd()) - current_value_ = ParamType(*current1_, *current2_, *current3_, - *current4_, *current5_, *current6_, *current7_, *current8_); + current_value_ = + ParamType(*current1_, *current2_, *current3_, *current4_, *current5_, *current6_, *current7_, *current8_); } - bool AtEnd() const { + bool AtEnd() const + { // We must report iterator past the end of the range when either of the // component iterators has reached the end of its range. - return - current1_ == end1_ || - current2_ == end2_ || - current3_ == end3_ || - current4_ == end4_ || - current5_ == end5_ || - current6_ == end6_ || - current7_ == end7_ || - current8_ == end8_; + return current1_ == end1_ || current2_ == end2_ || current3_ == end3_ || current4_ == end4_ || current5_ == end5_ + || current6_ == end6_ || current7_ == end7_ || current8_ == end8_; } // No implementation - assignment is unsupported. @@ -14931,7 +16636,7 @@ class CartesianProductGenerator8 const typename ParamGenerator<T8>::iterator end8_; typename ParamGenerator<T8>::iterator current8_; ParamType current_value_; - }; // class CartesianProductGenerator8::Iterator + }; // class CartesianProductGenerator8::Iterator // No implementation - assignment is unsupported. void operator=(const CartesianProductGenerator8& other); @@ -14944,79 +16649,136 @@ class CartesianProductGenerator8 const ParamGenerator<T6> g6_; const ParamGenerator<T7> g7_; const ParamGenerator<T8> g8_; -}; // class CartesianProductGenerator8 +}; // class CartesianProductGenerator8 -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9> -class CartesianProductGenerator9 - : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, - T7, T8, T9> > { - public: +template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, + typename T9> +class CartesianProductGenerator9 : public ParamGeneratorInterface<::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>> +{ +public: typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9> ParamType; - CartesianProductGenerator9(const ParamGenerator<T1>& g1, - const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, - const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, - const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7, - const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), - g9_(g9) {} - virtual ~CartesianProductGenerator9() {} - - virtual ParamIteratorInterface<ParamType>* Begin() const { - return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, - g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, - g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin()); - } - virtual ParamIteratorInterface<ParamType>* End() const { - return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), - g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, - g8_.end(), g9_, g9_.end()); - } - - private: - class Iterator : public ParamIteratorInterface<ParamType> { - public: - Iterator(const ParamGeneratorInterface<ParamType>* base, - const ParamGenerator<T1>& g1, - const typename ParamGenerator<T1>::iterator& current1, - const ParamGenerator<T2>& g2, - const typename ParamGenerator<T2>::iterator& current2, - const ParamGenerator<T3>& g3, - const typename ParamGenerator<T3>::iterator& current3, - const ParamGenerator<T4>& g4, - const typename ParamGenerator<T4>::iterator& current4, - const ParamGenerator<T5>& g5, - const typename ParamGenerator<T5>::iterator& current5, - const ParamGenerator<T6>& g6, - const typename ParamGenerator<T6>::iterator& current6, - const ParamGenerator<T7>& g7, - const typename ParamGenerator<T7>::iterator& current7, - const ParamGenerator<T8>& g8, - const typename ParamGenerator<T8>::iterator& current8, - const ParamGenerator<T9>& g9, - const typename ParamGenerator<T9>::iterator& current9) - : base_(base), - begin1_(g1.begin()), end1_(g1.end()), current1_(current1), - begin2_(g2.begin()), end2_(g2.end()), current2_(current2), - begin3_(g3.begin()), end3_(g3.end()), current3_(current3), - begin4_(g4.begin()), end4_(g4.end()), current4_(current4), - begin5_(g5.begin()), end5_(g5.end()), current5_(current5), - begin6_(g6.begin()), end6_(g6.end()), current6_(current6), - begin7_(g7.begin()), end7_(g7.end()), current7_(current7), - begin8_(g8.begin()), end8_(g8.end()), current8_(current8), - begin9_(g9.begin()), end9_(g9.end()), current9_(current9) { + CartesianProductGenerator9(const ParamGenerator<T1>& g1, const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, + const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, const ParamGenerator<T6>& g6, + const ParamGenerator<T7>& g7, const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9) + : g1_(g1) + , g2_(g2) + , g3_(g3) + , g4_(g4) + , g5_(g5) + , g6_(g6) + , g7_(g7) + , g8_(g8) + , g9_(g9) + { + } + virtual ~CartesianProductGenerator9() + { + } + + virtual ParamIteratorInterface<ParamType>* Begin() const + { + return new Iterator(this, + g1_, + g1_.begin(), + g2_, + g2_.begin(), + g3_, + g3_.begin(), + g4_, + g4_.begin(), + g5_, + g5_.begin(), + g6_, + g6_.begin(), + g7_, + g7_.begin(), + g8_, + g8_.begin(), + g9_, + g9_.begin()); + } + virtual ParamIteratorInterface<ParamType>* End() const + { + return new Iterator(this, + g1_, + g1_.end(), + g2_, + g2_.end(), + g3_, + g3_.end(), + g4_, + g4_.end(), + g5_, + g5_.end(), + g6_, + g6_.end(), + g7_, + g7_.end(), + g8_, + g8_.end(), + g9_, + g9_.end()); + } + +private: + class Iterator : public ParamIteratorInterface<ParamType> + { + public: + Iterator(const ParamGeneratorInterface<ParamType>* base, const ParamGenerator<T1>& g1, + const typename ParamGenerator<T1>::iterator& current1, const ParamGenerator<T2>& g2, + const typename ParamGenerator<T2>::iterator& current2, const ParamGenerator<T3>& g3, + const typename ParamGenerator<T3>::iterator& current3, const ParamGenerator<T4>& g4, + const typename ParamGenerator<T4>::iterator& current4, const ParamGenerator<T5>& g5, + const typename ParamGenerator<T5>::iterator& current5, const ParamGenerator<T6>& g6, + const typename ParamGenerator<T6>::iterator& current6, const ParamGenerator<T7>& g7, + const typename ParamGenerator<T7>::iterator& current7, const ParamGenerator<T8>& g8, + const typename ParamGenerator<T8>::iterator& current8, const ParamGenerator<T9>& g9, + const typename ParamGenerator<T9>::iterator& current9) + : base_(base) + , begin1_(g1.begin()) + , end1_(g1.end()) + , current1_(current1) + , begin2_(g2.begin()) + , end2_(g2.end()) + , current2_(current2) + , begin3_(g3.begin()) + , end3_(g3.end()) + , current3_(current3) + , begin4_(g4.begin()) + , end4_(g4.end()) + , current4_(current4) + , begin5_(g5.begin()) + , end5_(g5.end()) + , current5_(current5) + , begin6_(g6.begin()) + , end6_(g6.end()) + , current6_(current6) + , begin7_(g7.begin()) + , end7_(g7.end()) + , current7_(current7) + , begin8_(g8.begin()) + , end8_(g8.end()) + , current8_(current8) + , begin9_(g9.begin()) + , end9_(g9.end()) + , current9_(current9) + { ComputeCurrentValue(); } - virtual ~Iterator() {} + virtual ~Iterator() + { + } - virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { + virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const + { return base_; } // Advance should not be called on beyond-of-range iterators // so no component iterators must be beyond end of range, either. - virtual void Advance() { + virtual void Advance() + { assert(!AtEnd()); ++current9_; if (current9_ == end9_) { @@ -15053,86 +16815,81 @@ class CartesianProductGenerator9 } ComputeCurrentValue(); } - virtual ParamIteratorInterface<ParamType>* Clone() const { + virtual ParamIteratorInterface<ParamType>* Clone() const + { return new Iterator(*this); } - virtual const ParamType* Current() const { return ¤t_value_; } - virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { + virtual const ParamType* Current() const + { + return ¤t_value_; + } + virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const + { // Having the same base generator guarantees that the other // iterator is of the same type and we can downcast. - GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) - << "The program attempted to compare iterators " - << "from different generators." << std::endl; - const Iterator* typed_other = - CheckedDowncastToActualType<const Iterator>(&other); + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = CheckedDowncastToActualType<const Iterator>(&other); // We must report iterators equal if they both point beyond their // respective ranges. That can happen in a variety of fashions, // so we have to consult AtEnd(). - return (AtEnd() && typed_other->AtEnd()) || - ( - current1_ == typed_other->current1_ && - current2_ == typed_other->current2_ && - current3_ == typed_other->current3_ && - current4_ == typed_other->current4_ && - current5_ == typed_other->current5_ && - current6_ == typed_other->current6_ && - current7_ == typed_other->current7_ && - current8_ == typed_other->current8_ && - current9_ == typed_other->current9_); + return (AtEnd() && typed_other->AtEnd()) + || (current1_ == typed_other->current1_ && current2_ == typed_other->current2_ + && current3_ == typed_other->current3_ + && current4_ == typed_other->current4_ + && current5_ == typed_other->current5_ + && current6_ == typed_other->current6_ + && current7_ == typed_other->current7_ + && current8_ == typed_other->current8_ + && current9_ == typed_other->current9_); } - private: + private: Iterator(const Iterator& other) - : base_(other.base_), - begin1_(other.begin1_), - end1_(other.end1_), - current1_(other.current1_), - begin2_(other.begin2_), - end2_(other.end2_), - current2_(other.current2_), - begin3_(other.begin3_), - end3_(other.end3_), - current3_(other.current3_), - begin4_(other.begin4_), - end4_(other.end4_), - current4_(other.current4_), - begin5_(other.begin5_), - end5_(other.end5_), - current5_(other.current5_), - begin6_(other.begin6_), - end6_(other.end6_), - current6_(other.current6_), - begin7_(other.begin7_), - end7_(other.end7_), - current7_(other.current7_), - begin8_(other.begin8_), - end8_(other.end8_), - current8_(other.current8_), - begin9_(other.begin9_), - end9_(other.end9_), - current9_(other.current9_) { + : base_(other.base_) + , begin1_(other.begin1_) + , end1_(other.end1_) + , current1_(other.current1_) + , begin2_(other.begin2_) + , end2_(other.end2_) + , current2_(other.current2_) + , begin3_(other.begin3_) + , end3_(other.end3_) + , current3_(other.current3_) + , begin4_(other.begin4_) + , end4_(other.end4_) + , current4_(other.current4_) + , begin5_(other.begin5_) + , end5_(other.end5_) + , current5_(other.current5_) + , begin6_(other.begin6_) + , end6_(other.end6_) + , current6_(other.current6_) + , begin7_(other.begin7_) + , end7_(other.end7_) + , current7_(other.current7_) + , begin8_(other.begin8_) + , end8_(other.end8_) + , current8_(other.current8_) + , begin9_(other.begin9_) + , end9_(other.end9_) + , current9_(other.current9_) + { ComputeCurrentValue(); } - void ComputeCurrentValue() { + void ComputeCurrentValue() + { if (!AtEnd()) - current_value_ = ParamType(*current1_, *current2_, *current3_, - *current4_, *current5_, *current6_, *current7_, *current8_, - *current9_); + current_value_ = ParamType( + *current1_, *current2_, *current3_, *current4_, *current5_, *current6_, *current7_, *current8_, *current9_); } - bool AtEnd() const { + bool AtEnd() const + { // We must report iterator past the end of the range when either of the // component iterators has reached the end of its range. - return - current1_ == end1_ || - current2_ == end2_ || - current3_ == end3_ || - current4_ == end4_ || - current5_ == end5_ || - current6_ == end6_ || - current7_ == end7_ || - current8_ == end8_ || - current9_ == end9_; + return current1_ == end1_ || current2_ == end2_ || current3_ == end3_ || current4_ == end4_ || current5_ == end5_ + || current6_ == end6_ || current7_ == end7_ || current8_ == end8_ || current9_ == end9_; } // No implementation - assignment is unsupported. @@ -15169,7 +16926,7 @@ class CartesianProductGenerator9 const typename ParamGenerator<T9>::iterator end9_; typename ParamGenerator<T9>::iterator current9_; ParamType current_value_; - }; // class CartesianProductGenerator9::Iterator + }; // class CartesianProductGenerator9::Iterator // No implementation - assignment is unsupported. void operator=(const CartesianProductGenerator9& other); @@ -15183,83 +16940,147 @@ class CartesianProductGenerator9 const ParamGenerator<T7> g7_; const ParamGenerator<T8> g8_; const ParamGenerator<T9> g9_; -}; // class CartesianProductGenerator9 +}; // class CartesianProductGenerator9 -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10> +template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, + typename T9, typename T10> class CartesianProductGenerator10 - : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, - T7, T8, T9, T10> > { - public: + : public ParamGeneratorInterface<::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>> +{ +public: typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> ParamType; - CartesianProductGenerator10(const ParamGenerator<T1>& g1, - const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, - const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, - const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7, - const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9, - const ParamGenerator<T10>& g10) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), - g9_(g9), g10_(g10) {} - virtual ~CartesianProductGenerator10() {} - - virtual ParamIteratorInterface<ParamType>* Begin() const { - return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, - g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, - g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin(), g10_, g10_.begin()); - } - virtual ParamIteratorInterface<ParamType>* End() const { - return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), - g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, - g8_.end(), g9_, g9_.end(), g10_, g10_.end()); - } - - private: - class Iterator : public ParamIteratorInterface<ParamType> { - public: - Iterator(const ParamGeneratorInterface<ParamType>* base, - const ParamGenerator<T1>& g1, - const typename ParamGenerator<T1>::iterator& current1, - const ParamGenerator<T2>& g2, - const typename ParamGenerator<T2>::iterator& current2, - const ParamGenerator<T3>& g3, - const typename ParamGenerator<T3>::iterator& current3, - const ParamGenerator<T4>& g4, - const typename ParamGenerator<T4>::iterator& current4, - const ParamGenerator<T5>& g5, - const typename ParamGenerator<T5>::iterator& current5, - const ParamGenerator<T6>& g6, - const typename ParamGenerator<T6>::iterator& current6, - const ParamGenerator<T7>& g7, - const typename ParamGenerator<T7>::iterator& current7, - const ParamGenerator<T8>& g8, - const typename ParamGenerator<T8>::iterator& current8, - const ParamGenerator<T9>& g9, - const typename ParamGenerator<T9>::iterator& current9, - const ParamGenerator<T10>& g10, - const typename ParamGenerator<T10>::iterator& current10) - : base_(base), - begin1_(g1.begin()), end1_(g1.end()), current1_(current1), - begin2_(g2.begin()), end2_(g2.end()), current2_(current2), - begin3_(g3.begin()), end3_(g3.end()), current3_(current3), - begin4_(g4.begin()), end4_(g4.end()), current4_(current4), - begin5_(g5.begin()), end5_(g5.end()), current5_(current5), - begin6_(g6.begin()), end6_(g6.end()), current6_(current6), - begin7_(g7.begin()), end7_(g7.end()), current7_(current7), - begin8_(g8.begin()), end8_(g8.end()), current8_(current8), - begin9_(g9.begin()), end9_(g9.end()), current9_(current9), - begin10_(g10.begin()), end10_(g10.end()), current10_(current10) { + CartesianProductGenerator10(const ParamGenerator<T1>& g1, const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3, + const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5, const ParamGenerator<T6>& g6, + const ParamGenerator<T7>& g7, const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9, + const ParamGenerator<T10>& g10) + : g1_(g1) + , g2_(g2) + , g3_(g3) + , g4_(g4) + , g5_(g5) + , g6_(g6) + , g7_(g7) + , g8_(g8) + , g9_(g9) + , g10_(g10) + { + } + virtual ~CartesianProductGenerator10() + { + } + + virtual ParamIteratorInterface<ParamType>* Begin() const + { + return new Iterator(this, + g1_, + g1_.begin(), + g2_, + g2_.begin(), + g3_, + g3_.begin(), + g4_, + g4_.begin(), + g5_, + g5_.begin(), + g6_, + g6_.begin(), + g7_, + g7_.begin(), + g8_, + g8_.begin(), + g9_, + g9_.begin(), + g10_, + g10_.begin()); + } + virtual ParamIteratorInterface<ParamType>* End() const + { + return new Iterator(this, + g1_, + g1_.end(), + g2_, + g2_.end(), + g3_, + g3_.end(), + g4_, + g4_.end(), + g5_, + g5_.end(), + g6_, + g6_.end(), + g7_, + g7_.end(), + g8_, + g8_.end(), + g9_, + g9_.end(), + g10_, + g10_.end()); + } + +private: + class Iterator : public ParamIteratorInterface<ParamType> + { + public: + Iterator(const ParamGeneratorInterface<ParamType>* base, const ParamGenerator<T1>& g1, + const typename ParamGenerator<T1>::iterator& current1, const ParamGenerator<T2>& g2, + const typename ParamGenerator<T2>::iterator& current2, const ParamGenerator<T3>& g3, + const typename ParamGenerator<T3>::iterator& current3, const ParamGenerator<T4>& g4, + const typename ParamGenerator<T4>::iterator& current4, const ParamGenerator<T5>& g5, + const typename ParamGenerator<T5>::iterator& current5, const ParamGenerator<T6>& g6, + const typename ParamGenerator<T6>::iterator& current6, const ParamGenerator<T7>& g7, + const typename ParamGenerator<T7>::iterator& current7, const ParamGenerator<T8>& g8, + const typename ParamGenerator<T8>::iterator& current8, const ParamGenerator<T9>& g9, + const typename ParamGenerator<T9>::iterator& current9, const ParamGenerator<T10>& g10, + const typename ParamGenerator<T10>::iterator& current10) + : base_(base) + , begin1_(g1.begin()) + , end1_(g1.end()) + , current1_(current1) + , begin2_(g2.begin()) + , end2_(g2.end()) + , current2_(current2) + , begin3_(g3.begin()) + , end3_(g3.end()) + , current3_(current3) + , begin4_(g4.begin()) + , end4_(g4.end()) + , current4_(current4) + , begin5_(g5.begin()) + , end5_(g5.end()) + , current5_(current5) + , begin6_(g6.begin()) + , end6_(g6.end()) + , current6_(current6) + , begin7_(g7.begin()) + , end7_(g7.end()) + , current7_(current7) + , begin8_(g8.begin()) + , end8_(g8.end()) + , current8_(current8) + , begin9_(g9.begin()) + , end9_(g9.end()) + , current9_(current9) + , begin10_(g10.begin()) + , end10_(g10.end()) + , current10_(current10) + { ComputeCurrentValue(); } - virtual ~Iterator() {} + virtual ~Iterator() + { + } - virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const { + virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const + { return base_; } // Advance should not be called on beyond-of-range iterators // so no component iterators must be beyond end of range, either. - virtual void Advance() { + virtual void Advance() + { assert(!AtEnd()); ++current10_; if (current10_ == end10_) { @@ -15300,91 +17121,94 @@ class CartesianProductGenerator10 } ComputeCurrentValue(); } - virtual ParamIteratorInterface<ParamType>* Clone() const { + virtual ParamIteratorInterface<ParamType>* Clone() const + { return new Iterator(*this); } - virtual const ParamType* Current() const { return ¤t_value_; } - virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const { + virtual const ParamType* Current() const + { + return ¤t_value_; + } + virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const + { // Having the same base generator guarantees that the other // iterator is of the same type and we can downcast. - GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) - << "The program attempted to compare iterators " - << "from different generators." << std::endl; - const Iterator* typed_other = - CheckedDowncastToActualType<const Iterator>(&other); + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = CheckedDowncastToActualType<const Iterator>(&other); // We must report iterators equal if they both point beyond their // respective ranges. That can happen in a variety of fashions, // so we have to consult AtEnd(). - return (AtEnd() && typed_other->AtEnd()) || - ( - current1_ == typed_other->current1_ && - current2_ == typed_other->current2_ && - current3_ == typed_other->current3_ && - current4_ == typed_other->current4_ && - current5_ == typed_other->current5_ && - current6_ == typed_other->current6_ && - current7_ == typed_other->current7_ && - current8_ == typed_other->current8_ && - current9_ == typed_other->current9_ && - current10_ == typed_other->current10_); + return (AtEnd() && typed_other->AtEnd()) + || (current1_ == typed_other->current1_ && current2_ == typed_other->current2_ + && current3_ == typed_other->current3_ + && current4_ == typed_other->current4_ + && current5_ == typed_other->current5_ + && current6_ == typed_other->current6_ + && current7_ == typed_other->current7_ + && current8_ == typed_other->current8_ + && current9_ == typed_other->current9_ + && current10_ == typed_other->current10_); } - private: + private: Iterator(const Iterator& other) - : base_(other.base_), - begin1_(other.begin1_), - end1_(other.end1_), - current1_(other.current1_), - begin2_(other.begin2_), - end2_(other.end2_), - current2_(other.current2_), - begin3_(other.begin3_), - end3_(other.end3_), - current3_(other.current3_), - begin4_(other.begin4_), - end4_(other.end4_), - current4_(other.current4_), - begin5_(other.begin5_), - end5_(other.end5_), - current5_(other.current5_), - begin6_(other.begin6_), - end6_(other.end6_), - current6_(other.current6_), - begin7_(other.begin7_), - end7_(other.end7_), - current7_(other.current7_), - begin8_(other.begin8_), - end8_(other.end8_), - current8_(other.current8_), - begin9_(other.begin9_), - end9_(other.end9_), - current9_(other.current9_), - begin10_(other.begin10_), - end10_(other.end10_), - current10_(other.current10_) { + : base_(other.base_) + , begin1_(other.begin1_) + , end1_(other.end1_) + , current1_(other.current1_) + , begin2_(other.begin2_) + , end2_(other.end2_) + , current2_(other.current2_) + , begin3_(other.begin3_) + , end3_(other.end3_) + , current3_(other.current3_) + , begin4_(other.begin4_) + , end4_(other.end4_) + , current4_(other.current4_) + , begin5_(other.begin5_) + , end5_(other.end5_) + , current5_(other.current5_) + , begin6_(other.begin6_) + , end6_(other.end6_) + , current6_(other.current6_) + , begin7_(other.begin7_) + , end7_(other.end7_) + , current7_(other.current7_) + , begin8_(other.begin8_) + , end8_(other.end8_) + , current8_(other.current8_) + , begin9_(other.begin9_) + , end9_(other.end9_) + , current9_(other.current9_) + , begin10_(other.begin10_) + , end10_(other.end10_) + , current10_(other.current10_) + { ComputeCurrentValue(); } - void ComputeCurrentValue() { + void ComputeCurrentValue() + { if (!AtEnd()) - current_value_ = ParamType(*current1_, *current2_, *current3_, - *current4_, *current5_, *current6_, *current7_, *current8_, - *current9_, *current10_); + current_value_ = ParamType(*current1_, + *current2_, + *current3_, + *current4_, + *current5_, + *current6_, + *current7_, + *current8_, + *current9_, + *current10_); } - bool AtEnd() const { + bool AtEnd() const + { // We must report iterator past the end of the range when either of the // component iterators has reached the end of its range. - return - current1_ == end1_ || - current2_ == end2_ || - current3_ == end3_ || - current4_ == end4_ || - current5_ == end5_ || - current6_ == end6_ || - current7_ == end7_ || - current8_ == end8_ || - current9_ == end9_ || - current10_ == end10_; + return current1_ == end1_ || current2_ == end2_ || current3_ == end3_ || current4_ == end4_ || current5_ == end5_ + || current6_ == end6_ || current7_ == end7_ || current8_ == end8_ || current9_ == end9_ + || current10_ == end10_; } // No implementation - assignment is unsupported. @@ -15424,7 +17248,7 @@ class CartesianProductGenerator10 const typename ParamGenerator<T10>::iterator end10_; typename ParamGenerator<T10>::iterator current10_; ParamType current_value_; - }; // class CartesianProductGenerator10::Iterator + }; // class CartesianProductGenerator10::Iterator // No implementation - assignment is unsupported. void operator=(const CartesianProductGenerator10& other); @@ -15439,7 +17263,7 @@ class CartesianProductGenerator10 const ParamGenerator<T8> g8_; const ParamGenerator<T9> g9_; const ParamGenerator<T10> g10_; -}; // class CartesianProductGenerator10 +}; // class CartesianProductGenerator10 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. @@ -15449,68 +17273,79 @@ class CartesianProductGenerator10 // convertible to U. // template <class Generator1, class Generator2> -class CartesianProductHolder2 { - public: -CartesianProductHolder2(const Generator1& g1, const Generator2& g2) - : g1_(g1), g2_(g2) {} +class CartesianProductHolder2 +{ +public: + CartesianProductHolder2(const Generator1& g1, const Generator2& g2) + : g1_(g1) + , g2_(g2) + { + } template <typename T1, typename T2> - operator ParamGenerator< ::std::tr1::tuple<T1, T2> >() const { - return ParamGenerator< ::std::tr1::tuple<T1, T2> >( - new CartesianProductGenerator2<T1, T2>( - static_cast<ParamGenerator<T1> >(g1_), - static_cast<ParamGenerator<T2> >(g2_))); + operator ParamGenerator<::std::tr1::tuple<T1, T2>>() const + { + return ParamGenerator<::std::tr1::tuple<T1, T2>>(new CartesianProductGenerator2<T1, T2>( + static_cast<ParamGenerator<T1>>(g1_), static_cast<ParamGenerator<T2>>(g2_))); } - private: +private: // No implementation - assignment is unsupported. void operator=(const CartesianProductHolder2& other); const Generator1 g1_; const Generator2 g2_; -}; // class CartesianProductHolder2 +}; // class CartesianProductHolder2 template <class Generator1, class Generator2, class Generator3> -class CartesianProductHolder3 { - public: -CartesianProductHolder3(const Generator1& g1, const Generator2& g2, - const Generator3& g3) - : g1_(g1), g2_(g2), g3_(g3) {} +class CartesianProductHolder3 +{ +public: + CartesianProductHolder3(const Generator1& g1, const Generator2& g2, const Generator3& g3) + : g1_(g1) + , g2_(g2) + , g3_(g3) + { + } template <typename T1, typename T2, typename T3> - operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3> >() const { - return ParamGenerator< ::std::tr1::tuple<T1, T2, T3> >( - new CartesianProductGenerator3<T1, T2, T3>( - static_cast<ParamGenerator<T1> >(g1_), - static_cast<ParamGenerator<T2> >(g2_), - static_cast<ParamGenerator<T3> >(g3_))); + operator ParamGenerator<::std::tr1::tuple<T1, T2, T3>>() const + { + return ParamGenerator<::std::tr1::tuple<T1, T2, T3>>( + new CartesianProductGenerator3<T1, T2, T3>(static_cast<ParamGenerator<T1>>(g1_), + static_cast<ParamGenerator<T2>>(g2_), + static_cast<ParamGenerator<T3>>(g3_))); } - private: +private: // No implementation - assignment is unsupported. void operator=(const CartesianProductHolder3& other); const Generator1 g1_; const Generator2 g2_; const Generator3 g3_; -}; // class CartesianProductHolder3 - -template <class Generator1, class Generator2, class Generator3, - class Generator4> -class CartesianProductHolder4 { - public: -CartesianProductHolder4(const Generator1& g1, const Generator2& g2, - const Generator3& g3, const Generator4& g4) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {} +}; // class CartesianProductHolder3 + +template <class Generator1, class Generator2, class Generator3, class Generator4> +class CartesianProductHolder4 +{ +public: + CartesianProductHolder4(const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4) + : g1_(g1) + , g2_(g2) + , g3_(g3) + , g4_(g4) + { + } template <typename T1, typename T2, typename T3, typename T4> - operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4> >() const { - return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4> >( - new CartesianProductGenerator4<T1, T2, T3, T4>( - static_cast<ParamGenerator<T1> >(g1_), - static_cast<ParamGenerator<T2> >(g2_), - static_cast<ParamGenerator<T3> >(g3_), - static_cast<ParamGenerator<T4> >(g4_))); + operator ParamGenerator<::std::tr1::tuple<T1, T2, T3, T4>>() const + { + return ParamGenerator<::std::tr1::tuple<T1, T2, T3, T4>>( + new CartesianProductGenerator4<T1, T2, T3, T4>(static_cast<ParamGenerator<T1>>(g1_), + static_cast<ParamGenerator<T2>>(g2_), + static_cast<ParamGenerator<T3>>(g3_), + static_cast<ParamGenerator<T4>>(g4_))); } - private: +private: // No implementation - assignment is unsupported. void operator=(const CartesianProductHolder4& other); @@ -15518,27 +17353,33 @@ CartesianProductHolder4(const Generator1& g1, const Generator2& g2, const Generator2 g2_; const Generator3 g3_; const Generator4 g4_; -}; // class CartesianProductHolder4 - -template <class Generator1, class Generator2, class Generator3, - class Generator4, class Generator5> -class CartesianProductHolder5 { - public: -CartesianProductHolder5(const Generator1& g1, const Generator2& g2, - const Generator3& g3, const Generator4& g4, const Generator5& g5) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {} +}; // class CartesianProductHolder4 + +template <class Generator1, class Generator2, class Generator3, class Generator4, class Generator5> +class CartesianProductHolder5 +{ +public: + CartesianProductHolder5(const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, + const Generator5& g5) + : g1_(g1) + , g2_(g2) + , g3_(g3) + , g4_(g4) + , g5_(g5) + { + } template <typename T1, typename T2, typename T3, typename T4, typename T5> - operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5> >() const { - return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5> >( - new CartesianProductGenerator5<T1, T2, T3, T4, T5>( - static_cast<ParamGenerator<T1> >(g1_), - static_cast<ParamGenerator<T2> >(g2_), - static_cast<ParamGenerator<T3> >(g3_), - static_cast<ParamGenerator<T4> >(g4_), - static_cast<ParamGenerator<T5> >(g5_))); + operator ParamGenerator<::std::tr1::tuple<T1, T2, T3, T4, T5>>() const + { + return ParamGenerator<::std::tr1::tuple<T1, T2, T3, T4, T5>>( + new CartesianProductGenerator5<T1, T2, T3, T4, T5>(static_cast<ParamGenerator<T1>>(g1_), + static_cast<ParamGenerator<T2>>(g2_), + static_cast<ParamGenerator<T3>>(g3_), + static_cast<ParamGenerator<T4>>(g4_), + static_cast<ParamGenerator<T5>>(g5_))); } - private: +private: // No implementation - assignment is unsupported. void operator=(const CartesianProductHolder5& other); @@ -15547,30 +17388,35 @@ CartesianProductHolder5(const Generator1& g1, const Generator2& g2, const Generator3 g3_; const Generator4 g4_; const Generator5 g5_; -}; // class CartesianProductHolder5 +}; // class CartesianProductHolder5 + +template <class Generator1, class Generator2, class Generator3, class Generator4, class Generator5, class Generator6> +class CartesianProductHolder6 +{ +public: + CartesianProductHolder6(const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, + const Generator5& g5, const Generator6& g6) + : g1_(g1) + , g2_(g2) + , g3_(g3) + , g4_(g4) + , g5_(g5) + , g6_(g6) + { + } + template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6> + operator ParamGenerator<::std::tr1::tuple<T1, T2, T3, T4, T5, T6>>() const + { + return ParamGenerator<::std::tr1::tuple<T1, T2, T3, T4, T5, T6>>( + new CartesianProductGenerator6<T1, T2, T3, T4, T5, T6>(static_cast<ParamGenerator<T1>>(g1_), + static_cast<ParamGenerator<T2>>(g2_), + static_cast<ParamGenerator<T3>>(g3_), + static_cast<ParamGenerator<T4>>(g4_), + static_cast<ParamGenerator<T5>>(g5_), + static_cast<ParamGenerator<T6>>(g6_))); + } -template <class Generator1, class Generator2, class Generator3, - class Generator4, class Generator5, class Generator6> -class CartesianProductHolder6 { - public: -CartesianProductHolder6(const Generator1& g1, const Generator2& g2, - const Generator3& g3, const Generator4& g4, const Generator5& g5, - const Generator6& g6) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {} - template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6> - operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> >() const { - return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> >( - new CartesianProductGenerator6<T1, T2, T3, T4, T5, T6>( - static_cast<ParamGenerator<T1> >(g1_), - static_cast<ParamGenerator<T2> >(g2_), - static_cast<ParamGenerator<T3> >(g3_), - static_cast<ParamGenerator<T4> >(g4_), - static_cast<ParamGenerator<T5> >(g5_), - static_cast<ParamGenerator<T6> >(g6_))); - } - - private: +private: // No implementation - assignment is unsupported. void operator=(const CartesianProductHolder6& other); @@ -15580,32 +17426,38 @@ CartesianProductHolder6(const Generator1& g1, const Generator2& g2, const Generator4 g4_; const Generator5 g5_; const Generator6 g6_; -}; // class CartesianProductHolder6 +}; // class CartesianProductHolder6 + +template <class Generator1, class Generator2, class Generator3, class Generator4, class Generator5, class Generator6, + class Generator7> +class CartesianProductHolder7 +{ +public: + CartesianProductHolder7(const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, + const Generator5& g5, const Generator6& g6, const Generator7& g7) + : g1_(g1) + , g2_(g2) + , g3_(g3) + , g4_(g4) + , g5_(g5) + , g6_(g6) + , g7_(g7) + { + } + template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7> + operator ParamGenerator<::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7>>() const + { + return ParamGenerator<::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7>>( + new CartesianProductGenerator7<T1, T2, T3, T4, T5, T6, T7>(static_cast<ParamGenerator<T1>>(g1_), + static_cast<ParamGenerator<T2>>(g2_), + static_cast<ParamGenerator<T3>>(g3_), + static_cast<ParamGenerator<T4>>(g4_), + static_cast<ParamGenerator<T5>>(g5_), + static_cast<ParamGenerator<T6>>(g6_), + static_cast<ParamGenerator<T7>>(g7_))); + } -template <class Generator1, class Generator2, class Generator3, - class Generator4, class Generator5, class Generator6, class Generator7> -class CartesianProductHolder7 { - public: -CartesianProductHolder7(const Generator1& g1, const Generator2& g2, - const Generator3& g3, const Generator4& g4, const Generator5& g5, - const Generator6& g6, const Generator7& g7) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {} - template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7> - operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, - T7> >() const { - return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7> >( - new CartesianProductGenerator7<T1, T2, T3, T4, T5, T6, T7>( - static_cast<ParamGenerator<T1> >(g1_), - static_cast<ParamGenerator<T2> >(g2_), - static_cast<ParamGenerator<T3> >(g3_), - static_cast<ParamGenerator<T4> >(g4_), - static_cast<ParamGenerator<T5> >(g5_), - static_cast<ParamGenerator<T6> >(g6_), - static_cast<ParamGenerator<T7> >(g7_))); - } - - private: +private: // No implementation - assignment is unsupported. void operator=(const CartesianProductHolder7& other); @@ -15616,35 +17468,40 @@ CartesianProductHolder7(const Generator1& g1, const Generator2& g2, const Generator5 g5_; const Generator6 g6_; const Generator7 g7_; -}; // class CartesianProductHolder7 +}; // class CartesianProductHolder7 + +template <class Generator1, class Generator2, class Generator3, class Generator4, class Generator5, class Generator6, + class Generator7, class Generator8> +class CartesianProductHolder8 +{ +public: + CartesianProductHolder8(const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, + const Generator5& g5, const Generator6& g6, const Generator7& g7, const Generator8& g8) + : g1_(g1) + , g2_(g2) + , g3_(g3) + , g4_(g4) + , g5_(g5) + , g6_(g6) + , g7_(g7) + , g8_(g8) + { + } + template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8> + operator ParamGenerator<::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8>>() const + { + return ParamGenerator<::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8>>( + new CartesianProductGenerator8<T1, T2, T3, T4, T5, T6, T7, T8>(static_cast<ParamGenerator<T1>>(g1_), + static_cast<ParamGenerator<T2>>(g2_), + static_cast<ParamGenerator<T3>>(g3_), + static_cast<ParamGenerator<T4>>(g4_), + static_cast<ParamGenerator<T5>>(g5_), + static_cast<ParamGenerator<T6>>(g6_), + static_cast<ParamGenerator<T7>>(g7_), + static_cast<ParamGenerator<T8>>(g8_))); + } -template <class Generator1, class Generator2, class Generator3, - class Generator4, class Generator5, class Generator6, class Generator7, - class Generator8> -class CartesianProductHolder8 { - public: -CartesianProductHolder8(const Generator1& g1, const Generator2& g2, - const Generator3& g3, const Generator4& g4, const Generator5& g5, - const Generator6& g6, const Generator7& g7, const Generator8& g8) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), - g8_(g8) {} - template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8> - operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, - T8> >() const { - return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8> >( - new CartesianProductGenerator8<T1, T2, T3, T4, T5, T6, T7, T8>( - static_cast<ParamGenerator<T1> >(g1_), - static_cast<ParamGenerator<T2> >(g2_), - static_cast<ParamGenerator<T3> >(g3_), - static_cast<ParamGenerator<T4> >(g4_), - static_cast<ParamGenerator<T5> >(g5_), - static_cast<ParamGenerator<T6> >(g6_), - static_cast<ParamGenerator<T7> >(g7_), - static_cast<ParamGenerator<T8> >(g8_))); - } - - private: +private: // No implementation - assignment is unsupported. void operator=(const CartesianProductHolder8& other); @@ -15656,38 +17513,44 @@ CartesianProductHolder8(const Generator1& g1, const Generator2& g2, const Generator6 g6_; const Generator7 g7_; const Generator8 g8_; -}; // class CartesianProductHolder8 +}; // class CartesianProductHolder8 + +template <class Generator1, class Generator2, class Generator3, class Generator4, class Generator5, class Generator6, + class Generator7, class Generator8, class Generator9> +class CartesianProductHolder9 +{ +public: + CartesianProductHolder9(const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, + const Generator5& g5, const Generator6& g6, const Generator7& g7, const Generator8& g8, + const Generator9& g9) + : g1_(g1) + , g2_(g2) + , g3_(g3) + , g4_(g4) + , g5_(g5) + , g6_(g6) + , g7_(g7) + , g8_(g8) + , g9_(g9) + { + } + template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, + typename T9> + operator ParamGenerator<::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>>() const + { + return ParamGenerator<::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>>( + new CartesianProductGenerator9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(static_cast<ParamGenerator<T1>>(g1_), + static_cast<ParamGenerator<T2>>(g2_), + static_cast<ParamGenerator<T3>>(g3_), + static_cast<ParamGenerator<T4>>(g4_), + static_cast<ParamGenerator<T5>>(g5_), + static_cast<ParamGenerator<T6>>(g6_), + static_cast<ParamGenerator<T7>>(g7_), + static_cast<ParamGenerator<T8>>(g8_), + static_cast<ParamGenerator<T9>>(g9_))); + } -template <class Generator1, class Generator2, class Generator3, - class Generator4, class Generator5, class Generator6, class Generator7, - class Generator8, class Generator9> -class CartesianProductHolder9 { - public: -CartesianProductHolder9(const Generator1& g1, const Generator2& g2, - const Generator3& g3, const Generator4& g4, const Generator5& g5, - const Generator6& g6, const Generator7& g7, const Generator8& g8, - const Generator9& g9) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), - g9_(g9) {} - template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9> - operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, - T9> >() const { - return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, - T9> >( - new CartesianProductGenerator9<T1, T2, T3, T4, T5, T6, T7, T8, T9>( - static_cast<ParamGenerator<T1> >(g1_), - static_cast<ParamGenerator<T2> >(g2_), - static_cast<ParamGenerator<T3> >(g3_), - static_cast<ParamGenerator<T4> >(g4_), - static_cast<ParamGenerator<T5> >(g5_), - static_cast<ParamGenerator<T6> >(g6_), - static_cast<ParamGenerator<T7> >(g7_), - static_cast<ParamGenerator<T8> >(g8_), - static_cast<ParamGenerator<T9> >(g9_))); - } - - private: +private: // No implementation - assignment is unsupported. void operator=(const CartesianProductHolder9& other); @@ -15700,40 +17563,47 @@ CartesianProductHolder9(const Generator1& g1, const Generator2& g2, const Generator7 g7_; const Generator8 g8_; const Generator9 g9_; -}; // class CartesianProductHolder9 +}; // class CartesianProductHolder9 + +template <class Generator1, class Generator2, class Generator3, class Generator4, class Generator5, class Generator6, + class Generator7, class Generator8, class Generator9, class Generator10> +class CartesianProductHolder10 +{ +public: + CartesianProductHolder10(const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, + const Generator5& g5, const Generator6& g6, const Generator7& g7, const Generator8& g8, + const Generator9& g9, const Generator10& g10) + : g1_(g1) + , g2_(g2) + , g3_(g3) + , g4_(g4) + , g5_(g5) + , g6_(g6) + , g7_(g7) + , g8_(g8) + , g9_(g9) + , g10_(g10) + { + } + template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, + typename T9, typename T10> + operator ParamGenerator<::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>>() const + { + return ParamGenerator<::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>>( + new CartesianProductGenerator10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>( + static_cast<ParamGenerator<T1>>(g1_), + static_cast<ParamGenerator<T2>>(g2_), + static_cast<ParamGenerator<T3>>(g3_), + static_cast<ParamGenerator<T4>>(g4_), + static_cast<ParamGenerator<T5>>(g5_), + static_cast<ParamGenerator<T6>>(g6_), + static_cast<ParamGenerator<T7>>(g7_), + static_cast<ParamGenerator<T8>>(g8_), + static_cast<ParamGenerator<T9>>(g9_), + static_cast<ParamGenerator<T10>>(g10_))); + } -template <class Generator1, class Generator2, class Generator3, - class Generator4, class Generator5, class Generator6, class Generator7, - class Generator8, class Generator9, class Generator10> -class CartesianProductHolder10 { - public: -CartesianProductHolder10(const Generator1& g1, const Generator2& g2, - const Generator3& g3, const Generator4& g4, const Generator5& g5, - const Generator6& g6, const Generator7& g7, const Generator8& g8, - const Generator9& g9, const Generator10& g10) - : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), - g9_(g9), g10_(g10) {} - template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10> - operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, - T9, T10> >() const { - return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, - T9, T10> >( - new CartesianProductGenerator10<T1, T2, T3, T4, T5, T6, T7, T8, T9, - T10>( - static_cast<ParamGenerator<T1> >(g1_), - static_cast<ParamGenerator<T2> >(g2_), - static_cast<ParamGenerator<T3> >(g3_), - static_cast<ParamGenerator<T4> >(g4_), - static_cast<ParamGenerator<T5> >(g5_), - static_cast<ParamGenerator<T6> >(g6_), - static_cast<ParamGenerator<T7> >(g7_), - static_cast<ParamGenerator<T8> >(g8_), - static_cast<ParamGenerator<T9> >(g9_), - static_cast<ParamGenerator<T10> >(g10_))); - } - - private: +private: // No implementation - assignment is unsupported. void operator=(const CartesianProductHolder10& other); @@ -15747,16 +17617,16 @@ CartesianProductHolder10(const Generator1& g1, const Generator2& g2, const Generator8 g8_; const Generator9 g9_; const Generator10 g10_; -}; // class CartesianProductHolder10 +}; // class CartesianProductHolder10 -# endif // GTEST_HAS_COMBINE +#endif // GTEST_HAS_COMBINE -} // namespace internal -} // namespace testing +} // namespace internal +} // namespace testing -#endif // GTEST_HAS_PARAM_TEST +#endif // GTEST_HAS_PARAM_TEST -#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ #if GTEST_HAS_PARAM_TEST @@ -15805,13 +17675,14 @@ namespace testing { // to contain any elements. // template <typename T, typename IncrementT> -internal::ParamGenerator<T> Range(T start, T end, IncrementT step) { - return internal::ParamGenerator<T>( - new internal::RangeGenerator<T, IncrementT>(start, end, step)); +internal::ParamGenerator<T> Range(T start, T end, IncrementT step) +{ + return internal::ParamGenerator<T>(new internal::RangeGenerator<T, IncrementT>(start, end, step)); } template <typename T> -internal::ParamGenerator<T> Range(T start, T end) { +internal::ParamGenerator<T> Range(T start, T end) +{ return Range(start, end, 1); } @@ -15871,23 +17742,22 @@ internal::ParamGenerator<T> Range(T start, T end) { // ValuesIn(l.begin(), l.end())); // template <typename ForwardIterator> -internal::ParamGenerator< - typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type> -ValuesIn(ForwardIterator begin, ForwardIterator end) { - typedef typename ::testing::internal::IteratorTraits<ForwardIterator> - ::value_type ParamType; - return internal::ParamGenerator<ParamType>( - new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end)); +internal::ParamGenerator<typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type> +ValuesIn(ForwardIterator begin, ForwardIterator end) +{ + typedef typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type ParamType; + return internal::ParamGenerator<ParamType>(new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end)); } template <typename T, size_t N> -internal::ParamGenerator<T> ValuesIn(const T (&array)[N]) { +internal::ParamGenerator<T> ValuesIn(const T(&array)[N]) +{ return ValuesIn(array, array + N); } template <class Container> -internal::ParamGenerator<typename Container::value_type> ValuesIn( - const Container& container) { +internal::ParamGenerator<typename Container::value_type> ValuesIn(const Container& container) +{ return ValuesIn(container.begin(), container.end()); } @@ -15911,856 +17781,2558 @@ internal::ParamGenerator<typename Container::value_type> ValuesIn( // Currently, Values() supports from 1 to 50 parameters. // template <typename T1> -internal::ValueArray1<T1> Values(T1 v1) { +internal::ValueArray1<T1> Values(T1 v1) +{ return internal::ValueArray1<T1>(v1); } template <typename T1, typename T2> -internal::ValueArray2<T1, T2> Values(T1 v1, T2 v2) { +internal::ValueArray2<T1, T2> Values(T1 v1, T2 v2) +{ return internal::ValueArray2<T1, T2>(v1, v2); } template <typename T1, typename T2, typename T3> -internal::ValueArray3<T1, T2, T3> Values(T1 v1, T2 v2, T3 v3) { +internal::ValueArray3<T1, T2, T3> Values(T1 v1, T2 v2, T3 v3) +{ return internal::ValueArray3<T1, T2, T3>(v1, v2, v3); } template <typename T1, typename T2, typename T3, typename T4> -internal::ValueArray4<T1, T2, T3, T4> Values(T1 v1, T2 v2, T3 v3, T4 v4) { +internal::ValueArray4<T1, T2, T3, T4> Values(T1 v1, T2 v2, T3 v3, T4 v4) +{ return internal::ValueArray4<T1, T2, T3, T4>(v1, v2, v3, v4); } template <typename T1, typename T2, typename T3, typename T4, typename T5> -internal::ValueArray5<T1, T2, T3, T4, T5> Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5) { +internal::ValueArray5<T1, T2, T3, T4, T5> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) +{ return internal::ValueArray5<T1, T2, T3, T4, T5>(v1, v2, v3, v4, v5); } -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6> -internal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(T1 v1, T2 v2, T3 v3, - T4 v4, T5 v5, T6 v6) { +template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6> +internal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) +{ return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(v1, v2, v3, v4, v5, v6); } -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7> -internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(T1 v1, T2 v2, T3 v3, - T4 v4, T5 v5, T6 v6, T7 v7) { - return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5, - v6, v7); +template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7> +internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) +{ + return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5, v6, v7); } -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8> -internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) { - return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4, - v5, v6, v7, v8); +template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8> +internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) +{ + return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4, v5, v6, v7, v8); } -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9> -internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) { - return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3, - v4, v5, v6, v7, v8, v9); +template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, + typename T9> +internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, + T9 v9) +{ + return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3, v4, v5, v6, v7, v8, v9); } -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10> -internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1, - T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) { - return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1, - v2, v3, v4, v5, v6, v7, v8, v9, v10); +template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, + typename T9, typename T10> +internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10) +{ + return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10); } -template <typename T1, typename T2, typename T3, typename T4, typename T5, - typename T6, typename T7, typename T8, typename T9, typename T10, - typename T11> -internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, - T11> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11) { - return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, - T11>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11); +template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, + typename T9, typename T10, typename T11> +internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, + T7 v7, T8 v8, T9 v9, T10 v10, T11 v11) +{ + return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>( + v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11); } -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> -internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12) { - return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12); +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> +internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12) +{ + return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>( + v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12); } -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> -internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, - T13> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13) { - return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13); +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> +internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13) +{ + return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>( + v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13); } -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> -internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) { - return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, - v14); +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> +internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) +{ + return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>( + v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14); } -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> -internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, - T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) { - return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, - v13, v14, v15); +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> +internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15) +{ + return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>( + v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15); } -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> -internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16) { - return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, - v12, v13, v14, v15, v16); +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> +internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16) +{ + return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>( + v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16); } -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> -internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17) { - return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, - v11, v12, v13, v14, v15, v16, v17); +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> +internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17) +{ + return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>( + v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17); } -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> -internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, - T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18) { - return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18>(v1, v2, v3, v4, v5, v6, v7, v8, v9, - v10, v11, v12, v13, v14, v15, v16, v17, v18); +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> +internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18) +{ + return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>( + v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18); } -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> -internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, - T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, - T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) { - return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19>(v1, v2, v3, v4, v5, v6, v7, v8, - v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19); +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> +internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) +{ + return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>( + v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19); } -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> -internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20> Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, - T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) { - return internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20>(v1, v2, v3, v4, v5, v6, v7, - v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20); +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> +internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) +{ + return internal:: + ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>( + v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20); } -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> -internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21> Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, - T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) { - return internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(v1, v2, v3, v4, v5, v6, - v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21); +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> +internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) +{ + return internal:: + ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>( + v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21); } -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> -internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22> Values(T1 v1, T2 v2, T3 v3, - T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22) { - return internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(v1, v2, v3, v4, - v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, - v20, v21, v22); +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> +internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, + T22> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) +{ + return internal:: + ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>( + v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22); } -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> -internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22, T23 v23) { - return internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(v1, v2, v3, - v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, - v20, v21, v22, v23); +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> +internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, + T22, T23> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) +{ + return internal::ValueArray23<T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22, + T23>( + v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23); } -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> -internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, - T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22, T23 v23, T24 v24) { - return internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, - T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(v1, v2, - v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, - v19, v20, v21, v22, v23, v24); +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> +internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, + T22, T23, T24> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) +{ + return internal::ValueArray24<T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22, + T23, + T24>( + v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24); } -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> -internal::ValueArray25<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> Values(T1 v1, - T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, - T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, - T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) { - return internal::ValueArray25<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>(v1, - v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, - v18, v19, v20, v21, v22, v23, v24, v25); +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> +internal::ValueArray25<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) +{ + return internal::ValueArray25<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25); } -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> -internal::ValueArray26<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> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26) { - return internal::ValueArray26<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>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, - v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26); +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> +internal::ValueArray26<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26) +{ + return internal::ValueArray26<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26); } -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> -internal::ValueArray27<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> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27) { - return internal::ValueArray27<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>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, - v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27); +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> +internal::ValueArray27<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27) +{ + return internal::ValueArray27<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27); } -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> -internal::ValueArray28<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> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28) { - return internal::ValueArray28<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>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, - v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, - v28); +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> +internal::ValueArray28<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27, T28 v28) +{ + return internal::ValueArray28<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27, + v28); } -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> -internal::ValueArray29<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> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29) { - return internal::ValueArray29<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>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, - v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, - v27, v28, v29); +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> +internal::ValueArray29<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27, T28 v28, T29 v29) +{ + return internal::ValueArray29<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27, + v28, + v29); } -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> -internal::ValueArray30<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> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, - T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, - T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, - T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) { - return internal::ValueArray30<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>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, - v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, - v26, v27, v28, v29, v30); +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> +internal::ValueArray30<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27, T28 v28, T29 v29, T30 v30) +{ + return internal::ValueArray30<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27, + v28, + v29, + v30); } -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> -internal::ValueArray31<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> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) { - return internal::ValueArray31<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>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, - v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, - v25, v26, v27, v28, v29, v30, v31); +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> +internal::ValueArray31<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) +{ + return internal::ValueArray31<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27, + v28, + v29, + v30, + v31); } -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> -internal::ValueArray32<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> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, - T32 v32) { - return internal::ValueArray32<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>(v1, v2, v3, v4, v5, v6, v7, v8, v9, - v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, - v24, v25, v26, v27, v28, v29, v30, v31, v32); +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> +internal::ValueArray32<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) +{ + return internal::ValueArray32<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27, + v28, + v29, + v30, + v31, + v32); } -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> -internal::ValueArray33<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> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, - T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, - T32 v32, T33 v33) { - return internal::ValueArray33<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>(v1, v2, v3, v4, v5, v6, v7, v8, - v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, - v24, v25, v26, v27, v28, v29, v30, v31, v32, v33); +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> +internal::ValueArray33<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33) +{ + return internal::ValueArray33<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27, + v28, + v29, + v30, + v31, + v32, + v33); } -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> -internal::ValueArray34<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> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, - T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, - T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, - T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, - T31 v31, T32 v32, T33 v33, T34 v34) { - return internal::ValueArray34<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>(v1, v2, v3, v4, v5, v6, v7, - v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, - v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34); +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> +internal::ValueArray34<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34) +{ + return internal::ValueArray34<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27, + v28, + v29, + v30, + v31, + v32, + v33, + v34); } -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> -internal::ValueArray35<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> Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, - T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, - T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, - T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) { - return internal::ValueArray35<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>(v1, v2, v3, v4, v5, v6, - v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, - v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35); +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> +internal::ValueArray35<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) +{ + return internal::ValueArray35<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27, + v28, + v29, + v30, + v31, + v32, + v33, + v34, + v35); } -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> -internal::ValueArray36<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> Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, - T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, - T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, - T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) { - return internal::ValueArray36<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>(v1, v2, v3, v4, - v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, - v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, - v34, v35, v36); +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> +internal::ValueArray36<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) +{ + return internal::ValueArray36<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27, + v28, + v29, + v30, + v31, + v32, + v33, + v34, + v35, + v36); } -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> -internal::ValueArray37<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> Values(T1 v1, T2 v2, T3 v3, - T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, - T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, - T37 v37) { - return internal::ValueArray37<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>(v1, v2, v3, - v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, - v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, - v34, v35, v36, v37); +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> +internal::ValueArray37<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37) +{ + return internal::ValueArray37<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27, + v28, + v29, + v30, + v31, + v32, + v33, + v34, + v35, + v36, + v37); } -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> -internal::ValueArray38<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> Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, - T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, - T37 v37, T38 v38) { - return internal::ValueArray38<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>(v1, v2, - v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, - v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, - v33, v34, v35, v36, v37, v38); +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> +internal::ValueArray38<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) +{ + return internal::ValueArray38<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27, + v28, + v29, + v30, + v31, + v32, + v33, + v34, + v35, + v36, + v37, + v38); } -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> -internal::ValueArray39<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> Values(T1 v1, T2 v2, - T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, - T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, - T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, - T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, - T37 v37, T38 v38, T39 v39) { - return internal::ValueArray39<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>(v1, - v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, - v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, - v32, v33, v34, v35, v36, v37, v38, v39); +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> +internal::ValueArray39<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, + T39 v39) +{ + return internal::ValueArray39<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27, + v28, + v29, + v30, + v31, + v32, + v33, + v34, + v35, + v36, + v37, + v38, + v39); } -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> -internal::ValueArray40<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> Values(T1 v1, - T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, - T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, - T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, - T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, - T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) { - return internal::ValueArray40<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>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, - v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, - v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40); +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> +internal::ValueArray40<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, + T39 v39, T40 v40) +{ + return internal::ValueArray40<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27, + v28, + v29, + v30, + v31, + v32, + v33, + v34, + v35, + v36, + v37, + v38, + v39, + v40); } -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> -internal::ValueArray41<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> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) { - return internal::ValueArray41<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>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, - v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, - v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41); +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> +internal::ValueArray41<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, + T39 v39, T40 v40, T41 v41) +{ + return internal::ValueArray41<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27, + v28, + v29, + v30, + v31, + v32, + v33, + v34, + v35, + v36, + v37, + v38, + v39, + v40, + v41); } -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> -internal::ValueArray42<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> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42) { - return internal::ValueArray42<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>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, - v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, - v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, - v42); +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> +internal::ValueArray42<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, + T39 v39, T40 v40, T41 v41, T42 v42) +{ + return internal::ValueArray42<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27, + v28, + v29, + v30, + v31, + v32, + v33, + v34, + v35, + v36, + v37, + v38, + v39, + v40, + v41, + v42); } -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> -internal::ValueArray43<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> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43) { - return internal::ValueArray43<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>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, - v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, - v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, - v41, v42, v43); +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> +internal::ValueArray43<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, + T39 v39, T40 v40, T41 v41, T42 v42, T43 v43) +{ + return internal::ValueArray43<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27, + v28, + v29, + v30, + v31, + v32, + v33, + v34, + v35, + v36, + v37, + v38, + v39, + v40, + v41, + v42, + v43); } -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> -internal::ValueArray44<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> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, - T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, - T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, - T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, - T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, - T42 v42, T43 v43, T44 v44) { - return internal::ValueArray44<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>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, - v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, - v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, - v40, v41, v42, v43, v44); +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> +internal::ValueArray44<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, + T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44) +{ + return internal::ValueArray44<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27, + v28, + v29, + v30, + v31, + v32, + v33, + v34, + v35, + v36, + v37, + v38, + v39, + v40, + v41, + v42, + v43, + v44); } -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> -internal::ValueArray45<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> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, - T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, - T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, - T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, - T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, - T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) { - return internal::ValueArray45<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>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, - v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, - v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, - v39, v40, v41, v42, v43, v44, v45); +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> +internal::ValueArray45<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, + T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) +{ + return internal::ValueArray45<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27, + v28, + v29, + v30, + v31, + v32, + v33, + v34, + v35, + v36, + v37, + v38, + v39, + v40, + v41, + v42, + v43, + v44, + v45); } -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> -internal::ValueArray46<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> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, - T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, - T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) { - return internal::ValueArray46<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>(v1, v2, v3, v4, v5, v6, v7, v8, v9, - v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, - v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, - v38, v39, v40, v41, v42, v43, v44, v45, v46); +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> +internal::ValueArray46<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, + T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) +{ + return internal::ValueArray46<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27, + v28, + v29, + v30, + v31, + v32, + v33, + v34, + v35, + v36, + v37, + v38, + v39, + v40, + v41, + v42, + v43, + v44, + v45, + v46); } -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> -internal::ValueArray47<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> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, - T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, - T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, - T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) { - return internal::ValueArray47<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>(v1, v2, v3, v4, v5, v6, v7, v8, - v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, - v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, - v38, v39, v40, v41, v42, v43, v44, v45, v46, v47); +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> +internal::ValueArray47<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, + T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) +{ + return internal::ValueArray47<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27, + v28, + v29, + v30, + v31, + v32, + v33, + v34, + v35, + v36, + v37, + v38, + v39, + v40, + v41, + v42, + v43, + v44, + v45, + v46, + v47); } -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> -internal::ValueArray48<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> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, - T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, - T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, - T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, - T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, - T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, - T48 v48) { - return internal::ValueArray48<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>(v1, v2, v3, v4, v5, v6, v7, - v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, - v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, - v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48); +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> +internal::ValueArray48<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, + T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) +{ + return internal::ValueArray48<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27, + v28, + v29, + v30, + v31, + v32, + v33, + v34, + v35, + v36, + v37, + v38, + v39, + v40, + v41, + v42, + v43, + v44, + v45, + v46, + v47, + v48); } -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> -internal::ValueArray49<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> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, - T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, - T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, - T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, - T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, - T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, - T47 v47, T48 v48, T49 v49) { - return internal::ValueArray49<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>(v1, v2, v3, v4, v5, v6, - v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, - v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, - v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49); +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> +internal::ValueArray49<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, + T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49) +{ + return internal::ValueArray49<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27, + v28, + v29, + v30, + v31, + v32, + v33, + v34, + v35, + v36, + v37, + v38, + v39, + v40, + v41, + v42, + v43, + v44, + v45, + v46, + v47, + v48, + v49); } -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> -internal::ValueArray50<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> Values(T1 v1, T2 v2, T3 v3, T4 v4, - T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, - T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, - T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, - T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, - T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, - T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) { - return internal::ValueArray50<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>(v1, v2, v3, v4, - v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, - v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, - v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, - v48, v49, v50); +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> +internal::ValueArray50<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> +Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, + T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, + T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) +{ + return internal::ValueArray50<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>(v1, + v2, + v3, + v4, + v5, + v6, + v7, + v8, + v9, + v10, + v11, + v12, + v13, + v14, + v15, + v16, + v17, + v18, + v19, + v20, + v21, + v22, + v23, + v24, + v25, + v26, + v27, + v28, + v29, + v30, + v31, + v32, + v33, + v34, + v35, + v36, + v37, + v38, + v39, + v40, + v41, + v42, + v43, + v44, + v45, + v46, + v47, + v48, + v49, + v50); } // Bool() allows generating tests with parameters in a set of (false, true). @@ -16783,11 +20355,12 @@ internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, // } // INSTANTIATE_TEST_CASE_P(BoolSequence, FlagDependentTest, Bool()); // -inline internal::ParamGenerator<bool> Bool() { +inline internal::ParamGenerator<bool> Bool() +{ return Values(false, true); } -# if GTEST_HAS_COMBINE +#if GTEST_HAS_COMBINE // Combine() allows the user to combine two or more sequences to produce // values of a Cartesian product of those sequences' elements. // @@ -16837,154 +20410,155 @@ inline internal::ParamGenerator<bool> Bool() { // Combine(Bool(), Bool())); // template <typename Generator1, typename Generator2> -internal::CartesianProductHolder2<Generator1, Generator2> Combine( - const Generator1& g1, const Generator2& g2) { - return internal::CartesianProductHolder2<Generator1, Generator2>( - g1, g2); +internal::CartesianProductHolder2<Generator1, Generator2> Combine(const Generator1& g1, const Generator2& g2) +{ + return internal::CartesianProductHolder2<Generator1, Generator2>(g1, g2); } template <typename Generator1, typename Generator2, typename Generator3> -internal::CartesianProductHolder3<Generator1, Generator2, Generator3> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3) { - return internal::CartesianProductHolder3<Generator1, Generator2, Generator3>( - g1, g2, g3); +internal::CartesianProductHolder3<Generator1, Generator2, Generator3> +Combine(const Generator1& g1, const Generator2& g2, const Generator3& g3) +{ + return internal::CartesianProductHolder3<Generator1, Generator2, Generator3>(g1, g2, g3); } -template <typename Generator1, typename Generator2, typename Generator3, - typename Generator4> -internal::CartesianProductHolder4<Generator1, Generator2, Generator3, - Generator4> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4) { - return internal::CartesianProductHolder4<Generator1, Generator2, Generator3, - Generator4>( - g1, g2, g3, g4); +template <typename Generator1, typename Generator2, typename Generator3, typename Generator4> +internal::CartesianProductHolder4<Generator1, Generator2, Generator3, Generator4> +Combine(const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4) +{ + return internal::CartesianProductHolder4<Generator1, Generator2, Generator3, Generator4>(g1, g2, g3, g4); } -template <typename Generator1, typename Generator2, typename Generator3, - typename Generator4, typename Generator5> -internal::CartesianProductHolder5<Generator1, Generator2, Generator3, - Generator4, Generator5> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5) { - return internal::CartesianProductHolder5<Generator1, Generator2, Generator3, - Generator4, Generator5>( +template <typename Generator1, typename Generator2, typename Generator3, typename Generator4, typename Generator5> +internal::CartesianProductHolder5<Generator1, Generator2, Generator3, Generator4, Generator5> +Combine(const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, const Generator5& g5) +{ + return internal::CartesianProductHolder5<Generator1, Generator2, Generator3, Generator4, Generator5>( g1, g2, g3, g4, g5); } -template <typename Generator1, typename Generator2, typename Generator3, - typename Generator4, typename Generator5, typename Generator6> -internal::CartesianProductHolder6<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5, const Generator6& g6) { - return internal::CartesianProductHolder6<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6>( +template <typename Generator1, typename Generator2, typename Generator3, typename Generator4, typename Generator5, + typename Generator6> +internal::CartesianProductHolder6<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6> +Combine(const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6) +{ + return internal::CartesianProductHolder6<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6>( g1, g2, g3, g4, g5, g6); } -template <typename Generator1, typename Generator2, typename Generator3, - typename Generator4, typename Generator5, typename Generator6, - typename Generator7> -internal::CartesianProductHolder7<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5, const Generator6& g6, - const Generator7& g7) { - return internal::CartesianProductHolder7<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7>( - g1, g2, g3, g4, g5, g6, g7); +template <typename Generator1, typename Generator2, typename Generator3, typename Generator4, typename Generator5, + typename Generator6, typename Generator7> +internal::CartesianProductHolder7<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7> +Combine(const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6, const Generator7& g7) +{ + return internal:: + CartesianProductHolder7<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7>( + g1, g2, g3, g4, g5, g6, g7); } -template <typename Generator1, typename Generator2, typename Generator3, - typename Generator4, typename Generator5, typename Generator6, - typename Generator7, typename Generator8> -internal::CartesianProductHolder8<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7, Generator8> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5, const Generator6& g6, - const Generator7& g7, const Generator8& g8) { - return internal::CartesianProductHolder8<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7, Generator8>( - g1, g2, g3, g4, g5, g6, g7, g8); +template <typename Generator1, typename Generator2, typename Generator3, typename Generator4, typename Generator5, + typename Generator6, typename Generator7, typename Generator8> +internal::CartesianProductHolder8<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, + Generator8> +Combine(const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6, const Generator7& g7, const Generator8& g8) +{ + return internal::CartesianProductHolder8<Generator1, + Generator2, + Generator3, + Generator4, + Generator5, + Generator6, + Generator7, + Generator8>(g1, g2, g3, g4, g5, g6, g7, g8); } -template <typename Generator1, typename Generator2, typename Generator3, - typename Generator4, typename Generator5, typename Generator6, - typename Generator7, typename Generator8, typename Generator9> -internal::CartesianProductHolder9<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7, Generator8, - Generator9> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5, const Generator6& g6, - const Generator7& g7, const Generator8& g8, const Generator9& g9) { - return internal::CartesianProductHolder9<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7, Generator8, Generator9>( - g1, g2, g3, g4, g5, g6, g7, g8, g9); +template <typename Generator1, typename Generator2, typename Generator3, typename Generator4, typename Generator5, + typename Generator6, typename Generator7, typename Generator8, typename Generator9> +internal::CartesianProductHolder9<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, + Generator8, Generator9> +Combine(const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6, const Generator7& g7, const Generator8& g8, const Generator9& g9) +{ + return internal::CartesianProductHolder9<Generator1, + Generator2, + Generator3, + Generator4, + Generator5, + Generator6, + Generator7, + Generator8, + Generator9>(g1, g2, g3, g4, g5, g6, g7, g8, g9); } -template <typename Generator1, typename Generator2, typename Generator3, - typename Generator4, typename Generator5, typename Generator6, - typename Generator7, typename Generator8, typename Generator9, - typename Generator10> -internal::CartesianProductHolder10<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, - Generator10> Combine( - const Generator1& g1, const Generator2& g2, const Generator3& g3, - const Generator4& g4, const Generator5& g5, const Generator6& g6, - const Generator7& g7, const Generator8& g8, const Generator9& g9, - const Generator10& g10) { - return internal::CartesianProductHolder10<Generator1, Generator2, Generator3, - Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, - Generator10>( - g1, g2, g3, g4, g5, g6, g7, g8, g9, g10); +template <typename Generator1, typename Generator2, typename Generator3, typename Generator4, typename Generator5, + typename Generator6, typename Generator7, typename Generator8, typename Generator9, typename Generator10> +internal::CartesianProductHolder10<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, + Generator8, Generator9, Generator10> +Combine(const Generator1& g1, const Generator2& g2, const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6, const Generator7& g7, const Generator8& g8, const Generator9& g9, const Generator10& g10) +{ + return internal::CartesianProductHolder10<Generator1, + Generator2, + Generator3, + Generator4, + Generator5, + Generator6, + Generator7, + Generator8, + Generator9, + Generator10>(g1, g2, g3, g4, g5, g6, g7, g8, g9, g10); } -# endif // GTEST_HAS_COMBINE - - - -# define TEST_P(test_case_name, test_name) \ - class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ - : public test_case_name { \ - public: \ - GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \ - virtual void TestBody(); \ - private: \ - static int AddToRegistry() { \ - ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ - GetTestCasePatternHolder<test_case_name>(\ - #test_case_name, __FILE__, __LINE__)->AddTestPattern(\ - #test_case_name, \ - #test_name, \ - new ::testing::internal::TestMetaFactory< \ - GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \ - return 0; \ - } \ - static int gtest_registering_dummy_; \ - GTEST_DISALLOW_COPY_AND_ASSIGN_(\ - GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \ - }; \ - int GTEST_TEST_CLASS_NAME_(test_case_name, \ - test_name)::gtest_registering_dummy_ = \ - GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \ +#endif // GTEST_HAS_COMBINE + + +#define TEST_P(test_case_name, test_name) \ + class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ + : public test_case_name \ + { \ + public: \ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() \ + { \ + } \ + virtual void TestBody(); \ + \ + private: \ + static int AddToRegistry() \ + { \ + ::testing::UnitTest::GetInstance() \ + ->parameterized_test_registry() \ + .GetTestCasePatternHolder<test_case_name>(#test_case_name, __FILE__, __LINE__) \ + ->AddTestPattern( \ + #test_case_name, \ + #test_name, \ + new ::testing::internal::TestMetaFactory<GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \ + return 0; \ + } \ + static int gtest_registering_dummy_; \ + GTEST_DISALLOW_COPY_AND_ASSIGN_(GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \ + }; \ + int GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::gtest_registering_dummy_ = \ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \ void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() -# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \ - ::testing::internal::ParamGenerator<test_case_name::ParamType> \ - gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \ - int gtest_##prefix##test_case_name##_dummy_ = \ - ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ - GetTestCasePatternHolder<test_case_name>(\ - #test_case_name, __FILE__, __LINE__)->AddTestCaseInstantiation(\ - #prefix, \ - >est_##prefix##test_case_name##_EvalGenerator_, \ - __FILE__, __LINE__) +#define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \ + ::testing::internal::ParamGenerator<test_case_name::ParamType> gtest_##prefix##test_case_name##_EvalGenerator_() \ + { \ + return generator; \ + } \ + int gtest_##prefix##test_case_name##_dummy_ = \ + ::testing::UnitTest::GetInstance() \ + ->parameterized_test_registry() \ + .GetTestCasePatternHolder<test_case_name>(#test_case_name, __FILE__, __LINE__) \ + ->AddTestCaseInstantiation(#prefix, >est_##prefix##test_case_name##_EvalGenerator_, __FILE__, __LINE__) -} // namespace testing +} // namespace testing -#endif // GTEST_HAS_PARAM_TEST +#endif // GTEST_HAS_PARAM_TEST -#endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ +#endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ // Copyright 2006, Google Inc. // All rights reserved. // @@ -17039,10 +20613,9 @@ internal::CartesianProductHolder10<Generator1, Generator2, Generator3, // // Can call MyClass::MyMethod() here. // } -#define FRIEND_TEST(test_case_name, test_name)\ -friend class test_case_name##_##test_name##_Test +#define FRIEND_TEST(test_case_name, test_name) friend class test_case_name##_##test_name##_Test -#endif // GTEST_INCLUDE_GTEST_GTEST_PROD_H_ +#endif // GTEST_INCLUDE_GTEST_GTEST_PROD_H_ // Copyright 2008, Google Inc. // All rights reserved. // @@ -17087,62 +20660,87 @@ namespace testing { // assertion or an explicit FAIL(), ADD_FAILURE(), or SUCCESS()). // // Don't inherit from TestPartResult as its destructor is not virtual. -class GTEST_API_ TestPartResult { - public: +class GTEST_API_ TestPartResult +{ +public: // The possible outcomes of a test part (i.e. an assertion or an // explicit SUCCEED(), FAIL(), or ADD_FAILURE()). - enum Type { - kSuccess, // Succeeded. - kNonFatalFailure, // Failed but the test can continue. - kFatalFailure // Failed and the test should be terminated. + enum Type + { + kSuccess, // Succeeded. + kNonFatalFailure, // Failed but the test can continue. + kFatalFailure // Failed and the test should be terminated. }; // C'tor. TestPartResult does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestPartResult object. - TestPartResult(Type a_type, - const char* a_file_name, - int a_line_number, - const char* a_message) - : type_(a_type), - file_name_(a_file_name == NULL ? "" : a_file_name), - line_number_(a_line_number), - summary_(ExtractSummary(a_message)), - message_(a_message) { + TestPartResult(Type a_type, const char* a_file_name, int a_line_number, const char* a_message) + : type_(a_type) + , file_name_(a_file_name == NULL ? "" : a_file_name) + , line_number_(a_line_number) + , summary_(ExtractSummary(a_message)) + , message_(a_message) + { } // Gets the outcome of the test part. - Type type() const { return type_; } + Type type() const + { + return type_; + } // Gets the name of the source file where the test part took place, or // NULL if it's unknown. - const char* file_name() const { + const char* file_name() const + { return file_name_.empty() ? NULL : file_name_.c_str(); } // Gets the line in the source file where the test part took place, // or -1 if it's unknown. - int line_number() const { return line_number_; } + int line_number() const + { + return line_number_; + } // Gets the summary of the failure message. - const char* summary() const { return summary_.c_str(); } + const char* summary() const + { + return summary_.c_str(); + } // Gets the message associated with the test part. - const char* message() const { return message_.c_str(); } + const char* message() const + { + return message_.c_str(); + } // Returns true iff the test part passed. - bool passed() const { return type_ == kSuccess; } + bool passed() const + { + return type_ == kSuccess; + } // Returns true iff the test part failed. - bool failed() const { return type_ != kSuccess; } + bool failed() const + { + return type_ != kSuccess; + } // Returns true iff the test part non-fatally failed. - bool nonfatally_failed() const { return type_ == kNonFatalFailure; } + bool nonfatally_failed() const + { + return type_ == kNonFatalFailure; + } // Returns true iff the test part fatally failed. - bool fatally_failed() const { return type_ == kFatalFailure; } + bool fatally_failed() const + { + return type_ == kFatalFailure; + } - private: +private: Type type_; // Gets the summary of the failure message by omitting the stack @@ -17155,8 +20753,8 @@ class GTEST_API_ TestPartResult { // The line in the source file where the test part took place, or -1 // if the line number is unknown. int line_number_; - std::string summary_; // The test failure summary. - std::string message_; // The test failure message. + std::string summary_; // The test failure summary. + std::string message_; // The test failure message. }; // Prints a TestPartResult object. @@ -17166,9 +20764,12 @@ std::ostream& operator<<(std::ostream& os, const TestPartResult& result); // // Don't inherit from TestPartResultArray as its destructor is not // virtual. -class GTEST_API_ TestPartResultArray { - public: - TestPartResultArray() {} +class GTEST_API_ TestPartResultArray +{ +public: + TestPartResultArray() + { + } // Appends the given TestPartResult to the array. void Append(const TestPartResult& result); @@ -17179,16 +20780,19 @@ class GTEST_API_ TestPartResultArray { // Returns the number of TestPartResult objects in the array. int size() const; - private: +private: std::vector<TestPartResult> array_; GTEST_DISALLOW_COPY_AND_ASSIGN_(TestPartResultArray); }; // This interface knows how to report a test part result. -class TestPartResultReporterInterface { - public: - virtual ~TestPartResultReporterInterface() {} +class TestPartResultReporterInterface +{ +public: + virtual ~TestPartResultReporterInterface() + { + } virtual void ReportTestPartResult(const TestPartResult& result) = 0; }; @@ -17201,25 +20805,29 @@ namespace internal { // reported, it only delegates the reporting to the former result reporter. // The original result reporter is restored in the destructor. // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -class GTEST_API_ HasNewFatalFailureHelper - : public TestPartResultReporterInterface { - public: +class GTEST_API_ HasNewFatalFailureHelper : public TestPartResultReporterInterface +{ +public: HasNewFatalFailureHelper(); virtual ~HasNewFatalFailureHelper(); virtual void ReportTestPartResult(const TestPartResult& result); - bool has_new_fatal_failure() const { return has_new_fatal_failure_; } - private: + bool has_new_fatal_failure() const + { + return has_new_fatal_failure_; + } + +private: bool has_new_fatal_failure_; TestPartResultReporterInterface* original_reporter_; GTEST_DISALLOW_COPY_AND_ASSIGN_(HasNewFatalFailureHelper); }; -} // namespace internal +} // namespace internal -} // namespace testing +} // namespace testing -#endif // GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_ +#endif // GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_ // Copyright 2008 Google Inc. // All Rights Reserved. // @@ -17304,7 +20912,7 @@ TYPED_TEST(FooTest, DoesBlah) { TYPED_TEST(FooTest, HasPropertyA) { ... } -#endif // 0 +#endif // 0 // Type-parameterized tests are abstract test patterns parameterized // by a type. Compared with typed tests, type-parameterized tests @@ -17366,7 +20974,7 @@ INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes); // directly without Types<...>: // INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, int); -#endif // 0 +#endif // 0 // Implements typed tests. @@ -17377,35 +20985,32 @@ INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes); // // Expands to the name of the typedef for the type parameters of the // given test case. -# define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_ +#define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_ // The 'Types' template argument below must have spaces around it // since some compilers may choke on '>>' when passing a template // instance (e.g. Types<int>) -# define TYPED_TEST_CASE(CaseName, Types) \ - typedef ::testing::internal::TypeList< Types >::type \ - GTEST_TYPE_PARAMS_(CaseName) - -# define TYPED_TEST(CaseName, TestName) \ - template <typename gtest_TypeParam_> \ - class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \ - : public CaseName<gtest_TypeParam_> { \ - private: \ - typedef CaseName<gtest_TypeParam_> TestFixture; \ - typedef gtest_TypeParam_ TypeParam; \ - virtual void TestBody(); \ - }; \ - bool gtest_##CaseName##_##TestName##_registered_ GTEST_ATTRIBUTE_UNUSED_ = \ - ::testing::internal::TypeParameterizedTest< \ - CaseName, \ - ::testing::internal::TemplateSel< \ - GTEST_TEST_CLASS_NAME_(CaseName, TestName)>, \ - GTEST_TYPE_PARAMS_(CaseName)>::Register(\ - "", #CaseName, #TestName, 0); \ - template <typename gtest_TypeParam_> \ +#define TYPED_TEST_CASE(CaseName, Types) typedef ::testing::internal::TypeList<Types>::type GTEST_TYPE_PARAMS_(CaseName) + +#define TYPED_TEST(CaseName, TestName) \ + template <typename gtest_TypeParam_> \ + class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \ + : public CaseName<gtest_TypeParam_> \ + { \ + private: \ + typedef CaseName<gtest_TypeParam_> TestFixture; \ + typedef gtest_TypeParam_ TypeParam; \ + virtual void TestBody(); \ + }; \ + bool gtest_##CaseName##_##TestName##_registered_ GTEST_ATTRIBUTE_UNUSED_ = \ + ::testing::internal::TypeParameterizedTest<CaseName, \ + ::testing::internal::TemplateSel<GTEST_TEST_CLASS_NAME_(CaseName, \ + TestName)>, \ + GTEST_TYPE_PARAMS_(CaseName)>::Register("", #CaseName, #TestName, 0); \ + template <typename gtest_TypeParam_> \ void GTEST_TEST_CLASS_NAME_(CaseName, TestName)<gtest_TypeParam_>::TestBody() -#endif // GTEST_HAS_TYPED_TEST +#endif // GTEST_HAS_TYPED_TEST // Implements type-parameterized tests. @@ -17416,67 +21021,64 @@ INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes); // Expands to the namespace name that the type-parameterized tests for // the given type-parameterized test case are defined in. The exact // name of the namespace is subject to change without notice. -# define GTEST_CASE_NAMESPACE_(TestCaseName) \ - gtest_case_##TestCaseName##_ +#define GTEST_CASE_NAMESPACE_(TestCaseName) gtest_case_##TestCaseName##_ // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // // Expands to the name of the variable used to remember the names of // the defined tests in the given test case. -# define GTEST_TYPED_TEST_CASE_P_STATE_(TestCaseName) \ - gtest_typed_test_case_p_state_##TestCaseName##_ +#define GTEST_TYPED_TEST_CASE_P_STATE_(TestCaseName) gtest_typed_test_case_p_state_##TestCaseName##_ // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE DIRECTLY. // // Expands to the name of the variable used to remember the names of // the registered tests in the given test case. -# define GTEST_REGISTERED_TEST_NAMES_(TestCaseName) \ - gtest_registered_test_names_##TestCaseName##_ +#define GTEST_REGISTERED_TEST_NAMES_(TestCaseName) gtest_registered_test_names_##TestCaseName##_ // The variables defined in the type-parameterized test macros are // static as typically these macros are used in a .h file that can be // #included in multiple translation units linked together. -# define TYPED_TEST_CASE_P(CaseName) \ - static ::testing::internal::TypedTestCasePState \ - GTEST_TYPED_TEST_CASE_P_STATE_(CaseName) - -# define TYPED_TEST_P(CaseName, TestName) \ - namespace GTEST_CASE_NAMESPACE_(CaseName) { \ - template <typename gtest_TypeParam_> \ - class TestName : public CaseName<gtest_TypeParam_> { \ - private: \ - typedef CaseName<gtest_TypeParam_> TestFixture; \ - typedef gtest_TypeParam_ TypeParam; \ - virtual void TestBody(); \ - }; \ - static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \ - GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).AddTestName(\ - __FILE__, __LINE__, #CaseName, #TestName); \ - } \ - template <typename gtest_TypeParam_> \ +#define TYPED_TEST_CASE_P(CaseName) \ + static ::testing::internal::TypedTestCasePState GTEST_TYPED_TEST_CASE_P_STATE_(CaseName) + +#define TYPED_TEST_P(CaseName, TestName) \ + namespace GTEST_CASE_NAMESPACE_(CaseName) \ + { \ + template <typename gtest_TypeParam_> \ + class TestName : public CaseName<gtest_TypeParam_> \ + { \ + private: \ + typedef CaseName<gtest_TypeParam_> TestFixture; \ + typedef gtest_TypeParam_ TypeParam; \ + virtual void TestBody(); \ + }; \ + static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \ + GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).AddTestName(__FILE__, __LINE__, #CaseName, #TestName); \ + } \ + template <typename gtest_TypeParam_> \ void GTEST_CASE_NAMESPACE_(CaseName)::TestName<gtest_TypeParam_>::TestBody() -# define REGISTER_TYPED_TEST_CASE_P(CaseName, ...) \ - namespace GTEST_CASE_NAMESPACE_(CaseName) { \ - typedef ::testing::internal::Templates<__VA_ARGS__>::type gtest_AllTests_; \ - } \ - static const char* const GTEST_REGISTERED_TEST_NAMES_(CaseName) = \ - GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).VerifyRegisteredTestNames(\ - __FILE__, __LINE__, #__VA_ARGS__) +#define REGISTER_TYPED_TEST_CASE_P(CaseName, ...) \ + namespace GTEST_CASE_NAMESPACE_(CaseName) \ + { \ + typedef ::testing::internal::Templates<__VA_ARGS__>::type gtest_AllTests_; \ + } \ + static const char* const GTEST_REGISTERED_TEST_NAMES_(CaseName) = \ + GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).VerifyRegisteredTestNames(__FILE__, __LINE__, #__VA_ARGS__) // The 'Types' template argument below must have spaces around it // since some compilers may choke on '>>' when passing a template // instance (e.g. Types<int>) -# define INSTANTIATE_TYPED_TEST_CASE_P(Prefix, CaseName, Types) \ - bool gtest_##Prefix##_##CaseName GTEST_ATTRIBUTE_UNUSED_ = \ - ::testing::internal::TypeParameterizedTestCase<CaseName, \ - GTEST_CASE_NAMESPACE_(CaseName)::gtest_AllTests_, \ - ::testing::internal::TypeList< Types >::type>::Register(\ - #Prefix, #CaseName, GTEST_REGISTERED_TEST_NAMES_(CaseName)) +#define INSTANTIATE_TYPED_TEST_CASE_P(Prefix, CaseName, Types) \ + bool gtest_##Prefix##_##CaseName GTEST_ATTRIBUTE_UNUSED_ = \ + ::testing::internal::TypeParameterizedTestCase<CaseName, \ + GTEST_CASE_NAMESPACE_(CaseName)::gtest_AllTests_, \ + ::testing::internal::TypeList<Types>::type>:: \ + Register(#Prefix, #CaseName, GTEST_REGISTERED_TEST_NAMES_(CaseName)) -#endif // GTEST_HAS_TYPED_TEST_P +#endif // GTEST_HAS_TYPED_TEST_P -#endif // GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ +#endif // GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ // Depending on the platform, different string classes are available. // On Linux, in addition to ::std::string, Google also makes use of @@ -17574,10 +21176,9 @@ class TestEventRepeater; class UnitTestRecordPropertyTestHelper; class WindowsDeathTest; class UnitTestImpl* GetUnitTestImpl(); -void ReportFailureInUnknownLocation(TestPartResult::Type result_type, - const std::string& message); +void ReportFailureInUnknownLocation(TestPartResult::Type result_type, const std::string& message); -} // namespace internal +} // namespace internal // The friend relationship of some of these classes is cyclic. // If we don't forward declare them the compiler might confuse the classes @@ -17666,16 +21267,23 @@ class UnitTest; // Expected: Foo() is even // Actual: it's 5 // -class GTEST_API_ AssertionResult { - public: +class GTEST_API_ AssertionResult +{ +public: // Copy constructor. // Used in EXPECT_TRUE/FALSE(assertion_result). AssertionResult(const AssertionResult& other); // Used in the EXPECT_TRUE/FALSE(bool_expression). - explicit AssertionResult(bool success) : success_(success) {} + explicit AssertionResult(bool success) + : success_(success) + { + } // Returns true iff the assertion succeeded. - operator bool() const { return success_; } // NOLINT + operator bool() const + { + return success_; + } // NOLINT // Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE. AssertionResult operator!() const; @@ -17684,30 +21292,37 @@ class GTEST_API_ AssertionResult { // use it when they fail (i.e., the predicate's outcome doesn't match the // assertion's expectation). When nothing has been streamed into the // object, returns an empty string. - const char* message() const { - return message_.get() != NULL ? message_->c_str() : ""; + const char* message() const + { + return message_.get() != NULL ? message_->c_str() : ""; } // TODO(vladl@google.com): Remove this after making sure no clients use it. // Deprecated; please use message() instead. - const char* failure_message() const { return message(); } + const char* failure_message() const + { + return message(); + } // Streams a custom failure message into this object. - template <typename T> AssertionResult& operator<<(const T& value) { + template <typename T> + AssertionResult& operator<<(const T& value) + { AppendMessage(Message() << value); return *this; } // Allows streaming basic output manipulators such as endl or flush into // this object. - AssertionResult& operator<<( - ::std::ostream& (*basic_manipulator)(::std::ostream& stream)) { + AssertionResult& operator<<(::std::ostream& (*basic_manipulator)(::std::ostream& stream)) + { AppendMessage(Message() << basic_manipulator); return *this; } - private: +private: // Appends the contents of message to message_. - void AppendMessage(const Message& a_message) { + void AppendMessage(const Message& a_message) + { if (message_.get() == NULL) message_.reset(new ::std::string); message_->append(a_message.GetString().c_str()); @@ -17719,7 +21334,7 @@ class GTEST_API_ AssertionResult { // construct is not satisfied with the predicate's outcome. // Referenced via a pointer to avoid taking too much stack frame space // with test assertions. - internal::scoped_ptr< ::std::string> message_; + internal::scoped_ptr<::std::string> message_; GTEST_DISALLOW_ASSIGN_(AssertionResult); }; @@ -17757,8 +21372,9 @@ GTEST_API_ AssertionResult AssertionFailure(const Message& msg); // TEST_F(FooTest, Baz) { ... } // // Test is not copyable. -class GTEST_API_ Test { - public: +class GTEST_API_ Test +{ +public: friend class TestInfo; // Defines types for pointers to functions that set up and tear down @@ -17775,7 +21391,9 @@ class GTEST_API_ Test { // test in test case Foo. Hence a sub-class can define its own // SetUpTestCase() method to shadow the one defined in the super // class. - static void SetUpTestCase() {} + static void SetUpTestCase() + { + } // Tears down the stuff shared by all tests in this test case. // @@ -17783,7 +21401,9 @@ class GTEST_API_ Test { // test in test case Foo. Hence a sub-class can define its own // TearDownTestCase() method to shadow the one defined in the super // class. - static void TearDownTestCase() {} + static void TearDownTestCase() + { + } // Returns true iff the current test has a fatal failure. static bool HasFatalFailure(); @@ -17793,7 +21413,10 @@ class GTEST_API_ Test { // Returns true iff the current test has a (either fatal or // non-fatal) failure. - static bool HasFailure() { return HasFatalFailure() || HasNonfatalFailure(); } + static bool HasFailure() + { + return HasFatalFailure() || HasNonfatalFailure(); + } // Logs a property for the current test, test case, or for the entire // invocation of the test program when used outside of the context of a @@ -17811,7 +21434,7 @@ class GTEST_API_ Test { static void RecordProperty(const std::string& key, const std::string& value); static void RecordProperty(const std::string& key, int value); - protected: +protected: // Creates a Test object. Test(); @@ -17821,7 +21444,7 @@ class GTEST_API_ Test { // Tears down the test fixture. virtual void TearDown(); - private: +private: // Returns true iff the current test has the same fixture class as // the first test in the current test case. static bool HasSameFixtureClass(); @@ -17839,7 +21462,10 @@ class GTEST_API_ Test { // Deletes self. We deliberately pick an unusual name for this // internal method to avoid clashing with names used in user TESTs. - void DeleteSelf_() { delete this; } + void DeleteSelf_() + { + delete this; + } // Uses a GTestFlagSaver to save and restore all Google Test flags. const internal::GTestFlagSaver* const gtest_flag_saver_; @@ -17860,8 +21486,13 @@ class GTEST_API_ Test { // // If you see an error about overriding the following function or // about it being private, you have mis-spelled SetUp() as Setup(). - struct Setup_should_be_spelled_SetUp {}; - virtual Setup_should_be_spelled_SetUp* Setup() { return NULL; } + struct Setup_should_be_spelled_SetUp + { + }; + virtual Setup_should_be_spelled_SetUp* Setup() + { + return NULL; + } // We disallow copying Tests. GTEST_DISALLOW_COPY_AND_ASSIGN_(Test); @@ -17873,31 +21504,37 @@ typedef internal::TimeInMillis TimeInMillis; // output as a key/value string pair. // // Don't inherit from TestProperty as its destructor is not virtual. -class TestProperty { - public: +class TestProperty +{ +public: // C'tor. TestProperty does NOT have a default constructor. // Always use this constructor (with parameters) to create a // TestProperty object. - TestProperty(const std::string& a_key, const std::string& a_value) : - key_(a_key), value_(a_value) { + TestProperty(const std::string& a_key, const std::string& a_value) + : key_(a_key) + , value_(a_value) + { } // Gets the user supplied key. - const char* key() const { + const char* key() const + { return key_.c_str(); } // Gets the user supplied value. - const char* value() const { + const char* value() const + { return value_.c_str(); } // Sets a new value, overriding the one supplied in the constructor. - void SetValue(const std::string& new_value) { + void SetValue(const std::string& new_value) + { value_ = new_value; } - private: +private: // The key supplied by the user. std::string key_; // The value supplied by the user. @@ -17910,8 +21547,9 @@ class TestProperty { // the Test. // // TestResult is not copyable. -class GTEST_API_ TestResult { - public: +class GTEST_API_ TestResult +{ +public: // Creates an empty TestResult. TestResult(); @@ -17926,7 +21564,10 @@ class GTEST_API_ TestResult { int test_property_count() const; // Returns true iff the test passed (i.e. no test part failed). - bool Passed() const { return !Failed(); } + bool Passed() const + { + return !Failed(); + } // Returns true iff the test failed. bool Failed() const; @@ -17938,7 +21579,10 @@ class GTEST_API_ TestResult { bool HasNonfatalFailure() const; // Returns the elapsed time, in milliseconds. - TimeInMillis elapsed_time() const { return elapsed_time_; } + TimeInMillis elapsed_time() const + { + return elapsed_time_; + } // Returns the i-th test part result among all the results. i can range // from 0 to test_property_count() - 1. If i is not in that range, aborts @@ -17950,7 +21594,7 @@ class GTEST_API_ TestResult { // program. const TestProperty& GetTestProperty(int i) const; - private: +private: friend class TestInfo; friend class TestCase; friend class UnitTest; @@ -17961,17 +21605,22 @@ class GTEST_API_ TestResult { friend class internal::WindowsDeathTest; // Gets the vector of TestPartResults. - const std::vector<TestPartResult>& test_part_results() const { + const std::vector<TestPartResult>& test_part_results() const + { return test_part_results_; } // Gets the vector of TestProperties. - const std::vector<TestProperty>& test_properties() const { + const std::vector<TestProperty>& test_properties() const + { return test_properties_; } // Sets the elapsed time. - void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } + void set_elapsed_time(TimeInMillis elapsed) + { + elapsed_time_ = elapsed; + } // Adds a test property to the list. The property is validated and may add // a non-fatal failure if invalid (e.g., if it conflicts with reserved @@ -17979,23 +21628,27 @@ class GTEST_API_ TestResult { // value will be updated, rather than storing multiple values for the same // key. xml_element specifies the element for which the property is being // recorded and is used for validation. - void RecordProperty(const std::string& xml_element, - const TestProperty& test_property); + void RecordProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a failure if the key is a reserved attribute of Google Test // testcase tags. Returns true if the property is valid. // TODO(russr): Validate attribute names are legal and human readable. - static bool ValidateTestProperty(const std::string& xml_element, - const TestProperty& test_property); + static bool ValidateTestProperty(const std::string& xml_element, const TestProperty& test_property); // Adds a test part result to the list. void AddTestPartResult(const TestPartResult& test_part_result); // Returns the death test count. - int death_test_count() const { return death_test_count_; } + int death_test_count() const + { + return death_test_count_; + } // Increments the death test count, returning the new count. - int increment_death_test_count() { return ++death_test_count_; } + int increment_death_test_count() + { + return ++death_test_count_; + } // Clears the test part results. void ClearTestPartResults(); @@ -18018,7 +21671,7 @@ class GTEST_API_ TestResult { // We disallow copying TestResult. GTEST_DISALLOW_COPY_AND_ASSIGN_(TestResult); -}; // class TestResult +}; // class TestResult // A TestInfo object stores the following information about a test: // @@ -18031,21 +21684,29 @@ class GTEST_API_ TestResult { // The constructor of TestInfo registers itself with the UnitTest // singleton such that the RUN_ALL_TESTS() macro knows which tests to // run. -class GTEST_API_ TestInfo { - public: +class GTEST_API_ TestInfo +{ +public: // Destructs a TestInfo object. This function is not virtual, so // don't inherit from TestInfo. ~TestInfo(); // Returns the test case name. - const char* test_case_name() const { return test_case_name_.c_str(); } + const char* test_case_name() const + { + return test_case_name_.c_str(); + } // Returns the test name. - const char* name() const { return name_.c_str(); } + const char* name() const + { + return name_.c_str(); + } // Returns the name of the parameter type, or NULL if this is not a typed // or a type-parameterized test. - const char* type_param() const { + const char* type_param() const + { if (type_param_.get() != NULL) return type_param_->c_str(); return NULL; @@ -18053,7 +21714,8 @@ class GTEST_API_ TestInfo { // Returns the text representation of the value parameter, or NULL if this // is not a value-parameterized test. - const char* value_param() const { + const char* value_param() const + { if (value_param_.get() != NULL) return value_param_->c_str(); return NULL; @@ -18075,10 +21737,14 @@ class GTEST_API_ TestInfo { // // For example, *A*:Foo.* is a filter that matches any string that // contains the character 'A' or starts with "Foo.". - bool should_run() const { return should_run_; } + bool should_run() const + { + return should_run_; + } // Returns true iff this test will appear in the XML report. - bool is_reportable() const { + bool is_reportable() const + { // For now, the XML report includes all tests matching the filter. // In the future, we may trim tests that are excluded because of // sharding. @@ -18086,38 +21752,37 @@ class GTEST_API_ TestInfo { } // Returns the result of the test. - const TestResult* result() const { return &result_; } + const TestResult* result() const + { + return &result_; + } - private: +private: #if GTEST_HAS_DEATH_TEST friend class internal::DefaultDeathTestFactory; -#endif // GTEST_HAS_DEATH_TEST +#endif // GTEST_HAS_DEATH_TEST friend class Test; friend class TestCase; friend class internal::UnitTestImpl; friend class internal::StreamingListenerTest; - friend TestInfo* internal::MakeAndRegisterTestInfo( - const char* test_case_name, - const char* name, - const char* type_param, - const char* value_param, - internal::TypeId fixture_class_id, - Test::SetUpTestCaseFunc set_up_tc, - Test::TearDownTestCaseFunc tear_down_tc, - internal::TestFactoryBase* factory); + friend TestInfo* internal::MakeAndRegisterTestInfo(const char* test_case_name, const char* name, + const char* type_param, const char* value_param, + internal::TypeId fixture_class_id, + Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc, + internal::TestFactoryBase* factory); // Constructs a TestInfo object. The newly constructed instance assumes // ownership of the factory object. - TestInfo(const std::string& test_case_name, - const std::string& name, - const char* a_type_param, // NULL if not a type-parameterized test - const char* a_value_param, // NULL if not a value-parameterized test - internal::TypeId fixture_class_id, - internal::TestFactoryBase* factory); + TestInfo(const std::string& test_case_name, const std::string& name, + const char* a_type_param, // NULL if not a type-parameterized test + const char* a_value_param, // NULL if not a value-parameterized test + internal::TypeId fixture_class_id, internal::TestFactoryBase* factory); // Increments the number of death tests encountered in this test so // far. - int increment_death_test_count() { + int increment_death_test_count() + { return result_.increment_death_test_count(); } @@ -18125,26 +21790,27 @@ class GTEST_API_ TestInfo { // deletes it. void Run(); - static void ClearTestResult(TestInfo* test_info) { + static void ClearTestResult(TestInfo* test_info) + { test_info->result_.Clear(); } // These fields are immutable properties of the test. - const std::string test_case_name_; // Test case name - const std::string name_; // Test name + const std::string test_case_name_; // Test case name + const std::string name_; // Test name // Name of the parameter type, or NULL if this is not a typed or a // type-parameterized test. const internal::scoped_ptr<const ::std::string> type_param_; // Text representation of the value parameter, or NULL if this is not a // value-parameterized test. const internal::scoped_ptr<const ::std::string> value_param_; - const internal::TypeId fixture_class_id_; // ID of the test fixture class - bool should_run_; // True iff this test should run - bool is_disabled_; // True iff this test is disabled - bool matches_filter_; // True if this test matches the - // user-specified filter. - internal::TestFactoryBase* const factory_; // The factory that creates - // the test object + const internal::TypeId fixture_class_id_; // ID of the test fixture class + bool should_run_; // True iff this test should run + bool is_disabled_; // True iff this test is disabled + bool matches_filter_; // True if this test matches the + // user-specified filter. + internal::TestFactoryBase* const factory_; // The factory that creates + // the test object // This field is mutable and needs to be reset before running the // test for the second time. @@ -18156,8 +21822,9 @@ class GTEST_API_ TestInfo { // A test case, which consists of a vector of TestInfos. // // TestCase is not copyable. -class GTEST_API_ TestCase { - public: +class GTEST_API_ TestCase +{ +public: // Creates a TestCase with the given name. // // TestCase does NOT have a default constructor. Always use this @@ -18170,26 +21837,32 @@ class GTEST_API_ TestCase { // this is not a type-parameterized test. // set_up_tc: pointer to the function that sets up the test case // tear_down_tc: pointer to the function that tears down the test case - TestCase(const char* name, const char* a_type_param, - Test::SetUpTestCaseFunc set_up_tc, + TestCase(const char* name, const char* a_type_param, Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc); // Destructor of TestCase. virtual ~TestCase(); // Gets the name of the TestCase. - const char* name() const { return name_.c_str(); } + const char* name() const + { + return name_.c_str(); + } // Returns the name of the parameter type, or NULL if this is not a // type-parameterized test case. - const char* type_param() const { + const char* type_param() const + { if (type_param_.get() != NULL) return type_param_->c_str(); return NULL; } // Returns true if any test in this test case should run. - bool should_run() const { return should_run_; } + bool should_run() const + { + return should_run_; + } // Gets the number of successful tests in this test case. int successful_test_count() const; @@ -18213,13 +21886,22 @@ class GTEST_API_ TestCase { int total_test_count() const; // Returns true iff the test case passed. - bool Passed() const { return !Failed(); } + bool Passed() const + { + return !Failed(); + } // Returns true iff the test case failed. - bool Failed() const { return failed_test_count() > 0; } + bool Failed() const + { + return failed_test_count() > 0; + } // Returns the elapsed time, in milliseconds. - TimeInMillis elapsed_time() const { return elapsed_time_; } + TimeInMillis elapsed_time() const + { + return elapsed_time_; + } // Returns the i-th test among all the tests. i can range from 0 to // total_test_count() - 1. If i is not in that range, returns NULL. @@ -18227,17 +21909,24 @@ class GTEST_API_ TestCase { // Returns the TestResult that holds test properties recorded during // execution of SetUpTestCase and TearDownTestCase. - const TestResult& ad_hoc_test_result() const { return ad_hoc_test_result_; } + const TestResult& ad_hoc_test_result() const + { + return ad_hoc_test_result_; + } - private: +private: friend class Test; friend class internal::UnitTestImpl; // Gets the (mutable) vector of TestInfos in this TestCase. - std::vector<TestInfo*>& test_info_list() { return test_info_list_; } + std::vector<TestInfo*>& test_info_list() + { + return test_info_list_; + } // Gets the (immutable) vector of TestInfos in this TestCase. - const std::vector<TestInfo*>& test_info_list() const { + const std::vector<TestInfo*>& test_info_list() const + { return test_info_list_; } @@ -18246,17 +21935,21 @@ class GTEST_API_ TestCase { TestInfo* GetMutableTestInfo(int i); // Sets the should_run member. - void set_should_run(bool should) { should_run_ = should; } + void set_should_run(bool should) + { + should_run_ = should; + } // Adds a TestInfo to this test case. Will delete the TestInfo upon // destruction of the TestCase object. - void AddTestInfo(TestInfo * test_info); + void AddTestInfo(TestInfo* test_info); // Clears the results of all tests in this test case. void ClearResult(); // Clears the results of all tests in the given test case. - static void ClearTestCaseResult(TestCase* test_case) { + static void ClearTestCaseResult(TestCase* test_case) + { test_case->ClearResult(); } @@ -18265,40 +21958,52 @@ class GTEST_API_ TestCase { // Runs SetUpTestCase() for this TestCase. This wrapper is needed // for catching exceptions thrown from SetUpTestCase(). - void RunSetUpTestCase() { (*set_up_tc_)(); } + void RunSetUpTestCase() + { + (*set_up_tc_)(); + } // Runs TearDownTestCase() for this TestCase. This wrapper is // needed for catching exceptions thrown from TearDownTestCase(). - void RunTearDownTestCase() { (*tear_down_tc_)(); } + void RunTearDownTestCase() + { + (*tear_down_tc_)(); + } // Returns true iff test passed. - static bool TestPassed(const TestInfo* test_info) { + static bool TestPassed(const TestInfo* test_info) + { return test_info->should_run() && test_info->result()->Passed(); } // Returns true iff test failed. - static bool TestFailed(const TestInfo* test_info) { + static bool TestFailed(const TestInfo* test_info) + { return test_info->should_run() && test_info->result()->Failed(); } // Returns true iff the test is disabled and will be reported in the XML // report. - static bool TestReportableDisabled(const TestInfo* test_info) { + static bool TestReportableDisabled(const TestInfo* test_info) + { return test_info->is_reportable() && test_info->is_disabled_; } // Returns true iff test is disabled. - static bool TestDisabled(const TestInfo* test_info) { + static bool TestDisabled(const TestInfo* test_info) + { return test_info->is_disabled_; } // Returns true iff this test will appear in the XML report. - static bool TestReportable(const TestInfo* test_info) { + static bool TestReportable(const TestInfo* test_info) + { return test_info->is_reportable(); } // Returns true if the given test should run. - static bool ShouldRunTest(const TestInfo* test_info) { + static bool ShouldRunTest(const TestInfo* test_info) + { return test_info->should_run(); } @@ -18350,28 +22055,44 @@ class GTEST_API_ TestCase { // available. // 2. You cannot use ASSERT_* directly in a constructor or // destructor. -class Environment { - public: +class Environment +{ +public: // The d'tor is virtual as we need to subclass Environment. - virtual ~Environment() {} + virtual ~Environment() + { + } // Override this to define how to set up the environment. - virtual void SetUp() {} + virtual void SetUp() + { + } // Override this to define how to tear down the environment. - virtual void TearDown() {} - private: + virtual void TearDown() + { + } + +private: // If you see an error about overriding the following function or // about it being private, you have mis-spelled SetUp() as Setup(). - struct Setup_should_be_spelled_SetUp {}; - virtual Setup_should_be_spelled_SetUp* Setup() { return NULL; } + struct Setup_should_be_spelled_SetUp + { + }; + virtual Setup_should_be_spelled_SetUp* Setup() + { + return NULL; + } }; // The interface for tracing execution of tests. The methods are organized in // the order the corresponding events are fired. -class TestEventListener { - public: - virtual ~TestEventListener() {} +class TestEventListener +{ +public: + virtual ~TestEventListener() + { + } // Fired before any test activity starts. virtual void OnTestProgramStart(const UnitTest& unit_test) = 0; @@ -18379,8 +22100,7 @@ class TestEventListener { // Fired before each iteration of tests starts. There may be more than // one iteration if GTEST_FLAG(repeat) is set. iteration is the iteration // index, starting from 0. - virtual void OnTestIterationStart(const UnitTest& unit_test, - int iteration) = 0; + virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration) = 0; // Fired before environment set-up for each iteration of tests starts. virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test) = 0; @@ -18410,8 +22130,7 @@ class TestEventListener { virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test) = 0; // Fired after each iteration of tests finishes. - virtual void OnTestIterationEnd(const UnitTest& unit_test, - int iteration) = 0; + virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration) = 0; // Fired after all test activities have ended. virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0; @@ -18422,28 +22141,54 @@ class TestEventListener { // the methods they override will not be caught during the build. For // comments about each method please see the definition of TestEventListener // above. -class EmptyTestEventListener : public TestEventListener { - public: - virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {} - virtual void OnTestIterationStart(const UnitTest& /*unit_test*/, - int /*iteration*/) {} - virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {} - virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {} - virtual void OnTestCaseStart(const TestCase& /*test_case*/) {} - virtual void OnTestStart(const TestInfo& /*test_info*/) {} - virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {} - virtual void OnTestEnd(const TestInfo& /*test_info*/) {} - virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {} - virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {} - virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {} - virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/, - int /*iteration*/) {} - virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {} +class EmptyTestEventListener : public TestEventListener +{ +public: + virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) + { + } + virtual void OnTestIterationStart(const UnitTest& /*unit_test*/, int /*iteration*/) + { + } + virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) + { + } + virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) + { + } + virtual void OnTestCaseStart(const TestCase& /*test_case*/) + { + } + virtual void OnTestStart(const TestInfo& /*test_info*/) + { + } + virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) + { + } + virtual void OnTestEnd(const TestInfo& /*test_info*/) + { + } + virtual void OnTestCaseEnd(const TestCase& /*test_case*/) + { + } + virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) + { + } + virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) + { + } + virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/, int /*iteration*/) + { + } + virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) + { + } }; // TestEventListeners lets users add listeners to track events in Google Test. -class GTEST_API_ TestEventListeners { - public: +class GTEST_API_ TestEventListeners +{ +public: TestEventListeners(); ~TestEventListeners(); @@ -18462,7 +22207,8 @@ class GTEST_API_ TestEventListeners { // console output. Note that removing this object from the listener list // with Release transfers its ownership to the caller and makes this // function return NULL the next time. - TestEventListener* default_result_printer() const { + TestEventListener* default_result_printer() const + { return default_result_printer_; } @@ -18473,11 +22219,12 @@ class GTEST_API_ TestEventListeners { // removing this object from the listener list with Release transfers its // ownership to the caller and makes this function return NULL the next // time. - TestEventListener* default_xml_generator() const { + TestEventListener* default_xml_generator() const + { return default_xml_generator_; } - private: +private: friend class TestCase; friend class TestInfo; friend class internal::DefaultGlobalTestPartResultReporter; @@ -18529,8 +22276,9 @@ class GTEST_API_ TestEventListeners { // // This class is thread-safe as long as the methods are called // according to their specification. -class GTEST_API_ UnitTest { - public: +class GTEST_API_ UnitTest +{ +public: // Gets the singleton UnitTest object. The first time this method // is called, a UnitTest object is constructed and returned. // Consecutive calls will return the same object. @@ -18550,13 +22298,11 @@ class GTEST_API_ UnitTest { // Returns the TestCase object for the test that's currently running, // or NULL if no test is running. - const TestCase* current_test_case() const - GTEST_LOCK_EXCLUDED_(mutex_); + const TestCase* current_test_case() const GTEST_LOCK_EXCLUDED_(mutex_); // Returns the TestInfo object for the test that's currently running, // or NULL if no test is running. - const TestInfo* current_test_info() const - GTEST_LOCK_EXCLUDED_(mutex_); + const TestInfo* current_test_info() const GTEST_LOCK_EXCLUDED_(mutex_); // Returns the random seed used at the start of the current test run. int random_seed() const; @@ -18566,9 +22312,8 @@ class GTEST_API_ UnitTest { // value-parameterized tests and instantiate and register them. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. - internal::ParameterizedTestCaseRegistry& parameterized_test_registry() - GTEST_LOCK_EXCLUDED_(mutex_); -#endif // GTEST_HAS_PARAM_TEST + internal::ParameterizedTestCaseRegistry& parameterized_test_registry() GTEST_LOCK_EXCLUDED_(mutex_); +#endif // GTEST_HAS_PARAM_TEST // Gets the number of successful test cases. int successful_test_case_count() const; @@ -18630,7 +22375,7 @@ class GTEST_API_ UnitTest { // inside Google Test. TestEventListeners& listeners(); - private: +private: // Registers and returns a global test environment. When a test // program is run, all global test environments will be set-up in // the order they were registered. After all tests in the program @@ -18646,12 +22391,8 @@ class GTEST_API_ UnitTest { // Google Test assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) // eventually call this to report their results. The user code // should use the assertion macros instead of calling this directly. - void AddTestPartResult(TestPartResult::Type result_type, - const char* file_name, - int line_number, - const std::string& message, - const std::string& os_stack_trace) - GTEST_LOCK_EXCLUDED_(mutex_); + void AddTestPartResult(TestPartResult::Type result_type, const char* file_name, int line_number, + const std::string& message, const std::string& os_stack_trace) GTEST_LOCK_EXCLUDED_(mutex_); // Adds a TestProperty to the current TestResult object when invoked from // inside a test, to current TestCase's ad_hoc_test_result_ when invoked @@ -18665,8 +22406,14 @@ class GTEST_API_ UnitTest { TestCase* GetMutableTestCase(int i); // Accessors for the implementation object. - internal::UnitTestImpl* impl() { return impl_; } - const internal::UnitTestImpl* impl() const { return impl_; } + internal::UnitTestImpl* impl() + { + return impl_; + } + const internal::UnitTestImpl* impl() const + { + return impl_; + } // These classes and funcions are friends as they need to access private // members of UnitTest. @@ -18677,9 +22424,7 @@ class GTEST_API_ UnitTest { friend class internal::UnitTestRecordPropertyTestHelper; friend Environment* AddGlobalTestEnvironment(Environment* env); friend internal::UnitTestImpl* internal::GetUnitTestImpl(); - friend void internal::ReportFailureInUnknownLocation( - TestPartResult::Type result_type, - const std::string& message); + friend void internal::ReportFailureInUnknownLocation(TestPartResult::Type result_type, const std::string& message); // Creates an empty UnitTest. UnitTest(); @@ -18689,12 +22434,10 @@ class GTEST_API_ UnitTest { // Pushes a trace defined by SCOPED_TRACE() on to the per-thread // Google Test trace stack. - void PushGTestTrace(const internal::TraceInfo& trace) - GTEST_LOCK_EXCLUDED_(mutex_); + void PushGTestTrace(const internal::TraceInfo& trace) GTEST_LOCK_EXCLUDED_(mutex_); // Pops a trace from the per-thread Google Test trace stack. - void PopGTestTrace() - GTEST_LOCK_EXCLUDED_(mutex_); + void PopGTestTrace() GTEST_LOCK_EXCLUDED_(mutex_); // Protects mutable state in *impl_. This is mutable as some const // methods need to lock it too. @@ -18728,7 +22471,8 @@ class GTEST_API_ UnitTest { // translation units and the environments have dependencies among them // (remember that the compiler doesn't guarantee the order in which // global variables from different translation units are initialized). -inline Environment* AddGlobalTestEnvironment(Environment* env) { +inline Environment* AddGlobalTestEnvironment(Environment* env) +{ return UnitTest::GetInstance()->AddEnvironment(env); } @@ -18765,18 +22509,22 @@ namespace internal { // The default case. template <typename ToPrint, typename OtherOperand> -class FormatForComparison { - public: - static ::std::string Format(const ToPrint& value) { +class FormatForComparison +{ +public: + static ::std::string Format(const ToPrint& value) + { return ::testing::PrintToString(value); } }; // Array. template <typename ToPrint, size_t N, typename OtherOperand> -class FormatForComparison<ToPrint[N], OtherOperand> { - public: - static ::std::string Format(const ToPrint* value) { +class FormatForComparison<ToPrint[N], OtherOperand> +{ +public: + static ::std::string Format(const ToPrint* value) + { return FormatForComparison<const ToPrint*, OtherOperand>::Format(value); } }; @@ -18784,13 +22532,15 @@ class FormatForComparison<ToPrint[N], OtherOperand> { // By default, print C string as pointers to be safe, as we don't know // whether they actually point to a NUL-terminated string. -#define GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(CharType) \ - template <typename OtherOperand> \ - class FormatForComparison<CharType*, OtherOperand> { \ - public: \ - static ::std::string Format(CharType* value) { \ - return ::testing::PrintToString(static_cast<const void*>(value)); \ - } \ +#define GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(CharType) \ + template <typename OtherOperand> \ + class FormatForComparison<CharType*, OtherOperand> \ + { \ + public: \ + static ::std::string Format(CharType* value) \ + { \ + return ::testing::PrintToString(static_cast<const void*>(value)); \ + } \ } GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char); @@ -18803,13 +22553,15 @@ GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const wchar_t); // If a C string is compared with an STL string object, we know it's meant // to point to a NUL-terminated string, and thus can print it as a string. -#define GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(CharType, OtherStringType) \ - template <> \ - class FormatForComparison<CharType*, OtherStringType> { \ - public: \ - static ::std::string Format(CharType* value) { \ - return ::testing::PrintToString(value); \ - } \ +#define GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(CharType, OtherStringType) \ + template <> \ + class FormatForComparison<CharType*, OtherStringType> \ + { \ + public: \ + static ::std::string Format(CharType* value) \ + { \ + return ::testing::PrintToString(value); \ + } \ } GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char, ::std::string); @@ -18841,21 +22593,20 @@ GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const wchar_t, ::std::wstring); // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename T1, typename T2> -std::string FormatForComparisonFailureMessage( - const T1& value, const T2& /* other_operand */) { +std::string FormatForComparisonFailureMessage(const T1& value, const T2& /* other_operand */) +{ return FormatForComparison<T1, T2>::Format(value); } // The helper function for {ASSERT|EXPECT}_EQ. template <typename T1, typename T2> -AssertionResult CmpHelperEQ(const char* expected_expression, - const char* actual_expression, - const T1& expected, - const T2& actual) { +AssertionResult CmpHelperEQ(const char* expected_expression, const char* actual_expression, const T1& expected, + const T2& actual) +{ #ifdef _MSC_VER -# pragma warning(push) // Saves the current warning state. -# pragma warning(disable:4389) // Temporarily disables warning on - // signed/unsigned mismatch. +#pragma warning(push) // Saves the current warning state. +#pragma warning(disable : 4389) // Temporarily disables warning on +// signed/unsigned mismatch. #endif if (expected == actual) { @@ -18863,7 +22614,7 @@ AssertionResult CmpHelperEQ(const char* expected_expression, } #ifdef _MSC_VER -# pragma warning(pop) // Restores the warning state. +#pragma warning(pop) // Restores the warning state. #endif return EqFailure(expected_expression, @@ -18876,26 +22627,23 @@ AssertionResult CmpHelperEQ(const char* expected_expression, // With this overloaded version, we allow anonymous enums to be used // in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous enums // can be implicitly cast to BiggestInt. -GTEST_API_ AssertionResult CmpHelperEQ(const char* expected_expression, - const char* actual_expression, - BiggestInt expected, - BiggestInt actual); +GTEST_API_ AssertionResult CmpHelperEQ(const char* expected_expression, const char* actual_expression, + BiggestInt expected, BiggestInt actual); // The helper class for {ASSERT|EXPECT}_EQ. The template argument // lhs_is_null_literal is true iff the first argument to ASSERT_EQ() // is a null pointer literal. The following default implementation is // for lhs_is_null_literal being false. template <bool lhs_is_null_literal> -class EqHelper { - public: +class EqHelper +{ +public: // This templatized version is for the general case. template <typename T1, typename T2> - static AssertionResult Compare(const char* expected_expression, - const char* actual_expression, - const T1& expected, - const T2& actual) { - return CmpHelperEQ(expected_expression, actual_expression, expected, - actual); + static AssertionResult Compare(const char* expected_expression, const char* actual_expression, const T1& expected, + const T2& actual) + { + return CmpHelperEQ(expected_expression, actual_expression, expected, actual); } // With this overloaded version, we allow anonymous enums to be used @@ -18904,57 +22652,50 @@ class EqHelper { // // Even though its body looks the same as the above version, we // cannot merge the two, as it will make anonymous enums unhappy. - static AssertionResult Compare(const char* expected_expression, - const char* actual_expression, - BiggestInt expected, - BiggestInt actual) { - return CmpHelperEQ(expected_expression, actual_expression, expected, - actual); + static AssertionResult Compare(const char* expected_expression, const char* actual_expression, BiggestInt expected, + BiggestInt actual) + { + return CmpHelperEQ(expected_expression, actual_expression, expected, actual); } }; // This specialization is used when the first argument to ASSERT_EQ() // is a null pointer literal, like NULL, false, or 0. template <> -class EqHelper<true> { - public: +class EqHelper<true> +{ +public: // We define two overloaded versions of Compare(). The first // version will be picked when the second argument to ASSERT_EQ() is // NOT a pointer, e.g. ASSERT_EQ(0, AnIntFunction()) or // EXPECT_EQ(false, a_bool). template <typename T1, typename T2> - static AssertionResult Compare( - const char* expected_expression, - const char* actual_expression, - const T1& expected, - const T2& actual, - // The following line prevents this overload from being considered if T2 - // is not a pointer type. We need this because ASSERT_EQ(NULL, my_ptr) - // expands to Compare("", "", NULL, my_ptr), which requires a conversion - // to match the Secret* in the other overload, which would otherwise make - // this template match better. - typename EnableIf<!is_pointer<T2>::value>::type* = 0) { - return CmpHelperEQ(expected_expression, actual_expression, expected, - actual); + static AssertionResult Compare(const char* expected_expression, const char* actual_expression, const T1& expected, + const T2& actual, + // The following line prevents this overload from being considered if T2 + // is not a pointer type. We need this because ASSERT_EQ(NULL, my_ptr) + // expands to Compare("", "", NULL, my_ptr), which requires a conversion + // to match the Secret* in the other overload, which would otherwise make + // this template match better. + typename EnableIf<!is_pointer<T2>::value>::type* = 0) + { + return CmpHelperEQ(expected_expression, actual_expression, expected, actual); } // This version will be picked when the second argument to ASSERT_EQ() is a // pointer, e.g. ASSERT_EQ(NULL, a_pointer). template <typename T> - static AssertionResult Compare( - const char* expected_expression, - const char* actual_expression, - // We used to have a second template parameter instead of Secret*. That - // template parameter would deduce to 'long', making this a better match - // than the first overload even without the first overload's EnableIf. - // Unfortunately, gcc with -Wconversion-null warns when "passing NULL to - // non-pointer argument" (even a deduced integral argument), so the old - // implementation caused warnings in user code. - Secret* /* expected (NULL) */, - T* actual) { + static AssertionResult Compare(const char* expected_expression, const char* actual_expression, + // We used to have a second template parameter instead of Secret*. That + // template parameter would deduce to 'long', making this a better match + // than the first overload even without the first overload's EnableIf. + // Unfortunately, gcc with -Wconversion-null warns when "passing NULL to + // non-pointer argument" (even a deduced integral argument), so the old + // implementation caused warnings in user code. + Secret* /* expected (NULL) */, T* actual) + { // We already know that 'expected' is a null pointer. - return CmpHelperEQ(expected_expression, actual_expression, - static_cast<T*>(NULL), actual); + return CmpHelperEQ(expected_expression, actual_expression, static_cast<T*>(NULL), actual); } }; @@ -18968,87 +22709,73 @@ class EqHelper<true> { // with gcc 4. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ -template <typename T1, typename T2>\ -AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ - const T1& val1, const T2& val2) {\ - if (val1 op val2) {\ - return AssertionSuccess();\ - } else {\ - return AssertionFailure() \ - << "Expected: (" << expr1 << ") " #op " (" << expr2\ - << "), actual: " << FormatForComparisonFailureMessage(val1, val2)\ - << " vs " << FormatForComparisonFailureMessage(val2, val1);\ - }\ -}\ -GTEST_API_ AssertionResult CmpHelper##op_name(\ - const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2) +#define GTEST_IMPL_CMP_HELPER_(op_name, op) \ + template <typename T1, typename T2> \ + AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, const T1& val1, const T2& val2) \ + { \ + if (val1 op val2) { \ + return AssertionSuccess(); \ + } else { \ + return AssertionFailure() << "Expected: (" << expr1 << ") " #op " (" << expr2 \ + << "), actual: " << FormatForComparisonFailureMessage(val1, val2) << " vs " \ + << FormatForComparisonFailureMessage(val2, val1); \ + } \ + } \ + GTEST_API_ AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2) // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. // Implements the helper function for {ASSERT|EXPECT}_NE -GTEST_IMPL_CMP_HELPER_(NE, !=); +GTEST_IMPL_CMP_HELPER_(NE, != ); // Implements the helper function for {ASSERT|EXPECT}_LE -GTEST_IMPL_CMP_HELPER_(LE, <=); +GTEST_IMPL_CMP_HELPER_(LE, <= ); // Implements the helper function for {ASSERT|EXPECT}_LT -GTEST_IMPL_CMP_HELPER_(LT, <); +GTEST_IMPL_CMP_HELPER_(LT, < ); // Implements the helper function for {ASSERT|EXPECT}_GE -GTEST_IMPL_CMP_HELPER_(GE, >=); +GTEST_IMPL_CMP_HELPER_(GE, >= ); // Implements the helper function for {ASSERT|EXPECT}_GT -GTEST_IMPL_CMP_HELPER_(GT, >); +GTEST_IMPL_CMP_HELPER_(GT, > ); #undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression, - const char* actual_expression, - const char* expected, - const char* actual); +GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression, const char* actual_expression, + const char* expected, const char* actual); // The helper function for {ASSERT|EXPECT}_STRCASEEQ. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* expected_expression, - const char* actual_expression, - const char* expected, - const char* actual); +GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* expected_expression, const char* actual_expression, + const char* expected, const char* actual); // The helper function for {ASSERT|EXPECT}_STRNE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, - const char* s2_expression, - const char* s1, +GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // The helper function for {ASSERT|EXPECT}_STRCASENE. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, - const char* s2_expression, - const char* s1, +GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, const char* s2_expression, const char* s1, const char* s2); // Helper function for *_STREQ on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression, - const char* actual_expression, - const wchar_t* expected, - const wchar_t* actual); +GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression, const char* actual_expression, + const wchar_t* expected, const wchar_t* actual); // Helper function for *_STRNE on wide strings. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, - const char* s2_expression, - const wchar_t* s1, +GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, const char* s2_expression, const wchar_t* s1, const wchar_t* s2); -} // namespace internal +} // namespace internal // IsSubstring() and IsNotSubstring() are intended to be used as the // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by @@ -19058,33 +22785,25 @@ GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, // // The {needle,haystack}_expr arguments are the stringified // expressions that generated the two real arguments. -GTEST_API_ AssertionResult IsSubstring( - const char* needle_expr, const char* haystack_expr, - const char* needle, const char* haystack); -GTEST_API_ AssertionResult IsSubstring( - const char* needle_expr, const char* haystack_expr, - const wchar_t* needle, const wchar_t* haystack); -GTEST_API_ AssertionResult IsNotSubstring( - const char* needle_expr, const char* haystack_expr, - const char* needle, const char* haystack); -GTEST_API_ AssertionResult IsNotSubstring( - const char* needle_expr, const char* haystack_expr, - const wchar_t* needle, const wchar_t* haystack); -GTEST_API_ AssertionResult IsSubstring( - const char* needle_expr, const char* haystack_expr, - const ::std::string& needle, const ::std::string& haystack); -GTEST_API_ AssertionResult IsNotSubstring( - const char* needle_expr, const char* haystack_expr, - const ::std::string& needle, const ::std::string& haystack); +GTEST_API_ AssertionResult IsSubstring(const char* needle_expr, const char* haystack_expr, const char* needle, + const char* haystack); +GTEST_API_ AssertionResult IsSubstring(const char* needle_expr, const char* haystack_expr, const wchar_t* needle, + const wchar_t* haystack); +GTEST_API_ AssertionResult IsNotSubstring(const char* needle_expr, const char* haystack_expr, const char* needle, + const char* haystack); +GTEST_API_ AssertionResult IsNotSubstring(const char* needle_expr, const char* haystack_expr, const wchar_t* needle, + const wchar_t* haystack); +GTEST_API_ AssertionResult IsSubstring(const char* needle_expr, const char* haystack_expr, const ::std::string& needle, + const ::std::string& haystack); +GTEST_API_ AssertionResult IsNotSubstring(const char* needle_expr, const char* haystack_expr, + const ::std::string& needle, const ::std::string& haystack); #if GTEST_HAS_STD_WSTRING -GTEST_API_ AssertionResult IsSubstring( - const char* needle_expr, const char* haystack_expr, - const ::std::wstring& needle, const ::std::wstring& haystack); -GTEST_API_ AssertionResult IsNotSubstring( - const char* needle_expr, const char* haystack_expr, - const ::std::wstring& needle, const ::std::wstring& haystack); -#endif // GTEST_HAS_STD_WSTRING +GTEST_API_ AssertionResult IsSubstring(const char* needle_expr, const char* haystack_expr, const ::std::wstring& needle, + const ::std::wstring& haystack); +GTEST_API_ AssertionResult IsNotSubstring(const char* needle_expr, const char* haystack_expr, + const ::std::wstring& needle, const ::std::wstring& haystack); +#endif // GTEST_HAS_STD_WSTRING namespace internal { @@ -19096,10 +22815,9 @@ namespace internal { // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. template <typename RawType> -AssertionResult CmpHelperFloatingPointEQ(const char* expected_expression, - const char* actual_expression, - RawType expected, - RawType actual) { +AssertionResult CmpHelperFloatingPointEQ(const char* expected_expression, const char* actual_expression, + RawType expected, RawType actual) +{ const FloatingPoint<RawType> lhs(expected), rhs(actual); if (lhs.AlmostEquals(rhs)) { @@ -19107,12 +22825,10 @@ AssertionResult CmpHelperFloatingPointEQ(const char* expected_expression, } ::std::stringstream expected_ss; - expected_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) - << expected; + expected_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << expected; ::std::stringstream actual_ss; - actual_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) - << actual; + actual_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2) << actual; return EqFailure(expected_expression, actual_expression, @@ -19124,46 +22840,43 @@ AssertionResult CmpHelperFloatingPointEQ(const char* expected_expression, // Helper function for implementing ASSERT_NEAR. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -GTEST_API_ AssertionResult DoubleNearPredFormat(const char* expr1, - const char* expr2, - const char* abs_error_expr, - double val1, - double val2, - double abs_error); +GTEST_API_ AssertionResult DoubleNearPredFormat(const char* expr1, const char* expr2, const char* abs_error_expr, + double val1, double val2, double abs_error); // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // A class that enables one to stream messages to assertion macros -class GTEST_API_ AssertHelper { - public: +class GTEST_API_ AssertHelper +{ +public: // Constructor. - AssertHelper(TestPartResult::Type type, - const char* file, - int line, - const char* message); + AssertHelper(TestPartResult::Type type, const char* file, int line, const char* message); ~AssertHelper(); // Message assignment is a semantic trick to enable assertion // streaming; see the GTEST_MESSAGE_ macro below. void operator=(const Message& message) const; - private: +private: // We put our data in a struct so that the size of the AssertHelper class can // be as small as possible. This is important because gcc is incapable of // re-using stack space even for temporary variables, so every EXPECT_EQ // reserves stack space for another AssertHelper. - struct AssertHelperData { - AssertHelperData(TestPartResult::Type t, - const char* srcfile, - int line_num, - const char* msg) - : type(t), file(srcfile), line(line_num), message(msg) { } + struct AssertHelperData + { + AssertHelperData(TestPartResult::Type t, const char* srcfile, int line_num, const char* msg) + : type(t) + , file(srcfile) + , line(line_num) + , message(msg) + { + } TestPartResult::Type const type; const char* const file; int const line; std::string const message; - private: + private: GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelperData); }; @@ -19172,7 +22885,7 @@ class GTEST_API_ AssertHelper { GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelper); }; -} // namespace internal +} // namespace internal #if GTEST_HAS_PARAM_TEST // The pure interface class that all value-parameterized tests inherit from. @@ -19210,27 +22923,31 @@ class GTEST_API_ AssertHelper { // INSTANTIATE_TEST_CASE_P(OneToTenRange, FooTest, ::testing::Range(1, 10)); template <typename T> -class WithParamInterface { - public: +class WithParamInterface +{ +public: typedef T ParamType; - virtual ~WithParamInterface() {} + virtual ~WithParamInterface() + { + } // The current parameter value. Is also available in the test fixture's // constructor. This member function is non-static, even though it only // references static data, to reduce the opportunity for incorrect uses // like writing 'WithParamInterface<bool>::GetParam()' for a test that // uses a fixture whose parameter type is int. - const ParamType& GetParam() const { - GTEST_CHECK_(parameter_ != NULL) - << "GetParam() can only be called inside a value-parameterized test " - << "-- did you intend to write TEST_P instead of TEST_F?"; + const ParamType& GetParam() const + { + GTEST_CHECK_(parameter_ != NULL) << "GetParam() can only be called inside a value-parameterized test " + << "-- did you intend to write TEST_P instead of TEST_F?"; return *parameter_; } - private: +private: // Sets parameter value. The caller is responsible for making sure the value // remains alive and unchanged throughout the current test. - static void SetParam(const ParamType* parameter) { + static void SetParam(const ParamType* parameter) + { parameter_ = parameter; } @@ -19238,7 +22955,8 @@ class WithParamInterface { static const ParamType* parameter_; // TestClass must be a subclass of WithParamInterface<T> and Test. - template <class TestClass> friend class internal::ParameterizedTestFactory; + template <class TestClass> + friend class internal::ParameterizedTestFactory; }; template <typename T> @@ -19248,10 +22966,11 @@ const T* WithParamInterface<T>::parameter_ = NULL; // WithParamInterface, and can just inherit from ::testing::TestWithParam. template <typename T> -class TestWithParam : public Test, public WithParamInterface<T> { +class TestWithParam : public Test, public WithParamInterface<T> +{ }; -#endif // GTEST_HAS_PARAM_TEST +#endif // GTEST_HAS_PARAM_TEST // Macros for indicating success/failure in test code. @@ -19277,9 +22996,7 @@ class TestWithParam : public Test, public WithParamInterface<T> { // Generates a nonfatal failure at the given source file location with // a generic message. -#define ADD_FAILURE_AT(file, line) \ - GTEST_MESSAGE_AT_(file, line, "Failed", \ - ::testing::TestPartResult::kNonFatalFailure) +#define ADD_FAILURE_AT(file, line) GTEST_MESSAGE_AT_(file, line, "Failed", ::testing::TestPartResult::kNonFatalFailure) // Generates a fatal failure with a generic message. #define GTEST_FAIL() GTEST_FATAL_FAILURE_("Failed") @@ -19287,7 +23004,7 @@ class TestWithParam : public Test, public WithParamInterface<T> { // Define this macro to 1 to omit the definition of FAIL(), which is a // generic name and clashes with some other libraries. #if !GTEST_DONT_DEFINE_FAIL -# define FAIL() GTEST_FAIL() +#define FAIL() GTEST_FAIL() #endif // Generates a success with a generic message. @@ -19296,7 +23013,7 @@ class TestWithParam : public Test, public WithParamInterface<T> { // Define this macro to 1 to omit the definition of SUCCEED(), which // is a generic name and clashes with some other libraries. #if !GTEST_DONT_DEFINE_SUCCEED -# define SUCCEED() GTEST_SUCCEED() +#define SUCCEED() GTEST_SUCCEED() #endif // Macros for testing exceptions. @@ -19308,34 +23025,22 @@ class TestWithParam : public Test, public WithParamInterface<T> { // * {ASSERT|EXPECT}_ANY_THROW(statement): // Tests that the statement throws an exception. -#define EXPECT_THROW(statement, expected_exception) \ +#define EXPECT_THROW(statement, expected_exception) \ GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_) -#define EXPECT_NO_THROW(statement) \ - GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_) -#define EXPECT_ANY_THROW(statement) \ - GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_) -#define ASSERT_THROW(statement, expected_exception) \ +#define EXPECT_NO_THROW(statement) GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_) +#define EXPECT_ANY_THROW(statement) GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_) +#define ASSERT_THROW(statement, expected_exception) \ GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_) -#define ASSERT_NO_THROW(statement) \ - GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_) -#define ASSERT_ANY_THROW(statement) \ - GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_) +#define ASSERT_NO_THROW(statement) GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_) +#define ASSERT_ANY_THROW(statement) GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_) // Boolean assertions. Condition can be either a Boolean expression or an // AssertionResult. For more information on how to use AssertionResult with // these macros see comments on that class. -#define EXPECT_TRUE(condition) \ - GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \ - GTEST_NONFATAL_FAILURE_) -#define EXPECT_FALSE(condition) \ - GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \ - GTEST_NONFATAL_FAILURE_) -#define ASSERT_TRUE(condition) \ - GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \ - GTEST_FATAL_FAILURE_) -#define ASSERT_FALSE(condition) \ - GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \ - GTEST_FATAL_FAILURE_) +#define EXPECT_TRUE(condition) GTEST_TEST_BOOLEAN_(condition, #condition, false, true, GTEST_NONFATAL_FAILURE_) +#define EXPECT_FALSE(condition) GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, GTEST_NONFATAL_FAILURE_) +#define ASSERT_TRUE(condition) GTEST_TEST_BOOLEAN_(condition, #condition, false, true, GTEST_FATAL_FAILURE_) +#define ASSERT_FALSE(condition) GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, GTEST_FATAL_FAILURE_) // Includes the auto-generated header that implements a family of // generic predicate assertion macros. @@ -19378,8 +23083,8 @@ class TestWithParam : public Test, public WithParamInterface<T> { // Makes sure this header is not included before gtest.h. #ifndef GTEST_INCLUDE_GTEST_GTEST_H_ -# error Do not include gtest_pred_impl.h directly. Include gtest.h instead. -#endif // GTEST_INCLUDE_GTEST_GTEST_H_ +#error Do not include gtest_pred_impl.h directly. Include gtest.h instead. +#endif // GTEST_INCLUDE_GTEST_GTEST_H_ // This header implements a family of generic predicate assertion // macros: @@ -19413,290 +23118,173 @@ class TestWithParam : public Test, public WithParamInterface<T> { // GTEST_ASSERT_ is the basic statement to which all of the assertions // in this file reduce. Don't use this in your code. -#define GTEST_ASSERT_(expression, on_failure) \ - GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ - if (const ::testing::AssertionResult gtest_ar = (expression)) \ - ; \ - else \ - on_failure(gtest_ar.failure_message()) +#define GTEST_ASSERT_(expression, on_failure) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (const ::testing::AssertionResult gtest_ar = (expression)) \ + ; \ + else \ + on_failure(gtest_ar.failure_message()) // Helper function for implementing {EXPECT|ASSERT}_PRED1. Don't use // this in your code. -template <typename Pred, - typename T1> -AssertionResult AssertPred1Helper(const char* pred_text, - const char* e1, - Pred pred, - const T1& v1) { - if (pred(v1)) return AssertionSuccess(); - - return AssertionFailure() << pred_text << "(" - << e1 << ") evaluates to false, where" +template <typename Pred, typename T1> +AssertionResult AssertPred1Helper(const char* pred_text, const char* e1, Pred pred, const T1& v1) +{ + if (pred(v1)) + return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" << e1 << ") evaluates to false, where" << "\n" << e1 << " evaluates to " << v1; } // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT1. // Don't use this in your code. -#define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure)\ - GTEST_ASSERT_(pred_format(#v1, v1), \ - on_failure) +#define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure) GTEST_ASSERT_(pred_format(#v1, v1), on_failure) // Internal macro for implementing {EXPECT|ASSERT}_PRED1. Don't use // this in your code. -#define GTEST_PRED1_(pred, v1, on_failure)\ - GTEST_ASSERT_(::testing::AssertPred1Helper(#pred, \ - #v1, \ - pred, \ - v1), on_failure) +#define GTEST_PRED1_(pred, v1, on_failure) GTEST_ASSERT_(::testing::AssertPred1Helper(#pred, #v1, pred, v1), on_failure) // Unary predicate assertion macros. -#define EXPECT_PRED_FORMAT1(pred_format, v1) \ - GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_) -#define EXPECT_PRED1(pred, v1) \ - GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_) -#define ASSERT_PRED_FORMAT1(pred_format, v1) \ - GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_) -#define ASSERT_PRED1(pred, v1) \ - GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_) - +#define EXPECT_PRED_FORMAT1(pred_format, v1) GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_) +#define EXPECT_PRED1(pred, v1) GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT1(pred_format, v1) GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED1(pred, v1) GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_) // Helper function for implementing {EXPECT|ASSERT}_PRED2. Don't use // this in your code. -template <typename Pred, - typename T1, - typename T2> -AssertionResult AssertPred2Helper(const char* pred_text, - const char* e1, - const char* e2, - Pred pred, - const T1& v1, - const T2& v2) { - if (pred(v1, v2)) return AssertionSuccess(); - - return AssertionFailure() << pred_text << "(" - << e1 << ", " - << e2 << ") evaluates to false, where" - << "\n" << e1 << " evaluates to " << v1 - << "\n" << e2 << " evaluates to " << v2; +template <typename Pred, typename T1, typename T2> +AssertionResult AssertPred2Helper(const char* pred_text, const char* e1, const char* e2, Pred pred, const T1& v1, + const T2& v2) +{ + if (pred(v1, v2)) + return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" << e1 << ", " << e2 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 << "\n" << e2 << " evaluates to " << v2; } // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT2. // Don't use this in your code. -#define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure)\ - GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), \ - on_failure) +#define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure) GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), on_failure) // Internal macro for implementing {EXPECT|ASSERT}_PRED2. Don't use // this in your code. -#define GTEST_PRED2_(pred, v1, v2, on_failure)\ - GTEST_ASSERT_(::testing::AssertPred2Helper(#pred, \ - #v1, \ - #v2, \ - pred, \ - v1, \ - v2), on_failure) +#define GTEST_PRED2_(pred, v1, v2, on_failure) \ + GTEST_ASSERT_(::testing::AssertPred2Helper(#pred, #v1, #v2, pred, v1, v2), on_failure) // Binary predicate assertion macros. -#define EXPECT_PRED_FORMAT2(pred_format, v1, v2) \ - GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_) -#define EXPECT_PRED2(pred, v1, v2) \ - GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_) -#define ASSERT_PRED_FORMAT2(pred_format, v1, v2) \ - GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_) -#define ASSERT_PRED2(pred, v1, v2) \ - GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_) - +#define EXPECT_PRED_FORMAT2(pred_format, v1, v2) GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_) +#define EXPECT_PRED2(pred, v1, v2) GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT2(pred_format, v1, v2) GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED2(pred, v1, v2) GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_) // Helper function for implementing {EXPECT|ASSERT}_PRED3. Don't use // this in your code. -template <typename Pred, - typename T1, - typename T2, - typename T3> -AssertionResult AssertPred3Helper(const char* pred_text, - const char* e1, - const char* e2, - const char* e3, - Pred pred, - const T1& v1, - const T2& v2, - const T3& v3) { - if (pred(v1, v2, v3)) return AssertionSuccess(); - - return AssertionFailure() << pred_text << "(" - << e1 << ", " - << e2 << ", " - << e3 << ") evaluates to false, where" - << "\n" << e1 << " evaluates to " << v1 - << "\n" << e2 << " evaluates to " << v2 - << "\n" << e3 << " evaluates to " << v3; +template <typename Pred, typename T1, typename T2, typename T3> +AssertionResult AssertPred3Helper(const char* pred_text, const char* e1, const char* e2, const char* e3, Pred pred, + const T1& v1, const T2& v2, const T3& v3) +{ + if (pred(v1, v2, v3)) + return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" << e1 << ", " << e2 << ", " << e3 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 << "\n" << e2 << " evaluates to " << v2 << "\n" + << e3 << " evaluates to " << v3; } // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT3. // Don't use this in your code. -#define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure)\ - GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3), \ - on_failure) +#define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure) \ + GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3), on_failure) // Internal macro for implementing {EXPECT|ASSERT}_PRED3. Don't use // this in your code. -#define GTEST_PRED3_(pred, v1, v2, v3, on_failure)\ - GTEST_ASSERT_(::testing::AssertPred3Helper(#pred, \ - #v1, \ - #v2, \ - #v3, \ - pred, \ - v1, \ - v2, \ - v3), on_failure) +#define GTEST_PRED3_(pred, v1, v2, v3, on_failure) \ + GTEST_ASSERT_(::testing::AssertPred3Helper(#pred, #v1, #v2, #v3, pred, v1, v2, v3), on_failure) // Ternary predicate assertion macros. -#define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3) \ +#define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3) \ GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_) -#define EXPECT_PRED3(pred, v1, v2, v3) \ - GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_) -#define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3) \ - GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_) -#define ASSERT_PRED3(pred, v1, v2, v3) \ - GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_) - +#define EXPECT_PRED3(pred, v1, v2, v3) GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3) GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED3(pred, v1, v2, v3) GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_) // Helper function for implementing {EXPECT|ASSERT}_PRED4. Don't use // this in your code. -template <typename Pred, - typename T1, - typename T2, - typename T3, - typename T4> -AssertionResult AssertPred4Helper(const char* pred_text, - const char* e1, - const char* e2, - const char* e3, - const char* e4, - Pred pred, - const T1& v1, - const T2& v2, - const T3& v3, - const T4& v4) { - if (pred(v1, v2, v3, v4)) return AssertionSuccess(); - - return AssertionFailure() << pred_text << "(" - << e1 << ", " - << e2 << ", " - << e3 << ", " - << e4 << ") evaluates to false, where" - << "\n" << e1 << " evaluates to " << v1 - << "\n" << e2 << " evaluates to " << v2 - << "\n" << e3 << " evaluates to " << v3 - << "\n" << e4 << " evaluates to " << v4; +template <typename Pred, typename T1, typename T2, typename T3, typename T4> +AssertionResult AssertPred4Helper(const char* pred_text, const char* e1, const char* e2, const char* e3, const char* e4, + Pred pred, const T1& v1, const T2& v2, const T3& v3, const T4& v4) +{ + if (pred(v1, v2, v3, v4)) + return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" << e1 << ", " << e2 << ", " << e3 << ", " << e4 + << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 << "\n" << e2 << " evaluates to " << v2 << "\n" + << e3 << " evaluates to " << v3 << "\n" << e4 << " evaluates to " << v4; } // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT4. // Don't use this in your code. -#define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure)\ - GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4), \ - on_failure) +#define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure) \ + GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4), on_failure) // Internal macro for implementing {EXPECT|ASSERT}_PRED4. Don't use // this in your code. -#define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure)\ - GTEST_ASSERT_(::testing::AssertPred4Helper(#pred, \ - #v1, \ - #v2, \ - #v3, \ - #v4, \ - pred, \ - v1, \ - v2, \ - v3, \ - v4), on_failure) +#define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure) \ + GTEST_ASSERT_(::testing::AssertPred4Helper(#pred, #v1, #v2, #v3, #v4, pred, v1, v2, v3, v4), on_failure) // 4-ary predicate assertion macros. -#define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \ +#define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \ GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_) -#define EXPECT_PRED4(pred, v1, v2, v3, v4) \ - GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_) -#define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \ +#define EXPECT_PRED4(pred, v1, v2, v3, v4) GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \ GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_) -#define ASSERT_PRED4(pred, v1, v2, v3, v4) \ - GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_) - +#define ASSERT_PRED4(pred, v1, v2, v3, v4) GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_) // Helper function for implementing {EXPECT|ASSERT}_PRED5. Don't use // this in your code. -template <typename Pred, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5> -AssertionResult AssertPred5Helper(const char* pred_text, - const char* e1, - const char* e2, - const char* e3, - const char* e4, - const char* e5, - Pred pred, - const T1& v1, - const T2& v2, - const T3& v3, - const T4& v4, - const T5& v5) { - if (pred(v1, v2, v3, v4, v5)) return AssertionSuccess(); - - return AssertionFailure() << pred_text << "(" - << e1 << ", " - << e2 << ", " - << e3 << ", " - << e4 << ", " - << e5 << ") evaluates to false, where" - << "\n" << e1 << " evaluates to " << v1 - << "\n" << e2 << " evaluates to " << v2 - << "\n" << e3 << " evaluates to " << v3 - << "\n" << e4 << " evaluates to " << v4 - << "\n" << e5 << " evaluates to " << v5; +template <typename Pred, typename T1, typename T2, typename T3, typename T4, typename T5> +AssertionResult AssertPred5Helper(const char* pred_text, const char* e1, const char* e2, const char* e3, const char* e4, + const char* e5, Pred pred, const T1& v1, const T2& v2, const T3& v3, const T4& v4, + const T5& v5) +{ + if (pred(v1, v2, v3, v4, v5)) + return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" << e1 << ", " << e2 << ", " << e3 << ", " << e4 << ", " << e5 + << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 << "\n" << e2 << " evaluates to " << v2 << "\n" + << e3 << " evaluates to " << v3 << "\n" << e4 << " evaluates to " << v4 << "\n" << e5 + << " evaluates to " << v5; } // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT5. // Don't use this in your code. -#define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure)\ - GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), \ - on_failure) +#define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure) \ + GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), on_failure) // Internal macro for implementing {EXPECT|ASSERT}_PRED5. Don't use // this in your code. -#define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure)\ - GTEST_ASSERT_(::testing::AssertPred5Helper(#pred, \ - #v1, \ - #v2, \ - #v3, \ - #v4, \ - #v5, \ - pred, \ - v1, \ - v2, \ - v3, \ - v4, \ - v5), on_failure) +#define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure) \ + GTEST_ASSERT_(::testing::AssertPred5Helper(#pred, #v1, #v2, #v3, #v4, #v5, pred, v1, v2, v3, v4, v5), on_failure) // 5-ary predicate assertion macros. -#define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \ +#define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \ GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_) -#define EXPECT_PRED5(pred, v1, v2, v3, v4, v5) \ - GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_) -#define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \ +#define EXPECT_PRED5(pred, v1, v2, v3, v4, v5) GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \ GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_) -#define ASSERT_PRED5(pred, v1, v2, v3, v4, v5) \ - GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED5(pred, v1, v2, v3, v4, v5) GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_) - -#endif // GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ +#endif // GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ // Macros for testing equalities and inequalities. // @@ -19744,61 +23332,47 @@ AssertionResult AssertPred5Helper(const char* pred_text, // ASSERT_LT(i, array_size); // ASSERT_GT(records.size(), 0) << "There is no record left."; -#define EXPECT_EQ(expected, actual) \ - EXPECT_PRED_FORMAT2(::testing::internal:: \ - EqHelper<GTEST_IS_NULL_LITERAL_(expected)>::Compare, \ - expected, actual) -#define EXPECT_NE(expected, actual) \ - EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, expected, actual) -#define EXPECT_LE(val1, val2) \ - EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2) -#define EXPECT_LT(val1, val2) \ - EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2) -#define EXPECT_GE(val1, val2) \ - EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2) -#define EXPECT_GT(val1, val2) \ - EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2) - -#define GTEST_ASSERT_EQ(expected, actual) \ - ASSERT_PRED_FORMAT2(::testing::internal:: \ - EqHelper<GTEST_IS_NULL_LITERAL_(expected)>::Compare, \ - expected, actual) -#define GTEST_ASSERT_NE(val1, val2) \ - ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2) -#define GTEST_ASSERT_LE(val1, val2) \ - ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2) -#define GTEST_ASSERT_LT(val1, val2) \ - ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2) -#define GTEST_ASSERT_GE(val1, val2) \ - ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2) -#define GTEST_ASSERT_GT(val1, val2) \ - ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2) +#define EXPECT_EQ(expected, actual) \ + EXPECT_PRED_FORMAT2(::testing::internal::EqHelper<GTEST_IS_NULL_LITERAL_(expected)>::Compare, expected, actual) +#define EXPECT_NE(expected, actual) EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, expected, actual) +#define EXPECT_LE(val1, val2) EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2) +#define EXPECT_LT(val1, val2) EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2) +#define EXPECT_GE(val1, val2) EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2) +#define EXPECT_GT(val1, val2) EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2) + +#define GTEST_ASSERT_EQ(expected, actual) \ + ASSERT_PRED_FORMAT2(::testing::internal::EqHelper<GTEST_IS_NULL_LITERAL_(expected)>::Compare, expected, actual) +#define GTEST_ASSERT_NE(val1, val2) ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2) +#define GTEST_ASSERT_LE(val1, val2) ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2) +#define GTEST_ASSERT_LT(val1, val2) ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2) +#define GTEST_ASSERT_GE(val1, val2) ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2) +#define GTEST_ASSERT_GT(val1, val2) ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2) // Define macro GTEST_DONT_DEFINE_ASSERT_XY to 1 to omit the definition of // ASSERT_XY(), which clashes with some users' own code. #if !GTEST_DONT_DEFINE_ASSERT_EQ -# define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2) +#define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2) #endif #if !GTEST_DONT_DEFINE_ASSERT_NE -# define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2) +#define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2) #endif #if !GTEST_DONT_DEFINE_ASSERT_LE -# define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2) +#define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2) #endif #if !GTEST_DONT_DEFINE_ASSERT_LT -# define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2) +#define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2) #endif #if !GTEST_DONT_DEFINE_ASSERT_GE -# define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2) +#define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2) #endif #if !GTEST_DONT_DEFINE_ASSERT_GT -# define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2) +#define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2) #endif // C-string Comparisons. All tests treat NULL and any non-NULL string @@ -19817,23 +23391,17 @@ AssertionResult AssertPred5Helper(const char* pred_text, // // These macros evaluate their arguments exactly once. -#define EXPECT_STREQ(expected, actual) \ - EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual) -#define EXPECT_STRNE(s1, s2) \ - EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2) -#define EXPECT_STRCASEEQ(expected, actual) \ +#define EXPECT_STREQ(expected, actual) EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual) +#define EXPECT_STRNE(s1, s2) EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2) +#define EXPECT_STRCASEEQ(expected, actual) \ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual) -#define EXPECT_STRCASENE(s1, s2)\ - EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2) - -#define ASSERT_STREQ(expected, actual) \ - ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual) -#define ASSERT_STRNE(s1, s2) \ - ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2) -#define ASSERT_STRCASEEQ(expected, actual) \ +#define EXPECT_STRCASENE(s1, s2) EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2) + +#define ASSERT_STREQ(expected, actual) ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual) +#define ASSERT_STRNE(s1, s2) ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2) +#define ASSERT_STRCASEEQ(expected, actual) \ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual) -#define ASSERT_STRCASENE(s1, s2)\ - ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2) +#define ASSERT_STRCASENE(s1, s2) ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2) // Macros for comparing floating-point numbers. // @@ -19849,29 +23417,23 @@ AssertionResult AssertPred5Helper(const char* pred_text, // FloatingPoint template class in gtest-internal.h if you are // interested in the implementation details. -#define EXPECT_FLOAT_EQ(expected, actual)\ - EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \ - expected, actual) +#define EXPECT_FLOAT_EQ(expected, actual) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, expected, actual) -#define EXPECT_DOUBLE_EQ(expected, actual)\ - EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \ - expected, actual) +#define EXPECT_DOUBLE_EQ(expected, actual) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, expected, actual) -#define ASSERT_FLOAT_EQ(expected, actual)\ - ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \ - expected, actual) +#define ASSERT_FLOAT_EQ(expected, actual) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, expected, actual) -#define ASSERT_DOUBLE_EQ(expected, actual)\ - ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \ - expected, actual) +#define ASSERT_DOUBLE_EQ(expected, actual) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, expected, actual) -#define EXPECT_NEAR(val1, val2, abs_error)\ - EXPECT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \ - val1, val2, abs_error) +#define EXPECT_NEAR(val1, val2, abs_error) \ + EXPECT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, val1, val2, abs_error) -#define ASSERT_NEAR(val1, val2, abs_error)\ - ASSERT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \ - val1, val2, abs_error) +#define ASSERT_NEAR(val1, val2, abs_error) \ + ASSERT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, val1, val2, abs_error) // These predicate format functions work on floating-point values, and // can be used in {ASSERT|EXPECT}_PRED_FORMAT2*(), e.g. @@ -19880,10 +23442,8 @@ AssertionResult AssertPred5Helper(const char* pred_text, // Asserts that val1 is less than, or almost equal to, val2. Fails // otherwise. In particular, it fails if either val1 or val2 is NaN. -GTEST_API_ AssertionResult FloatLE(const char* expr1, const char* expr2, - float val1, float val2); -GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2, - double val1, double val2); +GTEST_API_ AssertionResult FloatLE(const char* expr1, const char* expr2, float val1, float val2); +GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2, double val1, double val2); #if GTEST_OS_WINDOWS @@ -19897,19 +23457,15 @@ GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2, // expected result and the actual result with both a human-readable // string representation of the error, if available, as well as the // hex result code. -# define EXPECT_HRESULT_SUCCEEDED(expr) \ - EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) +#define EXPECT_HRESULT_SUCCEEDED(expr) EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) -# define ASSERT_HRESULT_SUCCEEDED(expr) \ - ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) +#define ASSERT_HRESULT_SUCCEEDED(expr) ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) -# define EXPECT_HRESULT_FAILED(expr) \ - EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) +#define EXPECT_HRESULT_FAILED(expr) EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) -# define ASSERT_HRESULT_FAILED(expr) \ - ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) +#define ASSERT_HRESULT_FAILED(expr) ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) -#endif // GTEST_OS_WINDOWS +#endif // GTEST_OS_WINDOWS // Macros that execute statement and check that it doesn't generate new fatal // failures in the current thread. @@ -19921,10 +23477,8 @@ GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2, // EXPECT_NO_FATAL_FAILURE(Process()); // ASSERT_NO_FATAL_FAILURE(Process()) << "Process() failed"; // -#define ASSERT_NO_FATAL_FAILURE(statement) \ - GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_) -#define EXPECT_NO_FATAL_FAILURE(statement) \ - GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_) +#define ASSERT_NO_FATAL_FAILURE(statement) GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_) +#define EXPECT_NO_FATAL_FAILURE(statement) GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_) // Causes a trace (including the source file path, the current line // number, and the given message) to be included in every test failure @@ -19937,9 +23491,9 @@ GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2, // of the dummy variable name, thus allowing multiple SCOPED_TRACE()s // to appear in the same block - as long as they are on different // lines. -#define SCOPED_TRACE(message) \ - ::testing::internal::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)(\ - __FILE__, __LINE__, ::testing::Message() << (message)) +#define SCOPED_TRACE(message) \ + ::testing::internal::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)( \ + __FILE__, __LINE__, ::testing::Message() << (message)) // Compile-time assertion for type equality. // StaticAssertTypeEq<type1, type2>() compiles iff type1 and type2 are @@ -19972,7 +23526,8 @@ GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2, // // to cause a compiler error. template <typename T1, typename T2> -bool StaticAssertTypeEq() { +bool StaticAssertTypeEq() +{ (void)internal::StaticAssertTypeEqHelper<T1, T2>(); return true; } @@ -20002,14 +23557,13 @@ bool StaticAssertTypeEq() { // code. GetTestTypeId() is guaranteed to always return the same // value, as it always calls GetTypeId<>() from the Google Test // framework. -#define GTEST_TEST(test_case_name, test_name)\ - GTEST_TEST_(test_case_name, test_name, \ - ::testing::Test, ::testing::internal::GetTestTypeId()) +#define GTEST_TEST(test_case_name, test_name) \ + GTEST_TEST_(test_case_name, test_name, ::testing::Test, ::testing::internal::GetTestTypeId()) // Define this macro to 1 to omit the definition of TEST(), which // is a generic name and clashes with some other libraries. #if !GTEST_DONT_DEFINE_TEST -# define TEST(test_case_name, test_name) GTEST_TEST(test_case_name, test_name) +#define TEST(test_case_name, test_name) GTEST_TEST(test_case_name, test_name) #endif // Defines a test that uses a test fixture. @@ -20038,11 +23592,10 @@ bool StaticAssertTypeEq() { // EXPECT_EQ(1, b_.size()); // } -#define TEST_F(test_fixture, test_name)\ - GTEST_TEST_(test_fixture, test_name, test_fixture, \ - ::testing::internal::GetTypeId<test_fixture>()) +#define TEST_F(test_fixture, test_name) \ + GTEST_TEST_(test_fixture, test_name, test_fixture, ::testing::internal::GetTypeId<test_fixture>()) -} // namespace testing +} // namespace testing // Use this function in main() to run all tests. It returns 0 if all // tests are successful, or 1 otherwise. @@ -20054,8 +23607,9 @@ bool StaticAssertTypeEq() { // namespace and has an all-caps name. int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_; -inline int RUN_ALL_TESTS() { +inline int RUN_ALL_TESTS() +{ return ::testing::UnitTest::GetInstance()->Run(); } #include <dune/xt/common/reenable_warnings.hh> -#endif // GTEST_INCLUDE_GTEST_GTEST_H_ +#endif // GTEST_INCLUDE_GTEST_GTEST_H_ -- GitLab