1915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan// This file was GENERATED by command: 2915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan// pump.py gtest-param-test.h.pump 3915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan// DO NOT EDIT BY HAND!!! 43d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 53d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Copyright 2008, Google Inc. 63d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// All rights reserved. 73d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 83d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Redistribution and use in source and binary forms, with or without 93d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// modification, are permitted provided that the following conditions are 103d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// met: 113d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 123d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// * Redistributions of source code must retain the above copyright 133d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// notice, this list of conditions and the following disclaimer. 143d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// * Redistributions in binary form must reproduce the above 153d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// copyright notice, this list of conditions and the following disclaimer 163d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// in the documentation and/or other materials provided with the 173d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// distribution. 183d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// * Neither the name of Google Inc. nor the names of its 193d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// contributors may be used to endorse or promote products derived from 203d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// this software without specific prior written permission. 213d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 223d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 233d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 243d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 253d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 263d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 273d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 283d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 293d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 303d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 313d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 323d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 333d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 343d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Authors: vladl@google.com (Vlad Losev) 353d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 363d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Macros and functions for implementing parameterized tests 373d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// in Google C++ Testing Framework (Google Test) 383d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 393d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// This file is generated by a SCRIPT. DO NOT EDIT BY HAND! 403d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 413d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ 423d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ 433d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 443d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 453d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Value-parameterized tests allow you to test your code with different 463d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// parameters without writing multiple copies of the same test. 473d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 483d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Here is how you use value-parameterized tests: 493d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 503d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev#if 0 513d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 523d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// To write value-parameterized tests, first you should define a fixture 53915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan// class. It is usually derived from testing::TestWithParam<T> (see below for 54915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan// another inheritance scheme that's sometimes useful in more complicated 55915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan// class hierarchies), where the type of your parameter values. 56915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan// TestWithParam<T> is itself derived from testing::Test. T can be any 57915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan// copyable type. If it's a raw pointer, you are responsible for managing the 58915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan// lifespan of the pointed values. 593d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 603d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevclass FooTest : public ::testing::TestWithParam<const char*> { 613d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev // You can implement all the usual class fixture members here. 623d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev}; 633d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 643d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Then, use the TEST_P macro to define as many parameterized tests 653d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// for this fixture as you want. The _P suffix is for "parameterized" 663d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// or "pattern", whichever you prefer to think. 673d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 683d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevTEST_P(FooTest, DoesBlah) { 693d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev // Inside a test, access the test parameter with the GetParam() method 703d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev // of the TestWithParam<T> class: 713d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev EXPECT_TRUE(foo.Blah(GetParam())); 723d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev ... 733d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 743d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 753d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevTEST_P(FooTest, HasBlahBlah) { 763d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev ... 773d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 783d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 793d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Finally, you can use INSTANTIATE_TEST_CASE_P to instantiate the test 803d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// case with any set of parameters you want. Google Test defines a number 813d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// of functions for generating test parameters. They return what we call 823d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// (surprise!) parameter generators. Here is a summary of them, which 833d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// are all in the testing namespace: 843d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 853d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 863d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Range(begin, end [, step]) - Yields values {begin, begin+step, 873d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// begin+step+step, ...}. The values do not 883d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// include end. step defaults to 1. 893d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Values(v1, v2, ..., vN) - Yields values {v1, v2, ..., vN}. 903d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// ValuesIn(container) - Yields values from a C-style array, an STL 913d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// ValuesIn(begin,end) container, or an iterator range [begin, end). 923d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Bool() - Yields sequence {false, true}. 933d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Combine(g1, g2, ..., gN) - Yields all combinations (the Cartesian product 943d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// for the math savvy) of the values generated 953d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// by the N generators. 963d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 973d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// For more details, see comments at the definitions of these functions below 983d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// in this file. 993d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 1003d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// The following statement will instantiate tests from the FooTest test case 1013d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// each with parameter values "meeny", "miny", and "moe". 1023d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 1033d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevINSTANTIATE_TEST_CASE_P(InstantiationName, 1043d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev FooTest, 1053d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev Values("meeny", "miny", "moe")); 1063d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 1073d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// To distinguish different instances of the pattern, (yes, you 1083d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// can instantiate it more then once) the first argument to the 1093d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// INSTANTIATE_TEST_CASE_P macro is a prefix that will be added to the 1103d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// actual test case name. Remember to pick unique prefixes for different 1113d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// instantiations. The tests from the instantiation above will have 1123d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// these names: 1133d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 1143d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// * InstantiationName/FooTest.DoesBlah/0 for "meeny" 1153d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// * InstantiationName/FooTest.DoesBlah/1 for "miny" 1163d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// * InstantiationName/FooTest.DoesBlah/2 for "moe" 1173d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// * InstantiationName/FooTest.HasBlahBlah/0 for "meeny" 1183d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// * InstantiationName/FooTest.HasBlahBlah/1 for "miny" 1193d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// * InstantiationName/FooTest.HasBlahBlah/2 for "moe" 1203d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 1213d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// You can use these names in --gtest_filter. 1223d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 1233d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// This statement will instantiate all tests from FooTest again, each 1243d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// with parameter values "cat" and "dog": 1253d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 1263d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevconst char* pets[] = {"cat", "dog"}; 1273d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevINSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets)); 1283d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 1293d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// The tests from the instantiation above will have these names: 1303d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 1313d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat" 1323d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog" 1333d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat" 1343d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog" 1353d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 1363d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Please note that INSTANTIATE_TEST_CASE_P will instantiate all tests 1373d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// in the given test case, whether their definitions come before or 1383d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// AFTER the INSTANTIATE_TEST_CASE_P statement. 1393d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 14090030d74c8cacbdab62136daa465a7ef359e2adcvladlosev// Please also note that generator expressions (including parameters to the 14190030d74c8cacbdab62136daa465a7ef359e2adcvladlosev// generators) are evaluated in InitGoogleTest(), after main() has started. 14290030d74c8cacbdab62136daa465a7ef359e2adcvladlosev// This allows the user on one hand, to adjust generator parameters in order 14390030d74c8cacbdab62136daa465a7ef359e2adcvladlosev// to dynamically determine a set of tests to run and on the other hand, 14490030d74c8cacbdab62136daa465a7ef359e2adcvladlosev// give the user a chance to inspect the generated tests with Google Test 14590030d74c8cacbdab62136daa465a7ef359e2adcvladlosev// reflection API before RUN_ALL_TESTS() is executed. 1463d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 1473d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc 1483d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// for more examples. 1493d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 1503d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// In the future, we plan to publish the API for defining new parameter 1513d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// generators. But for now this interface remains part of the internal 1523d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// implementation and is subject to change. 153915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan// 154915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan// 155915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan// A parameterized test fixture must be derived from testing::Test and from 156915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan// testing::WithParamInterface<T>, where T is the type of the parameter 157915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan// values. Inheriting from TestWithParam<T> satisfies that requirement because 158915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan// TestWithParam<T> inherits from both Test and WithParamInterface. In more 159915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan// complicated hierarchies, however, it is occasionally useful to inherit 160915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan// separately from Test and WithParamInterface. For example: 161915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan 162915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wanclass BaseTest : public ::testing::Test { 163915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan // You can inherit all the usual members for a non-parameterized test 164915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan // fixture here. 165915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan}; 166915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan 167915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wanclass DerivedTest : public BaseTest, public ::testing::WithParamInterface<int> { 168915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan // The usual test fixture members go here too. 169915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan}; 170915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan 171915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wanTEST_F(BaseTest, HasFoo) { 172915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan // This is an ordinary non-parameterized test. 173915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan} 174915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan 175915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wanTEST_P(DerivedTest, DoesBlah) { 176915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan // GetParam works just the same here as if you inherit from TestWithParam. 177915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan EXPECT_TRUE(foo.Blah(GetParam())); 178915129ee6fd4d9c5564aafedb238a237592a3d42zhanyong.wan} 1793d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 1803d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev#endif // 0 1813d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 182dac3e879c56a50696a36f53e1e5e353e48fa665fzhanyong.wan#include "gtest/internal/gtest-port.h" 1833d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 1844853a503371f39aa22e14adcdecea71c09841e34zhanyong.wan#if !GTEST_OS_SYMBIAN 185ffeb11d14a890b902dbb26ff2296cda7bf2d31dfzhanyong.wan# include <utility> 1864853a503371f39aa22e14adcdecea71c09841e34zhanyong.wan#endif 1873d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 1887e13e0f5dd2f9458e0a613e0a91c894eb80126fczhanyong.wan// scripts/fuse_gtest.py depends on gtest's own header being #included 1897e13e0f5dd2f9458e0a613e0a91c894eb80126fczhanyong.wan// *unconditionally*. Therefore these #includes cannot be moved 1907e13e0f5dd2f9458e0a613e0a91c894eb80126fczhanyong.wan// inside #if GTEST_HAS_PARAM_TEST. 191dac3e879c56a50696a36f53e1e5e353e48fa665fzhanyong.wan#include "gtest/internal/gtest-internal.h" 192dac3e879c56a50696a36f53e1e5e353e48fa665fzhanyong.wan#include "gtest/internal/gtest-param-util.h" 193dac3e879c56a50696a36f53e1e5e353e48fa665fzhanyong.wan#include "gtest/internal/gtest-param-util-generated.h" 1943d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 1957e13e0f5dd2f9458e0a613e0a91c894eb80126fczhanyong.wan#if GTEST_HAS_PARAM_TEST 1967e13e0f5dd2f9458e0a613e0a91c894eb80126fczhanyong.wan 1973d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevnamespace testing { 1983d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 1993d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Functions producing parameter generators. 2003d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 2013d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Google Test uses these generators to produce parameters for value- 2023d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// parameterized tests. When a parameterized test case is instantiated 2033d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// with a particular generator, Google Test creates and runs tests 2043d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// for each element in the sequence produced by the generator. 2053d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 2063d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// In the following sample, tests from test case FooTest are instantiated 2073d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// each three times with parameter values 3, 5, and 8: 2083d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 2093d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// class FooTest : public TestWithParam<int> { ... }; 2103d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 2113d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// TEST_P(FooTest, TestThis) { 2123d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// } 2133d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// TEST_P(FooTest, TestThat) { 2143d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// } 2153d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// INSTANTIATE_TEST_CASE_P(TestSequence, FooTest, Values(3, 5, 8)); 2163d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 2173d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 2183d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Range() returns generators providing sequences of values in a range. 2193d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 2203d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Synopsis: 2213d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Range(start, end) 2223d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// - returns a generator producing a sequence of values {start, start+1, 2233d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// start+2, ..., }. 2243d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Range(start, end, step) 2253d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// - returns a generator producing a sequence of values {start, start+step, 2263d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// start+step+step, ..., }. 2273d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Notes: 2283d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// * The generated sequences never include end. For example, Range(1, 5) 2293d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2) 2303d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// returns a generator producing {1, 3, 5, 7}. 2313d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// * start and end must have the same type. That type may be any integral or 2323d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// floating-point type or a user defined type satisfying these conditions: 2333d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// * It must be assignable (have operator=() defined). 2343d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// * It must have operator+() (operator+(int-compatible type) for 2353d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// two-operand version). 2363d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// * It must have operator<() defined. 2373d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Elements in the resulting sequences will also have that type. 2383d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// * Condition start < end must be satisfied in order for resulting sequences 2393d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// to contain any elements. 2403d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 2413d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T, typename IncrementT> 2423d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ParamGenerator<T> Range(T start, T end, IncrementT step) { 2433d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ParamGenerator<T>( 2443d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev new internal::RangeGenerator<T, IncrementT>(start, end, step)); 2453d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 2463d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 2473d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T> 2483d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ParamGenerator<T> Range(T start, T end) { 2493d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return Range(start, end, 1); 2503d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 2513d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 2523d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// ValuesIn() function allows generation of tests with parameters coming from 2533d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// a container. 2543d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 2553d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Synopsis: 2563d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// ValuesIn(const T (&array)[N]) 2573d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// - returns a generator producing sequences with elements from 2583d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// a C-style array. 2593d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// ValuesIn(const Container& container) 2603d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// - returns a generator producing sequences with elements from 2613d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// an STL-style container. 2623d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// ValuesIn(Iterator begin, Iterator end) 2633d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// - returns a generator producing sequences with elements from 2643d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// a range [begin, end) defined by a pair of STL-style iterators. These 2653d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// iterators can also be plain C pointers. 2663d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 2673d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Please note that ValuesIn copies the values from the containers 2683d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// passed in and keeps them to generate tests in RUN_ALL_TESTS(). 2693d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 2703d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Examples: 2713d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 2723d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// This instantiates tests from test case StringTest 2733d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// each with C-string values of "foo", "bar", and "baz": 2743d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 2753d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// const char* strings[] = {"foo", "bar", "baz"}; 2763d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// INSTANTIATE_TEST_CASE_P(StringSequence, SrtingTest, ValuesIn(strings)); 2773d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 2783d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// This instantiates tests from test case StlStringTest 2793d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// each with STL strings with values "a" and "b": 2803d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 2813d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// ::std::vector< ::std::string> GetParameterStrings() { 2823d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// ::std::vector< ::std::string> v; 2833d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// v.push_back("a"); 2843d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// v.push_back("b"); 2853d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// return v; 2863d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// } 2873d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 2883d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// INSTANTIATE_TEST_CASE_P(CharSequence, 2893d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// StlStringTest, 2903d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// ValuesIn(GetParameterStrings())); 2913d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 2923d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 2933d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// This will also instantiate tests from CharTest 2943d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// each with parameter values 'a' and 'b': 2953d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 2963d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// ::std::list<char> GetParameterChars() { 2973d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// ::std::list<char> list; 2983d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// list.push_back('a'); 2993d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// list.push_back('b'); 3003d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// return list; 3013d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// } 3023d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// ::std::list<char> l = GetParameterChars(); 3033d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// INSTANTIATE_TEST_CASE_P(CharSequence2, 3043d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// CharTest, 3053d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// ValuesIn(l.begin(), l.end())); 3063d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 3073d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename ForwardIterator> 3083d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ParamGenerator< 309fc99b1ad515ccfc92ee92001c409f69385033af5zhanyong.wan typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type> 310fc99b1ad515ccfc92ee92001c409f69385033af5zhanyong.wanValuesIn(ForwardIterator begin, ForwardIterator end) { 311fc99b1ad515ccfc92ee92001c409f69385033af5zhanyong.wan typedef typename ::testing::internal::IteratorTraits<ForwardIterator> 312fc99b1ad515ccfc92ee92001c409f69385033af5zhanyong.wan ::value_type ParamType; 3133d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ParamGenerator<ParamType>( 3143d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end)); 3153d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 3163d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 3173d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T, size_t N> 3183d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ParamGenerator<T> ValuesIn(const T (&array)[N]) { 3193d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return ValuesIn(array, array + N); 3203d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 3213d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 3223d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <class Container> 3233d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ParamGenerator<typename Container::value_type> ValuesIn( 3243d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev const Container& container) { 3253d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return ValuesIn(container.begin(), container.end()); 3263d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 3273d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 3283d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Values() allows generating tests from explicitly specified list of 3293d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// parameters. 3303d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 3313d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Synopsis: 3323d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Values(T v1, T v2, ..., T vN) 3333d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// - returns a generator producing sequences with elements v1, v2, ..., vN. 3343d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 3353d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// For example, this instantiates tests from test case BarTest each 3363d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// with values "one", "two", and "three": 3373d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 3383d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three")); 3393d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 3403d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// This instantiates tests from test case BazTest each with values 1, 2, 3.5. 3413d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// The exact type of values will depend on the type of parameter in BazTest. 3423d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 3433d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5)); 3443d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 3453d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Currently, Values() supports from 1 to 50 parameters. 3463d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 3473d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1> 3483d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray1<T1> Values(T1 v1) { 3493d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray1<T1>(v1); 3503d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 3513d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 3523d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2> 3533d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray2<T1, T2> Values(T1 v1, T2 v2) { 3543d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray2<T1, T2>(v1, v2); 3553d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 3563d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 3573d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3> 3583d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray3<T1, T2, T3> Values(T1 v1, T2 v2, T3 v3) { 3593d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray3<T1, T2, T3>(v1, v2, v3); 3603d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 3613d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 3623d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4> 3633d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray4<T1, T2, T3, T4> Values(T1 v1, T2 v2, T3 v3, T4 v4) { 3643d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray4<T1, T2, T3, T4>(v1, v2, v3, v4); 3653d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 3663d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 3673d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5> 3683d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray5<T1, T2, T3, T4, T5> Values(T1 v1, T2 v2, T3 v3, T4 v4, 3693d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T5 v5) { 3703d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray5<T1, T2, T3, T4, T5>(v1, v2, v3, v4, v5); 3713d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 3723d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 3733d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 3743d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6> 3753d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(T1 v1, T2 v2, T3 v3, 3763d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T4 v4, T5 v5, T6 v6) { 3773d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(v1, v2, v3, v4, v5, v6); 3783d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 3793d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 3803d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 3813d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7> 3823d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(T1 v1, T2 v2, T3 v3, 3833d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T4 v4, T5 v5, T6 v6, T7 v7) { 3843d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5, 3853d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v6, v7); 3863d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 3873d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 3883d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 3893d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8> 3903d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(T1 v1, T2 v2, 3913d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) { 3923d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4, 3933d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v5, v6, v7, v8); 3943d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 3953d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 3963d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 3973d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9> 3983d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2, 3993d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) { 4003d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3, 4013d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v4, v5, v6, v7, v8, v9); 4023d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 4033d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 4043d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4053d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10> 4063d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1, 4073d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) { 4083d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1, 4093d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v2, v3, v4, v5, v6, v7, v8, v9, v10); 4103d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 4113d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 4123d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4133d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 4143d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11> 4153d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, 4163d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T11> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 4173d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T10 v10, T11 v11) { 4183d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, 4193d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T11>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11); 4203d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 4213d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 4223d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4233d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 4243d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12> 4253d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 4263d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 4273d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T10 v10, T11 v11, T12 v12) { 4283d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 4293d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12); 4303d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 4313d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 4323d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4333d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 4343d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13> 4353d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, 4363d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T13> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 4373d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T10 v10, T11 v11, T12 v12, T13 v13) { 4383d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 4393d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13); 4403d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 4413d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 4423d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4433d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 4443d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14> 4453d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 4463d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 4473d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) { 4483d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 4493d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, 4503d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v14); 4513d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 4523d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 4533d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4543d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 4553d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15> 4563d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 4573d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, 4583d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) { 4593d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 4603d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, 4613d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v13, v14, v15); 4623d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 4633d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 4643d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4653d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 4663d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 4673d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16> 4683d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 4693d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 4703d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 4713d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T16 v16) { 4723d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 4733d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, 4743d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v12, v13, v14, v15, v16); 4753d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 4763d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 4773d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4783d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 4793d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 4803d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17> 4813d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 4823d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 4833d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 4843d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T16 v16, T17 v17) { 4853d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 4863d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, 4873d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v11, v12, v13, v14, v15, v16, v17); 4883d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 4893d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 4903d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4913d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 4923d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 4933d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18> 4943d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 4953d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, 4963d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 4973d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T16 v16, T17 v17, T18 v18) { 4983d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 4993d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18>(v1, v2, v3, v4, v5, v6, v7, v8, v9, 5003d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v10, v11, v12, v13, v14, v15, v16, v17, v18); 5013d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 5023d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 5033d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 5043d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 5053d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 5063d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19> 5073d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 5083d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, 5093d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, 5103d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) { 5113d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 5123d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19>(v1, v2, v3, v4, v5, v6, v7, v8, 5133d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19); 5143d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 5153d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 5163d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 5173d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 5183d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 5193d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20> 5203d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 5213d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20> Values(T1 v1, T2 v2, T3 v3, T4 v4, 5223d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 5233d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) { 5243d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 5253d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20>(v1, v2, v3, v4, v5, v6, v7, 5263d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20); 5273d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 5283d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 5293d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 5303d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 5313d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 5323d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 5333d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21> 5343d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 5353d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21> Values(T1 v1, T2 v2, T3 v3, T4 v4, 5363d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 5373d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) { 5383d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 5393d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(v1, v2, v3, v4, v5, v6, 5403d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21); 5413d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 5423d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 5433d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 5443d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 5453d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 5463d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 5473d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22> 5483d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 5493d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22> Values(T1 v1, T2 v2, T3 v3, 5503d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 5513d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 5523d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T21 v21, T22 v22) { 5533d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 5543d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(v1, v2, v3, v4, 5553d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 5563d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v20, v21, v22); 5573d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 5583d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 5593d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 5603d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 5613d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 5623d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 5633d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23> 5643d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 5653d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> Values(T1 v1, T2 v2, 5663d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 5673d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 5683d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T21 v21, T22 v22, T23 v23) { 5693d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 5703d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(v1, v2, v3, 5713d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 5723d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v20, v21, v22, v23); 5733d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 5743d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 5753d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 5763d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 5773d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 5783d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 5793d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24> 5803d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 5813d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Values(T1 v1, T2 v2, 5823d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 5833d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 5843d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T21 v21, T22 v22, T23 v23, T24 v24) { 5853d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 5863d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(v1, v2, 5873d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, 5883d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v19, v20, v21, v22, v23, v24); 5893d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 5903d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 5913d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 5923d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 5933d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 5943d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 5953d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25> 5963d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 5973d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Values(T1 v1, 5983d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, 5993d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, 6003d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) { 6013d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 6023d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>(v1, 6033d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, 6043d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v18, v19, v20, v21, v22, v23, v24, v25); 6053d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 6063d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 6073d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 6083d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 6093d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 6103d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 6113d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 6123d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26> 6133d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 6143d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 6153d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 6163d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 6173d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 6183d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26 v26) { 6193d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 6203d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 6213d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, 6223d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26); 6233d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 6243d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 6253d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 6263d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 6273d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 6283d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 6293d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 6303d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27> 6313d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 6323d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, 6333d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T27> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 6343d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 6353d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 6363d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26 v26, T27 v27) { 6373d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 6383d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 6393d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, 6403d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27); 6413d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 6423d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 6433d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 6443d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 6453d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 6463d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 6473d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 6483d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27, typename T28> 6493d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 6503d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, 6513d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T28> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 6523d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 6533d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 6543d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26 v26, T27 v27, T28 v28) { 6553d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 6563d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 6573d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27, T28>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, 6583d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, 6593d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v28); 6603d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 6613d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 6623d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 6633d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 6643d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 6653d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 6663d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 6673d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27, typename T28, typename T29> 6683d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 6693d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 6703d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 6713d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 6723d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 6733d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26 v26, T27 v27, T28 v28, T29 v29) { 6743d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 6753d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 6763d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27, T28, T29>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, 6773d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, 6783d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v27, v28, v29); 6793d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 6803d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 6813d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 6823d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 6833d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 6843d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 6853d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 6863d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27, typename T28, typename T29, typename T30> 6873d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 6883d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 6893d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29, T30> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, 6903d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, 6913d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, 6923d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) { 6933d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 6943d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 6953d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27, T28, T29, T30>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, 6963d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, 6973d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v26, v27, v28, v29, v30); 6983d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 6993d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 7003d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 7013d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 7023d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 7033d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 7043d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 7053d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27, typename T28, typename T29, typename T30, 7063d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T31> 7073d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 7083d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 7093d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29, T30, T31> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 7103d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 7113d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 7123d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) { 7133d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 7143d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 7153d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27, T28, T29, T30, T31>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, 7163d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, 7173d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v25, v26, v27, v28, v29, v30, v31); 7183d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 7193d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 7203d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 7213d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 7223d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 7233d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 7243d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 7253d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27, typename T28, typename T29, typename T30, 7263d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T31, typename T32> 7273d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 7283d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 7293d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29, T30, T31, T32> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 7303d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 7313d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 7323d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 7333d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T32 v32) { 7343d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 7353d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 7363d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27, T28, T29, T30, T31, T32>(v1, v2, v3, v4, v5, v6, v7, v8, v9, 7373d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 7383d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v24, v25, v26, v27, v28, v29, v30, v31, v32); 7393d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 7403d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 7413d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 7423d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 7433d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 7443d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 7453d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 7463d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27, typename T28, typename T29, typename T30, 7473d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T31, typename T32, typename T33> 7483d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 7493d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 7503d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29, T30, T31, T32, T33> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, 7513d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 7523d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 7533d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 7543d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T32 v32, T33 v33) { 7553d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 7563d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 7573d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27, T28, T29, T30, T31, T32, T33>(v1, v2, v3, v4, v5, v6, v7, v8, 7583d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 7593d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v24, v25, v26, v27, v28, v29, v30, v31, v32, v33); 7603d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 7613d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 7623d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 7633d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 7643d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 7653d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 7663d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 7673d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27, typename T28, typename T29, typename T30, 7683d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T31, typename T32, typename T33, typename T34> 7693d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 7703d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 7713d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29, T30, T31, T32, T33, T34> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, 7723d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, 7733d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, 7743d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, 7753d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T31 v31, T32 v32, T33 v33, T34 v34) { 7763d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 7773d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 7783d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27, T28, T29, T30, T31, T32, T33, T34>(v1, v2, v3, v4, v5, v6, v7, 7793d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, 7803d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34); 7813d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 7823d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 7833d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 7843d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 7853d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 7863d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 7873d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 7883d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27, typename T28, typename T29, typename T30, 7893d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T31, typename T32, typename T33, typename T34, typename T35> 7903d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 7913d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 7923d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29, T30, T31, T32, T33, T34, T35> Values(T1 v1, T2 v2, T3 v3, T4 v4, 7933d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 7943d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, 7953d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, 7963d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) { 7973d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 7983d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 7993d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27, T28, T29, T30, T31, T32, T33, T34, T35>(v1, v2, v3, v4, v5, v6, 8003d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, 8013d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35); 8023d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 8033d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 8043d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 8053d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 8063d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 8073d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 8083d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 8093d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27, typename T28, typename T29, typename T30, 8103d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T31, typename T32, typename T33, typename T34, typename T35, 8113d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T36> 8123d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 8133d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 8143d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29, T30, T31, T32, T33, T34, T35, T36> Values(T1 v1, T2 v2, T3 v3, T4 v4, 8153d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 8163d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, 8173d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, 8183d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) { 8193d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 8203d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 8213d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36>(v1, v2, v3, v4, 8223d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 8233d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, 8243d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v34, v35, v36); 8253d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 8263d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 8273d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 8283d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 8293d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 8303d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 8313d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 8323d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27, typename T28, typename T29, typename T30, 8333d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T31, typename T32, typename T33, typename T34, typename T35, 8343d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T36, typename T37> 8353d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 8363d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 8373d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29, T30, T31, T32, T33, T34, T35, T36, T37> Values(T1 v1, T2 v2, T3 v3, 8383d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 8393d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 8403d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, 8413d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, 8423d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T37 v37) { 8433d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 8443d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 8453d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>(v1, v2, v3, 8463d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 8473d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, 8483d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v34, v35, v36, v37); 8493d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 8503d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 8513d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 8523d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 8533d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 8543d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 8553d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 8563d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27, typename T28, typename T29, typename T30, 8573d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T31, typename T32, typename T33, typename T34, typename T35, 8583d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T36, typename T37, typename T38> 8593d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 8603d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 8613d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Values(T1 v1, T2 v2, 8623d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 8633d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 8643d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, 8653d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, 8663d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T37 v37, T38 v38) { 8673d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 8683d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 8693d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>(v1, v2, 8703d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, 8713d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, 8723d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v33, v34, v35, v36, v37, v38); 8733d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 8743d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 8753d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 8763d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 8773d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 8783d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 8793d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 8803d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27, typename T28, typename T29, typename T30, 8813d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T31, typename T32, typename T33, typename T34, typename T35, 8823d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T36, typename T37, typename T38, typename T39> 8833d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 8843d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 8853d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Values(T1 v1, T2 v2, 8863d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 8873d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 8883d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, 8893d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, 8903d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T37 v37, T38 v38, T39 v39) { 8913d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 8923d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 8933d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>(v1, 8943d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, 8953d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, 8963d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v32, v33, v34, v35, v36, v37, v38, v39); 8973d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 8983d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 8993d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 9003d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 9013d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 9023d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 9033d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 9043d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27, typename T28, typename T29, typename T30, 9053d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T31, typename T32, typename T33, typename T34, typename T35, 9063d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T36, typename T37, typename T38, typename T39, typename T40> 9073d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 9083d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 9093d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Values(T1 v1, 9103d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, 9113d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, 9123d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, 9133d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, 9143d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) { 9153d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 9163d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 9173d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 9183d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T40>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, 9193d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, 9203d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40); 9213d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 9223d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 9233d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 9243d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 9253d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 9263d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 9273d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 9283d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27, typename T28, typename T29, typename T30, 9293d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T31, typename T32, typename T33, typename T34, typename T35, 9303d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T36, typename T37, typename T38, typename T39, typename T40, 9313d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T41> 9323d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 9333d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 9343d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, 9353d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T41> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 9363d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 9373d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 9383d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 9393d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) { 9403d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 9413d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 9423d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 9433d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T40, T41>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, 9443d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, 9453d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41); 9463d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 9473d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 9483d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 9493d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 9503d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 9513d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 9523d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 9533d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27, typename T28, typename T29, typename T30, 9543d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T31, typename T32, typename T33, typename T34, typename T35, 9553d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T36, typename T37, typename T38, typename T39, typename T40, 9563d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T41, typename T42> 9573d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 9583d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 9593d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, 9603d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T42> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 9613d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 9623d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 9633d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 9643d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 9653d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T42 v42) { 9663d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 9673d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 9683d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 9693d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T40, T41, T42>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, 9703d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, 9713d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, 9723d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v42); 9733d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 9743d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 9753d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 9763d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 9773d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 9783d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 9793d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 9803d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27, typename T28, typename T29, typename T30, 9813d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T31, typename T32, typename T33, typename T34, typename T35, 9823d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T36, typename T37, typename T38, typename T39, typename T40, 9833d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T41, typename T42, typename T43> 9843d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 9853d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 9863d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, 9873d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T43> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 9883d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 9893d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 9903d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 9913d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 9923d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T42 v42, T43 v43) { 9933d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 9943d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 9953d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 9963d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T40, T41, T42, T43>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, 9973d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, 9983d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, 9993d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v41, v42, v43); 10003d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 10013d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 10023d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 10033d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 10043d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 10053d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 10063d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 10073d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27, typename T28, typename T29, typename T30, 10083d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T31, typename T32, typename T33, typename T34, typename T35, 10093d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T36, typename T37, typename T38, typename T39, typename T40, 10103d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T41, typename T42, typename T43, typename T44> 10113d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 10123d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 10133d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 10143d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T44> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 10153d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 10163d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 10173d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 10183d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 10193d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T42 v42, T43 v43, T44 v44) { 10203d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 10213d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 10223d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 10233d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T40, T41, T42, T43, T44>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, 10243d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, 10253d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, 10263d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v40, v41, v42, v43, v44); 10273d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 10283d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 10293d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 10303d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 10313d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 10323d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 10333d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 10343d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27, typename T28, typename T29, typename T30, 10353d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T31, typename T32, typename T33, typename T34, typename T35, 10363d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T36, typename T37, typename T38, typename T39, typename T40, 10373d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T41, typename T42, typename T43, typename T44, typename T45> 10383d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 10393d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 10403d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 10413d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T44, T45> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, 10423d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, 10433d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, 10443d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, 10453d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, 10463d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) { 10473d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 10483d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 10493d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 10503d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T40, T41, T42, T43, T44, T45>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, 10513d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, 10523d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, 10533d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v39, v40, v41, v42, v43, v44, v45); 10543d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 10553d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 10563d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 10573d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 10583d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 10593d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 10603d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 10613d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27, typename T28, typename T29, typename T30, 10623d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T31, typename T32, typename T33, typename T34, typename T35, 10633d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T36, typename T37, typename T38, typename T39, typename T40, 10643d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T41, typename T42, typename T43, typename T44, typename T45, 10653d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T46> 10663d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 10673d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 10683d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 10693d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T44, T45, T46> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 10703d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 10713d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 10723d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 10733d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, 10743d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) { 10753d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 10763d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 10773d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 10783d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T40, T41, T42, T43, T44, T45, T46>(v1, v2, v3, v4, v5, v6, v7, v8, v9, 10793d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 10803d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, 10813d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v38, v39, v40, v41, v42, v43, v44, v45, v46); 10823d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 10833d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 10843d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 10853d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 10863d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 10873d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 10883d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 10893d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27, typename T28, typename T29, typename T30, 10903d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T31, typename T32, typename T33, typename T34, typename T35, 10913d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T36, typename T37, typename T38, typename T39, typename T40, 10923d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T41, typename T42, typename T43, typename T44, typename T45, 10933d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T46, typename T47> 10943d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 10953d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 10963d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 10973d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T44, T45, T46, T47> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 10983d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 10993d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 11003d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 11013d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, 11023d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) { 11033d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 11043d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 11053d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 11063d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T40, T41, T42, T43, T44, T45, T46, T47>(v1, v2, v3, v4, v5, v6, v7, v8, 11073d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 11083d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, 11093d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v38, v39, v40, v41, v42, v43, v44, v45, v46, v47); 11103d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 11113d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 11123d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 11133d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 11143d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 11153d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 11163d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 11173d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27, typename T28, typename T29, typename T30, 11183d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T31, typename T32, typename T33, typename T34, typename T35, 11193d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T36, typename T37, typename T38, typename T39, typename T40, 11203d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T41, typename T42, typename T43, typename T44, typename T45, 11213d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T46, typename T47, typename T48> 11223d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 11233d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 11243d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 11253d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T44, T45, T46, T47, T48> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, 11263d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 11273d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 11283d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 11293d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, 11303d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, 11313d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T48 v48) { 11323d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 11333d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 11343d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 11353d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T40, T41, T42, T43, T44, T45, T46, T47, T48>(v1, v2, v3, v4, v5, v6, v7, 11363d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, 11373d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, 11383d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48); 11393d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 11403d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 11413d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 11423d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 11433d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 11443d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 11453d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 11463d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27, typename T28, typename T29, typename T30, 11473d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T31, typename T32, typename T33, typename T34, typename T35, 11483d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T36, typename T37, typename T38, typename T39, typename T40, 11493d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T41, typename T42, typename T43, typename T44, typename T45, 11503d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T46, typename T47, typename T48, typename T49> 11513d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 11523d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 11533d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 11543d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T44, T45, T46, T47, T48, T49> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, 11553d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, 11563d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, 11573d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, 11583d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, 11593d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, 11603d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T47 v47, T48 v48, T49 v49) { 11613d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 11623d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 11633d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 11643d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T40, T41, T42, T43, T44, T45, T46, T47, T48, T49>(v1, v2, v3, v4, v5, v6, 11653d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, 11663d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, 11673d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49); 11683d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 11693d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 11703d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 11713d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T6, typename T7, typename T8, typename T9, typename T10, 11723d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T11, typename T12, typename T13, typename T14, typename T15, 11733d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T16, typename T17, typename T18, typename T19, typename T20, 11743d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T21, typename T22, typename T23, typename T24, typename T25, 11753d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T26, typename T27, typename T28, typename T29, typename T30, 11763d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T31, typename T32, typename T33, typename T34, typename T35, 11773d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T36, typename T37, typename T38, typename T39, typename T40, 11783d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T41, typename T42, typename T43, typename T44, typename T45, 11793d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename T46, typename T47, typename T48, typename T49, typename T50> 11803d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 11813d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 11823d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 11833d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T44, T45, T46, T47, T48, T49, T50> Values(T1 v1, T2 v2, T3 v3, T4 v4, 11843d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 11853d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, 11863d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, 11873d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, 11883d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, 11893d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) { 11903d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 11913d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 11923d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 11933d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>(v1, v2, v3, v4, 11943d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 11953d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, 11963d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, 11973d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev v48, v49, v50); 11983d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 11993d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 12003d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Bool() allows generating tests with parameters in a set of (false, true). 12013d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 12023d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Synopsis: 12033d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Bool() 12043d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// - returns a generator producing sequences with elements {false, true}. 12053d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 12063d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// It is useful when testing code that depends on Boolean flags. Combinations 12073d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// of multiple flags can be tested when several Bool()'s are combined using 12083d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Combine() function. 12093d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 12103d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// In the following example all tests in the test case FlagDependentTest 12113d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// will be instantiated twice with parameters false and true. 12123d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 12133d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// class FlagDependentTest : public testing::TestWithParam<bool> { 12143d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// virtual void SetUp() { 12153d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// external_flag = GetParam(); 12163d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// } 12173d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// } 12183d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// INSTANTIATE_TEST_CASE_P(BoolSequence, FlagDependentTest, Bool()); 12193d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 12203d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinline internal::ParamGenerator<bool> Bool() { 12213d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return Values(false, true); 12223d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 12233d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 1224ffeb11d14a890b902dbb26ff2296cda7bf2d31dfzhanyong.wan# if GTEST_HAS_COMBINE 12253d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Combine() allows the user to combine two or more sequences to produce 12263d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// values of a Cartesian product of those sequences' elements. 12273d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 12283d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Synopsis: 12293d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Combine(gen1, gen2, ..., genN) 12303d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// - returns a generator producing sequences with elements coming from 12313d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// the Cartesian product of elements from the sequences generated by 12323d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// gen1, gen2, ..., genN. The sequence elements will have a type of 12333d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types 12343d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// of elements from sequences produces by gen1, gen2, ..., genN. 12353d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 12363d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Combine can have up to 10 arguments. This number is currently limited 12373d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// by the maximum number of elements in the tuple implementation used by Google 12383d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Test. 12393d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 12403d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Example: 12413d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 12423d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// This will instantiate tests in test case AnimalTest each one with 12433d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// the parameter values tuple("cat", BLACK), tuple("cat", WHITE), 12443d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// tuple("dog", BLACK), and tuple("dog", WHITE): 12453d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 12463d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// enum Color { BLACK, GRAY, WHITE }; 12473d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// class AnimalTest 12483d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// : public testing::TestWithParam<tuple<const char*, Color> > {...}; 12493d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 12503d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// TEST_P(AnimalTest, AnimalLooksNice) {...} 12513d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 12523d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest, 12533d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Combine(Values("cat", "dog"), 12543d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Values(BLACK, WHITE))); 12553d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 12563d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// This will instantiate tests in FlagDependentTest with all variations of two 12573d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Boolean flags: 12583d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 12593d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// class FlagDependentTest 1260f0b86fc3b0f625e1db84f3632cb37bd9eae6ae19jgm// : public testing::TestWithParam<tuple<bool, bool> > { 12613d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// virtual void SetUp() { 12623d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// // Assigns external_flag_1 and external_flag_2 values from the tuple. 12633d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// tie(external_flag_1, external_flag_2) = GetParam(); 12643d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// } 12653d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// }; 12663d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 12673d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// TEST_P(FlagDependentTest, TestFeature1) { 12683d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// // Test your code using external_flag_1 and external_flag_2 here. 12693d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// } 12703d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest, 12713d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// Combine(Bool(), Bool())); 12723d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev// 12733d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename Generator1, typename Generator2> 12743d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::CartesianProductHolder2<Generator1, Generator2> Combine( 12753d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev const Generator1& g1, const Generator2& g2) { 12763d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::CartesianProductHolder2<Generator1, Generator2>( 12773d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev g1, g2); 12783d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 12793d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 12803d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename Generator1, typename Generator2, typename Generator3> 12813d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::CartesianProductHolder3<Generator1, Generator2, Generator3> Combine( 12823d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev const Generator1& g1, const Generator2& g2, const Generator3& g3) { 12833d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::CartesianProductHolder3<Generator1, Generator2, Generator3>( 12843d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev g1, g2, g3); 12853d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 12863d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 12873d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename Generator1, typename Generator2, typename Generator3, 12883d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename Generator4> 12893d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::CartesianProductHolder4<Generator1, Generator2, Generator3, 12903d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev Generator4> Combine( 12913d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev const Generator1& g1, const Generator2& g2, const Generator3& g3, 12923d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev const Generator4& g4) { 12933d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::CartesianProductHolder4<Generator1, Generator2, Generator3, 12943d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev Generator4>( 12953d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev g1, g2, g3, g4); 12963d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 12973d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 12983d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename Generator1, typename Generator2, typename Generator3, 12993d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename Generator4, typename Generator5> 13003d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::CartesianProductHolder5<Generator1, Generator2, Generator3, 13013d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev Generator4, Generator5> Combine( 13023d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev const Generator1& g1, const Generator2& g2, const Generator3& g3, 13033d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev const Generator4& g4, const Generator5& g5) { 13043d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::CartesianProductHolder5<Generator1, Generator2, Generator3, 13053d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev Generator4, Generator5>( 13063d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev g1, g2, g3, g4, g5); 13073d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 13083d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 13093d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename Generator1, typename Generator2, typename Generator3, 13103d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename Generator4, typename Generator5, typename Generator6> 13113d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::CartesianProductHolder6<Generator1, Generator2, Generator3, 13123d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev Generator4, Generator5, Generator6> Combine( 13133d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev const Generator1& g1, const Generator2& g2, const Generator3& g3, 13143d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev const Generator4& g4, const Generator5& g5, const Generator6& g6) { 13153d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::CartesianProductHolder6<Generator1, Generator2, Generator3, 13163d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev Generator4, Generator5, Generator6>( 13173d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev g1, g2, g3, g4, g5, g6); 13183d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 13193d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 13203d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename Generator1, typename Generator2, typename Generator3, 13213d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename Generator4, typename Generator5, typename Generator6, 13223d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename Generator7> 13233d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::CartesianProductHolder7<Generator1, Generator2, Generator3, 13243d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev Generator4, Generator5, Generator6, Generator7> Combine( 13253d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev const Generator1& g1, const Generator2& g2, const Generator3& g3, 13263d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev const Generator4& g4, const Generator5& g5, const Generator6& g6, 13273d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev const Generator7& g7) { 13283d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::CartesianProductHolder7<Generator1, Generator2, Generator3, 13293d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev Generator4, Generator5, Generator6, Generator7>( 13303d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev g1, g2, g3, g4, g5, g6, g7); 13313d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 13323d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 13333d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename Generator1, typename Generator2, typename Generator3, 13343d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename Generator4, typename Generator5, typename Generator6, 13353d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename Generator7, typename Generator8> 13363d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::CartesianProductHolder8<Generator1, Generator2, Generator3, 13373d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev Generator4, Generator5, Generator6, Generator7, Generator8> Combine( 13383d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev const Generator1& g1, const Generator2& g2, const Generator3& g3, 13393d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev const Generator4& g4, const Generator5& g5, const Generator6& g6, 13403d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev const Generator7& g7, const Generator8& g8) { 13413d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::CartesianProductHolder8<Generator1, Generator2, Generator3, 13423d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev Generator4, Generator5, Generator6, Generator7, Generator8>( 13433d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev g1, g2, g3, g4, g5, g6, g7, g8); 13443d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 13453d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 13463d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename Generator1, typename Generator2, typename Generator3, 13473d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename Generator4, typename Generator5, typename Generator6, 13483d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename Generator7, typename Generator8, typename Generator9> 13493d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::CartesianProductHolder9<Generator1, Generator2, Generator3, 13503d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev Generator4, Generator5, Generator6, Generator7, Generator8, 13513d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev Generator9> Combine( 13523d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev const Generator1& g1, const Generator2& g2, const Generator3& g3, 13533d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev const Generator4& g4, const Generator5& g5, const Generator6& g6, 13543d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev const Generator7& g7, const Generator8& g8, const Generator9& g9) { 13553d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::CartesianProductHolder9<Generator1, Generator2, Generator3, 13563d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev Generator4, Generator5, Generator6, Generator7, Generator8, Generator9>( 13573d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev g1, g2, g3, g4, g5, g6, g7, g8, g9); 13583d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 13593d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 13603d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevtemplate <typename Generator1, typename Generator2, typename Generator3, 13613d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename Generator4, typename Generator5, typename Generator6, 13623d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename Generator7, typename Generator8, typename Generator9, 13633d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev typename Generator10> 13643d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosevinternal::CartesianProductHolder10<Generator1, Generator2, Generator3, 13653d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, 13663d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev Generator10> Combine( 13673d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev const Generator1& g1, const Generator2& g2, const Generator3& g3, 13683d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev const Generator4& g4, const Generator5& g5, const Generator6& g6, 13693d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev const Generator7& g7, const Generator8& g8, const Generator9& g9, 13703d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev const Generator10& g10) { 13713d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return internal::CartesianProductHolder10<Generator1, Generator2, Generator3, 13723d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, 13733d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev Generator10>( 13743d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev g1, g2, g3, g4, g5, g6, g7, g8, g9, g10); 13753d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} 1376ffeb11d14a890b902dbb26ff2296cda7bf2d31dfzhanyong.wan# endif // GTEST_HAS_COMBINE 13773d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 13783d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 13793d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 1380ffeb11d14a890b902dbb26ff2296cda7bf2d31dfzhanyong.wan# define TEST_P(test_case_name, test_name) \ 13813d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ 13823d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev : public test_case_name { \ 13833d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev public: \ 13843d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \ 13853d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev virtual void TestBody(); \ 13863d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev private: \ 13873d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev static int AddToRegistry() { \ 13883d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ 13893d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev GetTestCasePatternHolder<test_case_name>(\ 13904f8dc917ebce062f75defee3d4890bbcd07e277bkosak #test_case_name, \ 13914f8dc917ebce062f75defee3d4890bbcd07e277bkosak ::testing::internal::CodeLocation(\ 13924f8dc917ebce062f75defee3d4890bbcd07e277bkosak __FILE__, __LINE__))->AddTestPattern(\ 13934f8dc917ebce062f75defee3d4890bbcd07e277bkosak #test_case_name, \ 13944f8dc917ebce062f75defee3d4890bbcd07e277bkosak #test_name, \ 13954f8dc917ebce062f75defee3d4890bbcd07e277bkosak new ::testing::internal::TestMetaFactory< \ 13964f8dc917ebce062f75defee3d4890bbcd07e277bkosak GTEST_TEST_CLASS_NAME_(\ 13974f8dc917ebce062f75defee3d4890bbcd07e277bkosak test_case_name, test_name)>()); \ 13983d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev return 0; \ 13993d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev } \ 1400683886c5676dca2e8198bbf5f735f79387d10fc6kosak static int gtest_registering_dummy_ GTEST_ATTRIBUTE_UNUSED_; \ 14013d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev GTEST_DISALLOW_COPY_AND_ASSIGN_(\ 14023d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \ 14033d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev }; \ 14043d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev int GTEST_TEST_CLASS_NAME_(test_case_name, \ 14053d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev test_name)::gtest_registering_dummy_ = \ 14063d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \ 14073d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() 14083d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 1409794ef030ebad671b699abdfd8e0474f93045be91kosak// The optional last argument to INSTANTIATE_TEST_CASE_P allows the user 1410794ef030ebad671b699abdfd8e0474f93045be91kosak// to specify a function or functor that generates custom test name suffixes 1411794ef030ebad671b699abdfd8e0474f93045be91kosak// based on the test parameters. The function should accept one argument of 1412794ef030ebad671b699abdfd8e0474f93045be91kosak// type testing::TestParamInfo<class ParamType>, and return std::string. 1413794ef030ebad671b699abdfd8e0474f93045be91kosak// 1414794ef030ebad671b699abdfd8e0474f93045be91kosak// testing::PrintToStringParamName is a builtin test suffix generator that 1415794ef030ebad671b699abdfd8e0474f93045be91kosak// returns the value of testing::PrintToString(GetParam()). It does not work 1416794ef030ebad671b699abdfd8e0474f93045be91kosak// for std::string or C strings. 1417794ef030ebad671b699abdfd8e0474f93045be91kosak// 1418794ef030ebad671b699abdfd8e0474f93045be91kosak// Note: test names must be non-empty, unique, and may only contain ASCII 1419794ef030ebad671b699abdfd8e0474f93045be91kosak// alphanumeric characters or underscore. 1420794ef030ebad671b699abdfd8e0474f93045be91kosak 1421794ef030ebad671b699abdfd8e0474f93045be91kosak# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator, ...) \ 14223d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev ::testing::internal::ParamGenerator<test_case_name::ParamType> \ 14233d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \ 1424794ef030ebad671b699abdfd8e0474f93045be91kosak ::std::string gtest_##prefix##test_case_name##_EvalGenerateName_( \ 1425794ef030ebad671b699abdfd8e0474f93045be91kosak const ::testing::TestParamInfo<test_case_name::ParamType>& info) { \ 1426794ef030ebad671b699abdfd8e0474f93045be91kosak return ::testing::internal::GetParamNameGen<test_case_name::ParamType> \ 1427794ef030ebad671b699abdfd8e0474f93045be91kosak (__VA_ARGS__)(info); \ 1428794ef030ebad671b699abdfd8e0474f93045be91kosak } \ 1429d5ac8cd9ebdb63f7790d2e6c9a7e2aeeed3c2690kosak int gtest_##prefix##test_case_name##_dummy_ GTEST_ATTRIBUTE_UNUSED_ = \ 14303d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ 14313d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev GetTestCasePatternHolder<test_case_name>(\ 14324f8dc917ebce062f75defee3d4890bbcd07e277bkosak #test_case_name, \ 14334f8dc917ebce062f75defee3d4890bbcd07e277bkosak ::testing::internal::CodeLocation(\ 14344f8dc917ebce062f75defee3d4890bbcd07e277bkosak __FILE__, __LINE__))->AddTestCaseInstantiation(\ 14354f8dc917ebce062f75defee3d4890bbcd07e277bkosak #prefix, \ 14364f8dc917ebce062f75defee3d4890bbcd07e277bkosak >est_##prefix##test_case_name##_EvalGenerator_, \ 1437794ef030ebad671b699abdfd8e0474f93045be91kosak >est_##prefix##test_case_name##_EvalGenerateName_, \ 14384f8dc917ebce062f75defee3d4890bbcd07e277bkosak __FILE__, __LINE__) 14393d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 14403d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev} // namespace testing 14413d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 14423d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev#endif // GTEST_HAS_PARAM_TEST 14433d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev 14443d7042176307f0d7700a3640f3b3bcc8790b8fcdvladlosev#endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ 1445