1aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// This file was GENERATED by command: 2aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// pump.py gtest-param-test.h.pump 3aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// DO NOT EDIT BY HAND!!! 4aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 5aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Copyright 2008, Google Inc. 6aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// All rights reserved. 7aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 8aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Redistribution and use in source and binary forms, with or without 9aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// modification, are permitted provided that the following conditions are 10aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// met: 11aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 12aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// * Redistributions of source code must retain the above copyright 13aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// notice, this list of conditions and the following disclaimer. 14aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// * Redistributions in binary form must reproduce the above 15aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// copyright notice, this list of conditions and the following disclaimer 16aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// in the documentation and/or other materials provided with the 17aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// distribution. 18aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// * Neither the name of Google Inc. nor the names of its 19aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// contributors may be used to endorse or promote products derived from 20aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// this software without specific prior written permission. 21aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 22aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 23aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 24aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 25aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 26aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 27aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 28aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 29aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 30aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 31aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 32aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 34aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Authors: vladl@google.com (Vlad Losev) 35aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 36aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Macros and functions for implementing parameterized tests 37aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// in Google C++ Testing Framework (Google Test) 38aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 39aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// This file is generated by a SCRIPT. DO NOT EDIT BY HAND! 40aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 41aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ 42aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ 43aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 44aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 45aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Value-parameterized tests allow you to test your code with different 46aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// parameters without writing multiple copies of the same test. 47aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 48aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Here is how you use value-parameterized tests: 49aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 50aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter#if 0 51aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 52aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// To write value-parameterized tests, first you should define a fixture 53aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// class. It is usually derived from testing::TestWithParam<T> (see below for 54aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// another inheritance scheme that's sometimes useful in more complicated 55aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// class hierarchies), where the type of your parameter values. 56aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// TestWithParam<T> is itself derived from testing::Test. T can be any 57aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// copyable type. If it's a raw pointer, you are responsible for managing the 58aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// lifespan of the pointed values. 59aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 60aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass FooTest : public ::testing::TestWithParam<const char*> { 61aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // You can implement all the usual class fixture members here. 62aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 63aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 64aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Then, use the TEST_P macro to define as many parameterized tests 65aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// for this fixture as you want. The _P suffix is for "parameterized" 66aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// or "pattern", whichever you prefer to think. 67aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 68aa46da279e2426caf1e103eb079dfec8124c5feeCourtney GoeltzenleuchterTEST_P(FooTest, DoesBlah) { 69aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // Inside a test, access the test parameter with the GetParam() method 70aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // of the TestWithParam<T> class: 71aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter EXPECT_TRUE(foo.Blah(GetParam())); 72aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ... 73aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 74aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 75aa46da279e2426caf1e103eb079dfec8124c5feeCourtney GoeltzenleuchterTEST_P(FooTest, HasBlahBlah) { 76aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ... 77aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 78aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 79aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Finally, you can use INSTANTIATE_TEST_CASE_P to instantiate the test 80aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// case with any set of parameters you want. Google Test defines a number 81aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// of functions for generating test parameters. They return what we call 82aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// (surprise!) parameter generators. Here is a summary of them, which 83aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// are all in the testing namespace: 84aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 85aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 86aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Range(begin, end [, step]) - Yields values {begin, begin+step, 87aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// begin+step+step, ...}. The values do not 88aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// include end. step defaults to 1. 89aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Values(v1, v2, ..., vN) - Yields values {v1, v2, ..., vN}. 90aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// ValuesIn(container) - Yields values from a C-style array, an STL 91aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// ValuesIn(begin,end) container, or an iterator range [begin, end). 92aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Bool() - Yields sequence {false, true}. 93aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Combine(g1, g2, ..., gN) - Yields all combinations (the Cartesian product 94aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// for the math savvy) of the values generated 95aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// by the N generators. 96aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 97aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// For more details, see comments at the definitions of these functions below 98aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// in this file. 99aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 100aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// The following statement will instantiate tests from the FooTest test case 101aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// each with parameter values "meeny", "miny", and "moe". 102aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 103aa46da279e2426caf1e103eb079dfec8124c5feeCourtney GoeltzenleuchterINSTANTIATE_TEST_CASE_P(InstantiationName, 104aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter FooTest, 105aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Values("meeny", "miny", "moe")); 106aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 107aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// To distinguish different instances of the pattern, (yes, you 108aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// can instantiate it more then once) the first argument to the 109aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// INSTANTIATE_TEST_CASE_P macro is a prefix that will be added to the 110aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// actual test case name. Remember to pick unique prefixes for different 111aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// instantiations. The tests from the instantiation above will have 112aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// these names: 113aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 114aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// * InstantiationName/FooTest.DoesBlah/0 for "meeny" 115aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// * InstantiationName/FooTest.DoesBlah/1 for "miny" 116aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// * InstantiationName/FooTest.DoesBlah/2 for "moe" 117aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// * InstantiationName/FooTest.HasBlahBlah/0 for "meeny" 118aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// * InstantiationName/FooTest.HasBlahBlah/1 for "miny" 119aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// * InstantiationName/FooTest.HasBlahBlah/2 for "moe" 120aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 121aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// You can use these names in --gtest_filter. 122aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 123aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// This statement will instantiate all tests from FooTest again, each 124aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// with parameter values "cat" and "dog": 125aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 126aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterconst char* pets[] = {"cat", "dog"}; 127aa46da279e2426caf1e103eb079dfec8124c5feeCourtney GoeltzenleuchterINSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets)); 128aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 129aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// The tests from the instantiation above will have these names: 130aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 131aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat" 132aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog" 133aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat" 134aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog" 135aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 136aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Please note that INSTANTIATE_TEST_CASE_P will instantiate all tests 137aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// in the given test case, whether their definitions come before or 138aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// AFTER the INSTANTIATE_TEST_CASE_P statement. 139aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 140aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Please also note that generator expressions (including parameters to the 141aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// generators) are evaluated in InitGoogleTest(), after main() has started. 142aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// This allows the user on one hand, to adjust generator parameters in order 143aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// to dynamically determine a set of tests to run and on the other hand, 144aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// give the user a chance to inspect the generated tests with Google Test 145aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// reflection API before RUN_ALL_TESTS() is executed. 146aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 147aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc 148aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// for more examples. 149aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 150aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// In the future, we plan to publish the API for defining new parameter 151aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// generators. But for now this interface remains part of the internal 152aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// implementation and is subject to change. 153aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 154aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 155aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// A parameterized test fixture must be derived from testing::Test and from 156aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// testing::WithParamInterface<T>, where T is the type of the parameter 157aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// values. Inheriting from TestWithParam<T> satisfies that requirement because 158aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// TestWithParam<T> inherits from both Test and WithParamInterface. In more 159aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// complicated hierarchies, however, it is occasionally useful to inherit 160aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// separately from Test and WithParamInterface. For example: 161aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 162aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass BaseTest : public ::testing::Test { 163aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // You can inherit all the usual members for a non-parameterized test 164aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // fixture here. 165aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 166aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 167aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterclass DerivedTest : public BaseTest, public ::testing::WithParamInterface<int> { 168aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // The usual test fixture members go here too. 169aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter}; 170aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 171aa46da279e2426caf1e103eb079dfec8124c5feeCourtney GoeltzenleuchterTEST_F(BaseTest, HasFoo) { 172aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // This is an ordinary non-parameterized test. 173aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 174aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 175aa46da279e2426caf1e103eb079dfec8124c5feeCourtney GoeltzenleuchterTEST_P(DerivedTest, DoesBlah) { 176aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter // GetParam works just the same here as if you inherit from TestWithParam. 177aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter EXPECT_TRUE(foo.Blah(GetParam())); 178aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 179aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 180aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter#endif // 0 181aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 182aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter#include "gtest/internal/gtest-port.h" 183aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 184aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter#if !GTEST_OS_SYMBIAN 185aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter# include <utility> 186aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter#endif 187aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 188aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// scripts/fuse_gtest.py depends on gtest's own header being #included 189aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// *unconditionally*. Therefore these #includes cannot be moved 190aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// inside #if GTEST_HAS_PARAM_TEST. 191aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter#include "gtest/internal/gtest-internal.h" 192aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter#include "gtest/internal/gtest-param-util.h" 193aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter#include "gtest/internal/gtest-param-util-generated.h" 194aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 195aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter#if GTEST_HAS_PARAM_TEST 196aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 197aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchternamespace testing { 198aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 199aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Functions producing parameter generators. 200aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 201aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Google Test uses these generators to produce parameters for value- 202aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// parameterized tests. When a parameterized test case is instantiated 203aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// with a particular generator, Google Test creates and runs tests 204aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// for each element in the sequence produced by the generator. 205aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 206aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// In the following sample, tests from test case FooTest are instantiated 207aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// each three times with parameter values 3, 5, and 8: 208aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 209aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// class FooTest : public TestWithParam<int> { ... }; 210aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 211aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// TEST_P(FooTest, TestThis) { 212aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// } 213aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// TEST_P(FooTest, TestThat) { 214aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// } 215aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// INSTANTIATE_TEST_CASE_P(TestSequence, FooTest, Values(3, 5, 8)); 216aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 217aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 218aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Range() returns generators providing sequences of values in a range. 219aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 220aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Synopsis: 221aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Range(start, end) 222aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// - returns a generator producing a sequence of values {start, start+1, 223aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// start+2, ..., }. 224aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Range(start, end, step) 225aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// - returns a generator producing a sequence of values {start, start+step, 226aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// start+step+step, ..., }. 227aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Notes: 228aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// * The generated sequences never include end. For example, Range(1, 5) 229aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2) 230aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// returns a generator producing {1, 3, 5, 7}. 231aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// * start and end must have the same type. That type may be any integral or 232aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// floating-point type or a user defined type satisfying these conditions: 233aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// * It must be assignable (have operator=() defined). 234aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// * It must have operator+() (operator+(int-compatible type) for 235aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// two-operand version). 236aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// * It must have operator<() defined. 237aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Elements in the resulting sequences will also have that type. 238aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// * Condition start < end must be satisfied in order for resulting sequences 239aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// to contain any elements. 240aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 241aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T, typename IncrementT> 242aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ParamGenerator<T> Range(T start, T end, IncrementT step) { 243aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ParamGenerator<T>( 244aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter new internal::RangeGenerator<T, IncrementT>(start, end, step)); 245aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 246aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 247aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T> 248aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ParamGenerator<T> Range(T start, T end) { 249aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return Range(start, end, 1); 250aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 251aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 252aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// ValuesIn() function allows generation of tests with parameters coming from 253aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// a container. 254aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 255aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Synopsis: 256aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// ValuesIn(const T (&array)[N]) 257aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// - returns a generator producing sequences with elements from 258aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// a C-style array. 259aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// ValuesIn(const Container& container) 260aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// - returns a generator producing sequences with elements from 261aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// an STL-style container. 262aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// ValuesIn(Iterator begin, Iterator end) 263aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// - returns a generator producing sequences with elements from 264aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// a range [begin, end) defined by a pair of STL-style iterators. These 265aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// iterators can also be plain C pointers. 266aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 267aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Please note that ValuesIn copies the values from the containers 268aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// passed in and keeps them to generate tests in RUN_ALL_TESTS(). 269aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 270aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Examples: 271aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 272aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// This instantiates tests from test case StringTest 273aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// each with C-string values of "foo", "bar", and "baz": 274aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 275aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// const char* strings[] = {"foo", "bar", "baz"}; 276aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// INSTANTIATE_TEST_CASE_P(StringSequence, SrtingTest, ValuesIn(strings)); 277aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 278aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// This instantiates tests from test case StlStringTest 279aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// each with STL strings with values "a" and "b": 280aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 281aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// ::std::vector< ::std::string> GetParameterStrings() { 282aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// ::std::vector< ::std::string> v; 283aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// v.push_back("a"); 284aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// v.push_back("b"); 285aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// return v; 286aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// } 287aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 288aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// INSTANTIATE_TEST_CASE_P(CharSequence, 289aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// StlStringTest, 290aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// ValuesIn(GetParameterStrings())); 291aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 292aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 293aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// This will also instantiate tests from CharTest 294aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// each with parameter values 'a' and 'b': 295aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 296aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// ::std::list<char> GetParameterChars() { 297aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// ::std::list<char> list; 298aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// list.push_back('a'); 299aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// list.push_back('b'); 300aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// return list; 301aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// } 302aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// ::std::list<char> l = GetParameterChars(); 303aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// INSTANTIATE_TEST_CASE_P(CharSequence2, 304aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// CharTest, 305aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// ValuesIn(l.begin(), l.end())); 306aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 307aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename ForwardIterator> 308aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ParamGenerator< 309aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type> 310aa46da279e2426caf1e103eb079dfec8124c5feeCourtney GoeltzenleuchterValuesIn(ForwardIterator begin, ForwardIterator end) { 311aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typedef typename ::testing::internal::IteratorTraits<ForwardIterator> 312aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ::value_type ParamType; 313aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ParamGenerator<ParamType>( 314aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end)); 315aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 316aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 317aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T, size_t N> 318aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ParamGenerator<T> ValuesIn(const T (&array)[N]) { 319aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(array, array + N); 320aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 321aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 322aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <class Container> 323aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ParamGenerator<typename Container::value_type> ValuesIn( 324aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Container& container) { 325aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return ValuesIn(container.begin(), container.end()); 326aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 327aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 328aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Values() allows generating tests from explicitly specified list of 329aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// parameters. 330aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 331aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Synopsis: 332aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Values(T v1, T v2, ..., T vN) 333aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// - returns a generator producing sequences with elements v1, v2, ..., vN. 334aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 335aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// For example, this instantiates tests from test case BarTest each 336aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// with values "one", "two", and "three": 337aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 338aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three")); 339aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 340aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// This instantiates tests from test case BazTest each with values 1, 2, 3.5. 341aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// The exact type of values will depend on the type of parameter in BazTest. 342aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 343aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5)); 344aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 345aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Currently, Values() supports from 1 to 50 parameters. 346aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 347aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1> 348aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray1<T1> Values(T1 v1) { 349aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray1<T1>(v1); 350aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 351aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 352aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2> 353aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray2<T1, T2> Values(T1 v1, T2 v2) { 354aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray2<T1, T2>(v1, v2); 355aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 356aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 357aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3> 358aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray3<T1, T2, T3> Values(T1 v1, T2 v2, T3 v3) { 359aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray3<T1, T2, T3>(v1, v2, v3); 360aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 361aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 362aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4> 363aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray4<T1, T2, T3, T4> Values(T1 v1, T2 v2, T3 v3, T4 v4) { 364aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray4<T1, T2, T3, T4>(v1, v2, v3, v4); 365aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 366aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 367aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5> 368aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray5<T1, T2, T3, T4, T5> Values(T1 v1, T2 v2, T3 v3, T4 v4, 369aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T5 v5) { 370aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray5<T1, T2, T3, T4, T5>(v1, v2, v3, v4, v5); 371aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 372aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 373aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 374aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6> 375aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(T1 v1, T2 v2, T3 v3, 376aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T4 v4, T5 v5, T6 v6) { 377aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(v1, v2, v3, v4, v5, v6); 378aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 379aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 380aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 381aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7> 382aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(T1 v1, T2 v2, T3 v3, 383aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T4 v4, T5 v5, T6 v6, T7 v7) { 384aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5, 385aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v6, v7); 386aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 387aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 388aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 389aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8> 390aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(T1 v1, T2 v2, 391aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) { 392aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4, 393aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v5, v6, v7, v8); 394aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 395aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 396aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 397aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9> 398aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2, 399aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) { 400aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3, 401aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v4, v5, v6, v7, v8, v9); 402aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 403aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 404aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 405aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10> 406aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1, 407aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) { 408aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1, 409aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v2, v3, v4, v5, v6, v7, v8, v9, v10); 410aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 411aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 412aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 413aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 414aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11> 415aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, 416aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T11> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 417aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11) { 418aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, 419aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T11>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11); 420aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 421aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 422aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 423aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 424aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12> 425aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 426aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 427aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12) { 428aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 429aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12); 430aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 431aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 432aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 433aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 434aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13> 435aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, 436aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T13> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 437aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13) { 438aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 439aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13); 440aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 441aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 442aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 443aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 444aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14> 445aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 446aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 447aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) { 448aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 449aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, 450aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v14); 451aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 452aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 453aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 454aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 455aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15> 456aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 457aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, 458aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) { 459aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 460aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, 461aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v13, v14, v15); 462aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 463aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 464aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 465aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 466aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 467aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16> 468aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 469aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 470aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 471aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T16 v16) { 472aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 473aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, 474aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v12, v13, v14, v15, v16); 475aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 476aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 477aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 478aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 479aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 480aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17> 481aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 482aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 483aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 484aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T16 v16, T17 v17) { 485aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 486aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, 487aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v11, v12, v13, v14, v15, v16, v17); 488aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 489aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 490aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 491aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 492aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 493aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18> 494aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 495aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, 496aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 497aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T16 v16, T17 v17, T18 v18) { 498aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 499aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18>(v1, v2, v3, v4, v5, v6, v7, v8, v9, 500aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v10, v11, v12, v13, v14, v15, v16, v17, v18); 501aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 502aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 503aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 504aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 505aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 506aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19> 507aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 508aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, 509aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, 510aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) { 511aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 512aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19>(v1, v2, v3, v4, v5, v6, v7, v8, 513aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19); 514aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 515aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 516aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 517aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 518aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 519aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20> 520aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 521aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20> Values(T1 v1, T2 v2, T3 v3, T4 v4, 522aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 523aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) { 524aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 525aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20>(v1, v2, v3, v4, v5, v6, v7, 526aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20); 527aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 528aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 529aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 530aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 531aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 532aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 533aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21> 534aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 535aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21> Values(T1 v1, T2 v2, T3 v3, T4 v4, 536aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 537aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) { 538aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 539aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(v1, v2, v3, v4, v5, v6, 540aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21); 541aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 542aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 543aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 544aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 545aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 546aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 547aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22> 548aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 549aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22> Values(T1 v1, T2 v2, T3 v3, 550aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 551aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 552aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T21 v21, T22 v22) { 553aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 554aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(v1, v2, v3, v4, 555aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 556aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v20, v21, v22); 557aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 558aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 559aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 560aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 561aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 562aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 563aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23> 564aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 565aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> Values(T1 v1, T2 v2, 566aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 567aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 568aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T21 v21, T22 v22, T23 v23) { 569aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 570aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(v1, v2, v3, 571aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 572aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v20, v21, v22, v23); 573aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 574aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 575aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 576aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 577aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 578aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 579aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24> 580aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 581aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Values(T1 v1, T2 v2, 582aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 583aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 584aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T21 v21, T22 v22, T23 v23, T24 v24) { 585aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 586aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(v1, v2, 587aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, 588aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v19, v20, v21, v22, v23, v24); 589aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 590aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 591aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 592aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 593aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 594aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 595aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25> 596aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 597aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Values(T1 v1, 598aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, 599aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, 600aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) { 601aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 602aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>(v1, 603aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, 604aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v18, v19, v20, v21, v22, v23, v24, v25); 605aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 606aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 607aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 608aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 609aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 610aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 611aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 612aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26> 613aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 614aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 615aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 616aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 617aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 618aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26) { 619aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 620aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 621aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, 622aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26); 623aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 624aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 625aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 626aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 627aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 628aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 629aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 630aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27> 631aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 632aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, 633aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T27> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 634aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 635aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 636aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27) { 637aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 638aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 639aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, 640aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27); 641aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 642aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 643aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 644aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 645aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 646aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 647aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 648aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28> 649aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 650aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, 651aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T28> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 652aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 653aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 654aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28) { 655aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 656aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 657aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27, T28>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, 658aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, 659aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v28); 660aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 661aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 662aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 663aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 664aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 665aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 666aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 667aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29> 668aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 669aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 670aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 671aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 672aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 673aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29) { 674aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 675aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 676aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27, T28, T29>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, 677aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, 678aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v27, v28, v29); 679aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 680aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 681aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 682aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 683aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 684aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 685aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 686aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30> 687aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 688aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 689aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29, T30> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, 690aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, 691aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, 692aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) { 693aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 694aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 695aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27, T28, T29, T30>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, 696aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, 697aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v26, v27, v28, v29, v30); 698aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 699aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 700aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 701aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 702aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 703aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 704aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 705aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 706aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31> 707aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 708aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 709aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29, T30, T31> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 710aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 711aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 712aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) { 713aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 714aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 715aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27, T28, T29, T30, T31>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, 716aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, 717aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v25, v26, v27, v28, v29, v30, v31); 718aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 719aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 720aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 721aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 722aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 723aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 724aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 725aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 726aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32> 727aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 728aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 729aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29, T30, T31, T32> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 730aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 731aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 732aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 733aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T32 v32) { 734aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 735aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 736aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27, T28, T29, T30, T31, T32>(v1, v2, v3, v4, v5, v6, v7, v8, v9, 737aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 738aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v24, v25, v26, v27, v28, v29, v30, v31, v32); 739aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 740aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 741aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 742aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 743aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 744aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 745aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 746aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 747aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33> 748aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 749aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 750aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29, T30, T31, T32, T33> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, 751aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 752aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 753aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 754aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T32 v32, T33 v33) { 755aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 756aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 757aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27, T28, T29, T30, T31, T32, T33>(v1, v2, v3, v4, v5, v6, v7, v8, 758aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 759aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v24, v25, v26, v27, v28, v29, v30, v31, v32, v33); 760aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 761aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 762aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 763aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 764aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 765aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 766aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 767aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 768aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34> 769aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 770aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 771aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29, T30, T31, T32, T33, T34> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, 772aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, 773aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, 774aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, 775aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T31 v31, T32 v32, T33 v33, T34 v34) { 776aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 777aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 778aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27, T28, T29, T30, T31, T32, T33, T34>(v1, v2, v3, v4, v5, v6, v7, 779aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, 780aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34); 781aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 782aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 783aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 784aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 785aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 786aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 787aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 788aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 789aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35> 790aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 791aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 792aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29, T30, T31, T32, T33, T34, T35> Values(T1 v1, T2 v2, T3 v3, T4 v4, 793aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 794aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, 795aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, 796aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) { 797aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 798aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 799aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27, T28, T29, T30, T31, T32, T33, T34, T35>(v1, v2, v3, v4, v5, v6, 800aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, 801aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35); 802aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 803aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 804aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 805aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 806aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 807aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 808aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 809aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 810aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 811aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36> 812aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 813aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 814aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29, T30, T31, T32, T33, T34, T35, T36> Values(T1 v1, T2 v2, T3 v3, T4 v4, 815aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 816aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, 817aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, 818aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) { 819aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 820aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 821aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36>(v1, v2, v3, v4, 822aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 823aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, 824aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v34, v35, v36); 825aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 826aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 827aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 828aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 829aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 830aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 831aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 832aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 833aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 834aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37> 835aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 836aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 837aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29, T30, T31, T32, T33, T34, T35, T36, T37> Values(T1 v1, T2 v2, T3 v3, 838aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 839aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 840aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, 841aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, 842aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T37 v37) { 843aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 844aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 845aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>(v1, v2, v3, 846aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 847aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, 848aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v34, v35, v36, v37); 849aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 850aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 851aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 852aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 853aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 854aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 855aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 856aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 857aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 858aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38> 859aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 860aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 861aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Values(T1 v1, T2 v2, 862aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 863aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 864aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, 865aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, 866aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T37 v37, T38 v38) { 867aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 868aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 869aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>(v1, v2, 870aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, 871aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, 872aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v33, v34, v35, v36, v37, v38); 873aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 874aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 875aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 876aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 877aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 878aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 879aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 880aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 881aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 882aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39> 883aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 884aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 885aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Values(T1 v1, T2 v2, 886aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 887aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 888aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, 889aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, 890aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T37 v37, T38 v38, T39 v39) { 891aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 892aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 893aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>(v1, 894aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, 895aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, 896aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v32, v33, v34, v35, v36, v37, v38, v39); 897aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 898aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 899aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 900aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 901aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 902aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 903aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 904aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 905aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 906aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39, typename T40> 907aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 908aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 909aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Values(T1 v1, 910aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, 911aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, 912aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, 913aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, 914aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) { 915aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 916aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 917aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 918aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T40>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, 919aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, 920aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40); 921aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 922aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 923aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 924aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 925aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 926aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 927aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 928aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 929aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 930aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39, typename T40, 931aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T41> 932aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 933aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 934aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, 935aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T41> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 936aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 937aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 938aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 939aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) { 940aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 941aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 942aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 943aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T40, T41>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, 944aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, 945aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41); 946aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 947aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 948aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 949aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 950aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 951aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 952aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 953aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 954aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 955aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39, typename T40, 956aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T41, typename T42> 957aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 958aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 959aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, 960aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T42> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 961aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 962aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 963aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 964aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 965aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T42 v42) { 966aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 967aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 968aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 969aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T40, T41, T42>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, 970aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, 971aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, 972aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v42); 973aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 974aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 975aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 976aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 977aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 978aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 979aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 980aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 981aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 982aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39, typename T40, 983aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T41, typename T42, typename T43> 984aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 985aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 986aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, 987aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T43> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 988aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 989aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 990aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 991aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 992aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T42 v42, T43 v43) { 993aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 994aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 995aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 996aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T40, T41, T42, T43>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, 997aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, 998aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, 999aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v41, v42, v43); 1000aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 1001aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1002aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1003aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 1004aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 1005aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 1006aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 1007aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 1008aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 1009aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39, typename T40, 1010aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T41, typename T42, typename T43, typename T44> 1011aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 1012aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 1013aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 1014aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T44> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 1015aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 1016aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 1017aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 1018aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 1019aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T42 v42, T43 v43, T44 v44) { 1020aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 1021aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 1022aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 1023aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T40, T41, T42, T43, T44>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, 1024aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, 1025aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, 1026aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v40, v41, v42, v43, v44); 1027aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 1028aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1029aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1030aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 1031aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 1032aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 1033aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 1034aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 1035aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 1036aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39, typename T40, 1037aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T41, typename T42, typename T43, typename T44, typename T45> 1038aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 1039aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 1040aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 1041aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T44, T45> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, 1042aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, 1043aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, 1044aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, 1045aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, 1046aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) { 1047aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 1048aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 1049aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 1050aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T40, T41, T42, T43, T44, T45>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, 1051aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, 1052aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, 1053aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v39, v40, v41, v42, v43, v44, v45); 1054aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 1055aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1056aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1057aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 1058aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 1059aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 1060aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 1061aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 1062aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 1063aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39, typename T40, 1064aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T41, typename T42, typename T43, typename T44, typename T45, 1065aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T46> 1066aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 1067aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 1068aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 1069aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T44, T45, T46> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 1070aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 1071aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 1072aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 1073aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, 1074aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) { 1075aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 1076aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 1077aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 1078aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T40, T41, T42, T43, T44, T45, T46>(v1, v2, v3, v4, v5, v6, v7, v8, v9, 1079aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 1080aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, 1081aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v38, v39, v40, v41, v42, v43, v44, v45, v46); 1082aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 1083aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1084aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1085aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 1086aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 1087aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 1088aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 1089aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 1090aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 1091aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39, typename T40, 1092aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T41, typename T42, typename T43, typename T44, typename T45, 1093aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T46, typename T47> 1094aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 1095aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 1096aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 1097aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T44, T45, T46, T47> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 1098aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 1099aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 1100aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 1101aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, 1102aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) { 1103aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 1104aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 1105aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 1106aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T40, T41, T42, T43, T44, T45, T46, T47>(v1, v2, v3, v4, v5, v6, v7, v8, 1107aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 1108aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, 1109aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v38, v39, v40, v41, v42, v43, v44, v45, v46, v47); 1110aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 1111aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1112aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1113aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 1114aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 1115aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 1116aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 1117aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 1118aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 1119aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39, typename T40, 1120aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T41, typename T42, typename T43, typename T44, typename T45, 1121aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T46, typename T47, typename T48> 1122aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 1123aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 1124aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 1125aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T44, T45, T46, T47, T48> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, 1126aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 1127aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 1128aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 1129aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, 1130aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, 1131aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T48 v48) { 1132aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 1133aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 1134aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 1135aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T40, T41, T42, T43, T44, T45, T46, T47, T48>(v1, v2, v3, v4, v5, v6, v7, 1136aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, 1137aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, 1138aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48); 1139aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 1140aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1141aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1142aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 1143aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 1144aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 1145aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 1146aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 1147aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 1148aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39, typename T40, 1149aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T41, typename T42, typename T43, typename T44, typename T45, 1150aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T46, typename T47, typename T48, typename T49> 1151aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 1152aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 1153aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 1154aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T44, T45, T46, T47, T48, T49> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, 1155aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, 1156aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, 1157aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, 1158aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, 1159aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, 1160aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T47 v47, T48 v48, T49 v49) { 1161aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 1162aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 1163aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 1164aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T40, T41, T42, T43, T44, T45, T46, T47, T48, T49>(v1, v2, v3, v4, v5, v6, 1165aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, 1166aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, 1167aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49); 1168aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 1169aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1170aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 1171aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T6, typename T7, typename T8, typename T9, typename T10, 1172aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T11, typename T12, typename T13, typename T14, typename T15, 1173aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T16, typename T17, typename T18, typename T19, typename T20, 1174aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T21, typename T22, typename T23, typename T24, typename T25, 1175aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T26, typename T27, typename T28, typename T29, typename T30, 1176aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T31, typename T32, typename T33, typename T34, typename T35, 1177aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T36, typename T37, typename T38, typename T39, typename T40, 1178aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T41, typename T42, typename T43, typename T44, typename T45, 1179aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename T46, typename T47, typename T48, typename T49, typename T50> 1180aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 1181aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 1182aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 1183aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T44, T45, T46, T47, T48, T49, T50> Values(T1 v1, T2 v2, T3 v3, T4 v4, 1184aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 1185aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, 1186aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, 1187aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, 1188aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, 1189aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) { 1190aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 1191aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 1192aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 1193aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>(v1, v2, v3, v4, 1194aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 1195aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, 1196aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, 1197aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter v48, v49, v50); 1198aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 1199aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1200aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Bool() allows generating tests with parameters in a set of (false, true). 1201aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 1202aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Synopsis: 1203aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Bool() 1204aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// - returns a generator producing sequences with elements {false, true}. 1205aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 1206aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// It is useful when testing code that depends on Boolean flags. Combinations 1207aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// of multiple flags can be tested when several Bool()'s are combined using 1208aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Combine() function. 1209aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 1210aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// In the following example all tests in the test case FlagDependentTest 1211aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// will be instantiated twice with parameters false and true. 1212aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 1213aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// class FlagDependentTest : public testing::TestWithParam<bool> { 1214aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// virtual void SetUp() { 1215aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// external_flag = GetParam(); 1216aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// } 1217aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// } 1218aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// INSTANTIATE_TEST_CASE_P(BoolSequence, FlagDependentTest, Bool()); 1219aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 12201a7cfd6e9668ac3716369f25830a01358e0f0ef2FslNopper#undef Bool 1221aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinline internal::ParamGenerator<bool> Bool() { 1222aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return Values(false, true); 1223aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 1224aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1225aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter# if GTEST_HAS_COMBINE 1226aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Combine() allows the user to combine two or more sequences to produce 1227aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// values of a Cartesian product of those sequences' elements. 1228aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 1229aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Synopsis: 1230aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Combine(gen1, gen2, ..., genN) 1231aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// - returns a generator producing sequences with elements coming from 1232aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// the Cartesian product of elements from the sequences generated by 1233aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// gen1, gen2, ..., genN. The sequence elements will have a type of 1234aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types 1235aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// of elements from sequences produces by gen1, gen2, ..., genN. 1236aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 1237aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Combine can have up to 10 arguments. This number is currently limited 1238aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// by the maximum number of elements in the tuple implementation used by Google 1239aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Test. 1240aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 1241aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Example: 1242aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 1243aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// This will instantiate tests in test case AnimalTest each one with 1244aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// the parameter values tuple("cat", BLACK), tuple("cat", WHITE), 1245aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// tuple("dog", BLACK), and tuple("dog", WHITE): 1246aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 1247aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// enum Color { BLACK, GRAY, WHITE }; 1248aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// class AnimalTest 1249aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// : public testing::TestWithParam<tuple<const char*, Color> > {...}; 1250aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 1251aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// TEST_P(AnimalTest, AnimalLooksNice) {...} 1252aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 1253aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest, 1254aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Combine(Values("cat", "dog"), 1255aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Values(BLACK, WHITE))); 1256aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 1257aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// This will instantiate tests in FlagDependentTest with all variations of two 1258aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Boolean flags: 1259aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 1260aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// class FlagDependentTest 1261aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// : public testing::TestWithParam<tuple<bool, bool> > { 1262aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// virtual void SetUp() { 1263aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// // Assigns external_flag_1 and external_flag_2 values from the tuple. 1264aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// tie(external_flag_1, external_flag_2) = GetParam(); 1265aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// } 1266aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// }; 1267aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 1268aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// TEST_P(FlagDependentTest, TestFeature1) { 1269aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// // Test your code using external_flag_1 and external_flag_2 here. 1270aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// } 1271aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest, 1272aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// Combine(Bool(), Bool())); 1273aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter// 1274aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename Generator1, typename Generator2> 1275aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::CartesianProductHolder2<Generator1, Generator2> Combine( 1276aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator1& g1, const Generator2& g2) { 1277aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::CartesianProductHolder2<Generator1, Generator2>( 1278aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g1, g2); 1279aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 1280aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1281aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename Generator1, typename Generator2, typename Generator3> 1282aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::CartesianProductHolder3<Generator1, Generator2, Generator3> Combine( 1283aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator1& g1, const Generator2& g2, const Generator3& g3) { 1284aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::CartesianProductHolder3<Generator1, Generator2, Generator3>( 1285aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g1, g2, g3); 1286aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 1287aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1288aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename Generator1, typename Generator2, typename Generator3, 1289aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename Generator4> 1290aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::CartesianProductHolder4<Generator1, Generator2, Generator3, 1291aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Generator4> Combine( 1292aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator1& g1, const Generator2& g2, const Generator3& g3, 1293aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator4& g4) { 1294aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::CartesianProductHolder4<Generator1, Generator2, Generator3, 1295aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Generator4>( 1296aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g1, g2, g3, g4); 1297aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 1298aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1299aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename Generator1, typename Generator2, typename Generator3, 1300aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename Generator4, typename Generator5> 1301aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::CartesianProductHolder5<Generator1, Generator2, Generator3, 1302aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Generator4, Generator5> Combine( 1303aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator1& g1, const Generator2& g2, const Generator3& g3, 1304aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator4& g4, const Generator5& g5) { 1305aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::CartesianProductHolder5<Generator1, Generator2, Generator3, 1306aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Generator4, Generator5>( 1307aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g1, g2, g3, g4, g5); 1308aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 1309aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1310aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename Generator1, typename Generator2, typename Generator3, 1311aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename Generator4, typename Generator5, typename Generator6> 1312aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::CartesianProductHolder6<Generator1, Generator2, Generator3, 1313aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Generator4, Generator5, Generator6> Combine( 1314aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator1& g1, const Generator2& g2, const Generator3& g3, 1315aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator4& g4, const Generator5& g5, const Generator6& g6) { 1316aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::CartesianProductHolder6<Generator1, Generator2, Generator3, 1317aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Generator4, Generator5, Generator6>( 1318aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g1, g2, g3, g4, g5, g6); 1319aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 1320aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1321aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename Generator1, typename Generator2, typename Generator3, 1322aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename Generator4, typename Generator5, typename Generator6, 1323aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename Generator7> 1324aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::CartesianProductHolder7<Generator1, Generator2, Generator3, 1325aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Generator4, Generator5, Generator6, Generator7> Combine( 1326aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator1& g1, const Generator2& g2, const Generator3& g3, 1327aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator4& g4, const Generator5& g5, const Generator6& g6, 1328aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator7& g7) { 1329aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::CartesianProductHolder7<Generator1, Generator2, Generator3, 1330aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Generator4, Generator5, Generator6, Generator7>( 1331aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g1, g2, g3, g4, g5, g6, g7); 1332aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 1333aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1334aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename Generator1, typename Generator2, typename Generator3, 1335aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename Generator4, typename Generator5, typename Generator6, 1336aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename Generator7, typename Generator8> 1337aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::CartesianProductHolder8<Generator1, Generator2, Generator3, 1338aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Generator4, Generator5, Generator6, Generator7, Generator8> Combine( 1339aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator1& g1, const Generator2& g2, const Generator3& g3, 1340aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator4& g4, const Generator5& g5, const Generator6& g6, 1341aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator7& g7, const Generator8& g8) { 1342aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::CartesianProductHolder8<Generator1, Generator2, Generator3, 1343aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Generator4, Generator5, Generator6, Generator7, Generator8>( 1344aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g1, g2, g3, g4, g5, g6, g7, g8); 1345aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 1346aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1347aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename Generator1, typename Generator2, typename Generator3, 1348aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename Generator4, typename Generator5, typename Generator6, 1349aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename Generator7, typename Generator8, typename Generator9> 1350aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::CartesianProductHolder9<Generator1, Generator2, Generator3, 1351aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Generator4, Generator5, Generator6, Generator7, Generator8, 1352aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Generator9> Combine( 1353aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator1& g1, const Generator2& g2, const Generator3& g3, 1354aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator4& g4, const Generator5& g5, const Generator6& g6, 1355aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator7& g7, const Generator8& g8, const Generator9& g9) { 1356aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::CartesianProductHolder9<Generator1, Generator2, Generator3, 1357aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Generator4, Generator5, Generator6, Generator7, Generator8, Generator9>( 1358aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g1, g2, g3, g4, g5, g6, g7, g8, g9); 1359aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 1360aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1361aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchtertemplate <typename Generator1, typename Generator2, typename Generator3, 1362aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename Generator4, typename Generator5, typename Generator6, 1363aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename Generator7, typename Generator8, typename Generator9, 1364aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter typename Generator10> 1365aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchterinternal::CartesianProductHolder10<Generator1, Generator2, Generator3, 1366aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, 1367aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Generator10> Combine( 1368aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator1& g1, const Generator2& g2, const Generator3& g3, 1369aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator4& g4, const Generator5& g5, const Generator6& g6, 1370aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator7& g7, const Generator8& g8, const Generator9& g9, 1371aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter const Generator10& g10) { 1372aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return internal::CartesianProductHolder10<Generator1, Generator2, Generator3, 1373aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, 1374aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter Generator10>( 1375aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter g1, g2, g3, g4, g5, g6, g7, g8, g9, g10); 1376aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} 1377aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter# endif // GTEST_HAS_COMBINE 1378aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1379aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1380aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1381aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter# define TEST_P(test_case_name, test_name) \ 1382aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ 1383aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter : public test_case_name { \ 1384aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter public: \ 1385aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \ 1386aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter virtual void TestBody(); \ 1387aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter private: \ 1388aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static int AddToRegistry() { \ 1389aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ 1390aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter GetTestCasePatternHolder<test_case_name>(\ 1391aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter #test_case_name, __FILE__, __LINE__)->AddTestPattern(\ 1392aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter #test_case_name, \ 1393aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter #test_name, \ 1394aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter new ::testing::internal::TestMetaFactory< \ 1395aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \ 1396aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter return 0; \ 1397aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter } \ 1398aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter static int gtest_registering_dummy_; \ 1399aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter GTEST_DISALLOW_COPY_AND_ASSIGN_(\ 1400aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \ 1401aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter }; \ 1402aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter int GTEST_TEST_CLASS_NAME_(test_case_name, \ 1403aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter test_name)::gtest_registering_dummy_ = \ 1404aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \ 1405aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() 1406aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1407aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \ 1408aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ::testing::internal::ParamGenerator<test_case_name::ParamType> \ 1409aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \ 1410aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter int gtest_##prefix##test_case_name##_dummy_ = \ 1411aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ 1412aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter GetTestCasePatternHolder<test_case_name>(\ 1413aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter #test_case_name, __FILE__, __LINE__)->AddTestCaseInstantiation(\ 1414aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter #prefix, \ 1415aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter >est_##prefix##test_case_name##_EvalGenerator_, \ 1416aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter __FILE__, __LINE__) 1417aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1418aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter} // namespace testing 1419aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1420aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter#endif // GTEST_HAS_PARAM_TEST 1421aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter 1422aa46da279e2426caf1e103eb079dfec8124c5feeCourtney Goeltzenleuchter#endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ 1423