10a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// This file was GENERATED by a script. DO NOT EDIT BY HAND!!! 20a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 30a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Copyright 2008, Google Inc. 40a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// All rights reserved. 50a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 60a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Redistribution and use in source and binary forms, with or without 70a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// modification, are permitted provided that the following conditions are 80a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// met: 90a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 100a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// * Redistributions of source code must retain the above copyright 110a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// notice, this list of conditions and the following disclaimer. 120a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// * Redistributions in binary form must reproduce the above 130a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// copyright notice, this list of conditions and the following disclaimer 140a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// in the documentation and/or other materials provided with the 150a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// distribution. 160a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// * Neither the name of Google Inc. nor the names of its 170a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// contributors may be used to endorse or promote products derived from 180a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// this software without specific prior written permission. 190a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 200a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 210a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 220a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 230a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 240a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 250a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 260a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 270a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 280a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 290a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 300a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 310a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 320a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Authors: vladl@google.com (Vlad Losev) 330a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 340a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Macros and functions for implementing parameterized tests 350a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// in Google C++ Testing Framework (Google Test) 360a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 370a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// This file is generated by a SCRIPT. DO NOT EDIT BY HAND! 380a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 390a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ 400a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ 410a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 420a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 430a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Value-parameterized tests allow you to test your code with different 440a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// parameters without writing multiple copies of the same test. 450a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 460a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Here is how you use value-parameterized tests: 470a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 480a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath#if 0 490a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 500a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// To write value-parameterized tests, first you should define a fixture 510a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// class. It must be derived from testing::TestWithParam<T>, where T is 520a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// the type of your parameter values. TestWithParam<T> is itself derived 530a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// from testing::Test. T can be any copyable type. If it's a raw pointer, 540a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// you are responsible for managing the lifespan of the pointed values. 550a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 560a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathclass FooTest : public ::testing::TestWithParam<const char*> { 570a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath // You can implement all the usual class fixture members here. 580a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath}; 590a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 600a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Then, use the TEST_P macro to define as many parameterized tests 610a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// for this fixture as you want. The _P suffix is for "parameterized" 620a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// or "pattern", whichever you prefer to think. 630a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 640a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan KamathTEST_P(FooTest, DoesBlah) { 650a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath // Inside a test, access the test parameter with the GetParam() method 660a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath // of the TestWithParam<T> class: 670a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath EXPECT_TRUE(foo.Blah(GetParam())); 680a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath ... 690a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 700a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 710a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan KamathTEST_P(FooTest, HasBlahBlah) { 720a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath ... 730a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 740a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 750a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Finally, you can use INSTANTIATE_TEST_CASE_P to instantiate the test 760a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// case with any set of parameters you want. Google Test defines a number 770a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// of functions for generating test parameters. They return what we call 780a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// (surprise!) parameter generators. Here is a summary of them, which 790a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// are all in the testing namespace: 800a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 810a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 820a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Range(begin, end [, step]) - Yields values {begin, begin+step, 830a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// begin+step+step, ...}. The values do not 840a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// include end. step defaults to 1. 850a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Values(v1, v2, ..., vN) - Yields values {v1, v2, ..., vN}. 860a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// ValuesIn(container) - Yields values from a C-style array, an STL 870a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// ValuesIn(begin,end) container, or an iterator range [begin, end). 880a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Bool() - Yields sequence {false, true}. 890a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Combine(g1, g2, ..., gN) - Yields all combinations (the Cartesian product 900a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// for the math savvy) of the values generated 910a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// by the N generators. 920a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 930a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// For more details, see comments at the definitions of these functions below 940a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// in this file. 950a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 960a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// The following statement will instantiate tests from the FooTest test case 970a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// each with parameter values "meeny", "miny", and "moe". 980a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 990a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan KamathINSTANTIATE_TEST_CASE_P(InstantiationName, 1000a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath FooTest, 1010a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath Values("meeny", "miny", "moe")); 1020a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 1030a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// To distinguish different instances of the pattern, (yes, you 1040a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// can instantiate it more then once) the first argument to the 1050a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// INSTANTIATE_TEST_CASE_P macro is a prefix that will be added to the 1060a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// actual test case name. Remember to pick unique prefixes for different 1070a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// instantiations. The tests from the instantiation above will have 1080a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// these names: 1090a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 1100a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// * InstantiationName/FooTest.DoesBlah/0 for "meeny" 1110a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// * InstantiationName/FooTest.DoesBlah/1 for "miny" 1120a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// * InstantiationName/FooTest.DoesBlah/2 for "moe" 1130a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// * InstantiationName/FooTest.HasBlahBlah/0 for "meeny" 1140a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// * InstantiationName/FooTest.HasBlahBlah/1 for "miny" 1150a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// * InstantiationName/FooTest.HasBlahBlah/2 for "moe" 1160a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 1170a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// You can use these names in --gtest_filter. 1180a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 1190a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// This statement will instantiate all tests from FooTest again, each 1200a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// with parameter values "cat" and "dog": 1210a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 1220a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathconst char* pets[] = {"cat", "dog"}; 1230a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan KamathINSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets)); 1240a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 1250a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// The tests from the instantiation above will have these names: 1260a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 1270a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat" 1280a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog" 1290a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat" 1300a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog" 1310a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 1320a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Please note that INSTANTIATE_TEST_CASE_P will instantiate all tests 1330a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// in the given test case, whether their definitions come before or 1340a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// AFTER the INSTANTIATE_TEST_CASE_P statement. 1350a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 1360a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Please also note that generator expressions are evaluated in 1370a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// RUN_ALL_TESTS(), after main() has started. This allows evaluation of 1380a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// parameter list based on command line parameters. 1390a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 1400a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc 1410a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// for more examples. 1420a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 1430a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// In the future, we plan to publish the API for defining new parameter 1440a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// generators. But for now this interface remains part of the internal 1450a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// implementation and is subject to change. 1460a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 1470a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath#endif // 0 1480a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 1490a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath#include <gtest/internal/gtest-port.h> 1500a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 1510a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath#if !GTEST_OS_SYMBIAN 1520a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath#include <utility> 1530a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath#endif 1540a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 1550a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// scripts/fuse_gtest.py depends on gtest's own header being #included 1560a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// *unconditionally*. Therefore these #includes cannot be moved 1570a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// inside #if GTEST_HAS_PARAM_TEST. 1580a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath#include <gtest/internal/gtest-internal.h> 1590a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath#include <gtest/internal/gtest-param-util.h> 1600a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath#include <gtest/internal/gtest-param-util-generated.h> 1610a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 1620a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath#if GTEST_HAS_PARAM_TEST 1630a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 1640a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathnamespace testing { 1650a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 1660a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Functions producing parameter generators. 1670a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 1680a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Google Test uses these generators to produce parameters for value- 1690a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// parameterized tests. When a parameterized test case is instantiated 1700a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// with a particular generator, Google Test creates and runs tests 1710a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// for each element in the sequence produced by the generator. 1720a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 1730a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// In the following sample, tests from test case FooTest are instantiated 1740a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// each three times with parameter values 3, 5, and 8: 1750a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 1760a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// class FooTest : public TestWithParam<int> { ... }; 1770a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 1780a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// TEST_P(FooTest, TestThis) { 1790a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// } 1800a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// TEST_P(FooTest, TestThat) { 1810a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// } 1820a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// INSTANTIATE_TEST_CASE_P(TestSequence, FooTest, Values(3, 5, 8)); 1830a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 1840a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 1850a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Range() returns generators providing sequences of values in a range. 1860a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 1870a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Synopsis: 1880a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Range(start, end) 1890a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// - returns a generator producing a sequence of values {start, start+1, 1900a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// start+2, ..., }. 1910a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Range(start, end, step) 1920a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// - returns a generator producing a sequence of values {start, start+step, 1930a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// start+step+step, ..., }. 1940a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Notes: 1950a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// * The generated sequences never include end. For example, Range(1, 5) 1960a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2) 1970a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// returns a generator producing {1, 3, 5, 7}. 1980a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// * start and end must have the same type. That type may be any integral or 1990a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// floating-point type or a user defined type satisfying these conditions: 2000a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// * It must be assignable (have operator=() defined). 2010a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// * It must have operator+() (operator+(int-compatible type) for 2020a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// two-operand version). 2030a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// * It must have operator<() defined. 2040a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Elements in the resulting sequences will also have that type. 2050a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// * Condition start < end must be satisfied in order for resulting sequences 2060a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// to contain any elements. 2070a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 2080a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T, typename IncrementT> 2090a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ParamGenerator<T> Range(T start, T end, IncrementT step) { 2100a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ParamGenerator<T>( 2110a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath new internal::RangeGenerator<T, IncrementT>(start, end, step)); 2120a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 2130a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 2140a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T> 2150a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ParamGenerator<T> Range(T start, T end) { 2160a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return Range(start, end, 1); 2170a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 2180a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 2190a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// ValuesIn() function allows generation of tests with parameters coming from 2200a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// a container. 2210a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 2220a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Synopsis: 2230a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// ValuesIn(const T (&array)[N]) 2240a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// - returns a generator producing sequences with elements from 2250a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// a C-style array. 2260a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// ValuesIn(const Container& container) 2270a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// - returns a generator producing sequences with elements from 2280a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// an STL-style container. 2290a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// ValuesIn(Iterator begin, Iterator end) 2300a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// - returns a generator producing sequences with elements from 2310a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// a range [begin, end) defined by a pair of STL-style iterators. These 2320a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// iterators can also be plain C pointers. 2330a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 2340a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Please note that ValuesIn copies the values from the containers 2350a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// passed in and keeps them to generate tests in RUN_ALL_TESTS(). 2360a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 2370a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Examples: 2380a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 2390a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// This instantiates tests from test case StringTest 2400a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// each with C-string values of "foo", "bar", and "baz": 2410a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 2420a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// const char* strings[] = {"foo", "bar", "baz"}; 2430a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// INSTANTIATE_TEST_CASE_P(StringSequence, SrtingTest, ValuesIn(strings)); 2440a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 2450a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// This instantiates tests from test case StlStringTest 2460a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// each with STL strings with values "a" and "b": 2470a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 2480a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// ::std::vector< ::std::string> GetParameterStrings() { 2490a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// ::std::vector< ::std::string> v; 2500a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// v.push_back("a"); 2510a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// v.push_back("b"); 2520a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// return v; 2530a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// } 2540a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 2550a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// INSTANTIATE_TEST_CASE_P(CharSequence, 2560a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// StlStringTest, 2570a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// ValuesIn(GetParameterStrings())); 2580a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 2590a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 2600a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// This will also instantiate tests from CharTest 2610a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// each with parameter values 'a' and 'b': 2620a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 2630a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// ::std::list<char> GetParameterChars() { 2640a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// ::std::list<char> list; 2650a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// list.push_back('a'); 2660a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// list.push_back('b'); 2670a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// return list; 2680a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// } 2690a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// ::std::list<char> l = GetParameterChars(); 2700a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// INSTANTIATE_TEST_CASE_P(CharSequence2, 2710a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// CharTest, 2720a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// ValuesIn(l.begin(), l.end())); 2730a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 2740a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename ForwardIterator> 2750a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ParamGenerator< 2760a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename ::std::iterator_traits<ForwardIterator>::value_type> ValuesIn( 2770a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath ForwardIterator begin, 2780a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath ForwardIterator end) { 2790a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typedef typename ::std::iterator_traits<ForwardIterator>::value_type 2800a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath ParamType; 2810a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ParamGenerator<ParamType>( 2820a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end)); 2830a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 2840a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 2850a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T, size_t N> 2860a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ParamGenerator<T> ValuesIn(const T (&array)[N]) { 2870a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return ValuesIn(array, array + N); 2880a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 2890a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 2900a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <class Container> 2910a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ParamGenerator<typename Container::value_type> ValuesIn( 2920a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath const Container& container) { 2930a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return ValuesIn(container.begin(), container.end()); 2940a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 2950a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 2960a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Values() allows generating tests from explicitly specified list of 2970a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// parameters. 2980a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 2990a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Synopsis: 3000a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Values(T v1, T v2, ..., T vN) 3010a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// - returns a generator producing sequences with elements v1, v2, ..., vN. 3020a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 3030a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// For example, this instantiates tests from test case BarTest each 3040a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// with values "one", "two", and "three": 3050a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 3060a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three")); 3070a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 3080a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// This instantiates tests from test case BazTest each with values 1, 2, 3.5. 3090a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// The exact type of values will depend on the type of parameter in BazTest. 3100a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 3110a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5)); 3120a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 3130a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Currently, Values() supports from 1 to 50 parameters. 3140a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 3150a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1> 3160a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray1<T1> Values(T1 v1) { 3170a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray1<T1>(v1); 3180a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 3190a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 3200a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2> 3210a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray2<T1, T2> Values(T1 v1, T2 v2) { 3220a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray2<T1, T2>(v1, v2); 3230a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 3240a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 3250a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3> 3260a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray3<T1, T2, T3> Values(T1 v1, T2 v2, T3 v3) { 3270a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray3<T1, T2, T3>(v1, v2, v3); 3280a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 3290a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 3300a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4> 3310a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray4<T1, T2, T3, T4> Values(T1 v1, T2 v2, T3 v3, T4 v4) { 3320a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray4<T1, T2, T3, T4>(v1, v2, v3, v4); 3330a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 3340a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 3350a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5> 3360a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray5<T1, T2, T3, T4, T5> Values(T1 v1, T2 v2, T3 v3, T4 v4, 3370a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T5 v5) { 3380a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray5<T1, T2, T3, T4, T5>(v1, v2, v3, v4, v5); 3390a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 3400a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 3410a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 3420a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6> 3430a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(T1 v1, T2 v2, T3 v3, 3440a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T4 v4, T5 v5, T6 v6) { 3450a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(v1, v2, v3, v4, v5, v6); 3460a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 3470a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 3480a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 3490a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7> 3500a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(T1 v1, T2 v2, T3 v3, 3510a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T4 v4, T5 v5, T6 v6, T7 v7) { 3520a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5, 3530a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v6, v7); 3540a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 3550a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 3560a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 3570a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8> 3580a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(T1 v1, T2 v2, 3590a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) { 3600a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4, 3610a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v5, v6, v7, v8); 3620a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 3630a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 3640a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 3650a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9> 3660a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2, 3670a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) { 3680a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3, 3690a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v4, v5, v6, v7, v8, v9); 3700a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 3710a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 3720a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 3730a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10> 3740a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1, 3750a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) { 3760a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1, 3770a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v2, v3, v4, v5, v6, v7, v8, v9, v10); 3780a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 3790a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 3800a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 3810a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 3820a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11> 3830a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, 3840a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T11> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 3850a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T10 v10, T11 v11) { 3860a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, 3870a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T11>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11); 3880a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 3890a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 3900a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 3910a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 3920a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12> 3930a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 3940a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 3950a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T10 v10, T11 v11, T12 v12) { 3960a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 3970a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12); 3980a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 3990a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 4000a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4010a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 4020a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13> 4030a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, 4040a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T13> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 4050a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T10 v10, T11 v11, T12 v12, T13 v13) { 4060a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 4070a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13); 4080a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 4090a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 4100a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4110a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 4120a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14> 4130a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 4140a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 4150a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) { 4160a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 4170a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, 4180a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v14); 4190a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 4200a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 4210a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4220a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 4230a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15> 4240a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 4250a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, 4260a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) { 4270a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 4280a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, 4290a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v13, v14, v15); 4300a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 4310a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 4320a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4330a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 4340a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 4350a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16> 4360a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 4370a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 4380a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 4390a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T16 v16) { 4400a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 4410a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, 4420a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v12, v13, v14, v15, v16); 4430a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 4440a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 4450a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4460a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 4470a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 4480a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17> 4490a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 4500a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 4510a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 4520a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T16 v16, T17 v17) { 4530a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 4540a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, 4550a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v11, v12, v13, v14, v15, v16, v17); 4560a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 4570a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 4580a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4590a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 4600a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 4610a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18> 4620a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 4630a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, 4640a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 4650a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T16 v16, T17 v17, T18 v18) { 4660a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 4670a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18>(v1, v2, v3, v4, v5, v6, v7, v8, v9, 4680a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v10, v11, v12, v13, v14, v15, v16, v17, v18); 4690a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 4700a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 4710a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4720a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 4730a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 4740a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19> 4750a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 4760a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, 4770a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, 4780a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) { 4790a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 4800a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19>(v1, v2, v3, v4, v5, v6, v7, v8, 4810a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19); 4820a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 4830a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 4840a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4850a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 4860a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 4870a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20> 4880a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 4890a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20> Values(T1 v1, T2 v2, T3 v3, T4 v4, 4900a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 4910a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) { 4920a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 4930a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20>(v1, v2, v3, v4, v5, v6, v7, 4940a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20); 4950a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 4960a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 4970a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 4980a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 4990a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 5000a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 5010a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21> 5020a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 5030a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21> Values(T1 v1, T2 v2, T3 v3, T4 v4, 5040a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 5050a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) { 5060a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 5070a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(v1, v2, v3, v4, v5, v6, 5080a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21); 5090a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 5100a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 5110a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 5120a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 5130a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 5140a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 5150a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22> 5160a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 5170a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22> Values(T1 v1, T2 v2, T3 v3, 5180a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 5190a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 5200a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T21 v21, T22 v22) { 5210a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 5220a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(v1, v2, v3, v4, 5230a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 5240a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v20, v21, v22); 5250a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 5260a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 5270a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 5280a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 5290a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 5300a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 5310a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23> 5320a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 5330a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> Values(T1 v1, T2 v2, 5340a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 5350a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 5360a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T21 v21, T22 v22, T23 v23) { 5370a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 5380a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(v1, v2, v3, 5390a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 5400a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v20, v21, v22, v23); 5410a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 5420a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 5430a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 5440a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 5450a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 5460a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 5470a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24> 5480a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 5490a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Values(T1 v1, T2 v2, 5500a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 5510a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 5520a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T21 v21, T22 v22, T23 v23, T24 v24) { 5530a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 5540a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(v1, v2, 5550a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, 5560a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v19, v20, v21, v22, v23, v24); 5570a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 5580a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 5590a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 5600a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 5610a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 5620a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 5630a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25> 5640a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 5650a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Values(T1 v1, 5660a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, 5670a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, 5680a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) { 5690a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 5700a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>(v1, 5710a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, 5720a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v18, v19, v20, v21, v22, v23, v24, v25); 5730a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 5740a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 5750a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 5760a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 5770a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 5780a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 5790a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 5800a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26> 5810a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 5820a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 5830a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 5840a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 5850a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 5860a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26 v26) { 5870a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 5880a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 5890a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, 5900a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26); 5910a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 5920a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 5930a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 5940a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 5950a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 5960a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 5970a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 5980a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27> 5990a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 6000a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, 6010a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T27> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 6020a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 6030a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 6040a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26 v26, T27 v27) { 6050a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 6060a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 6070a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, 6080a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27); 6090a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 6100a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 6110a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 6120a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 6130a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 6140a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 6150a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 6160a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27, typename T28> 6170a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 6180a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, 6190a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T28> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 6200a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 6210a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 6220a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26 v26, T27 v27, T28 v28) { 6230a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 6240a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 6250a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27, T28>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, 6260a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, 6270a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v28); 6280a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 6290a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 6300a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 6310a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 6320a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 6330a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 6340a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 6350a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27, typename T28, typename T29> 6360a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 6370a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 6380a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 6390a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 6400a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 6410a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26 v26, T27 v27, T28 v28, T29 v29) { 6420a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 6430a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 6440a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27, T28, T29>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, 6450a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, 6460a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v27, v28, v29); 6470a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 6480a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 6490a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 6500a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 6510a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 6520a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 6530a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 6540a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27, typename T28, typename T29, typename T30> 6550a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 6560a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 6570a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29, T30> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, 6580a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, 6590a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, 6600a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) { 6610a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 6620a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 6630a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27, T28, T29, T30>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, 6640a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, 6650a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v26, v27, v28, v29, v30); 6660a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 6670a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 6680a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 6690a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 6700a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 6710a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 6720a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 6730a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27, typename T28, typename T29, typename T30, 6740a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T31> 6750a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 6760a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 6770a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29, T30, T31> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 6780a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 6790a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 6800a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) { 6810a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 6820a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 6830a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27, T28, T29, T30, T31>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, 6840a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, 6850a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v25, v26, v27, v28, v29, v30, v31); 6860a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 6870a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 6880a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 6890a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 6900a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 6910a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 6920a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 6930a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27, typename T28, typename T29, typename T30, 6940a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T31, typename T32> 6950a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 6960a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 6970a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29, T30, T31, T32> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 6980a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 6990a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 7000a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 7010a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T32 v32) { 7020a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 7030a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 7040a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27, T28, T29, T30, T31, T32>(v1, v2, v3, v4, v5, v6, v7, v8, v9, 7050a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 7060a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v24, v25, v26, v27, v28, v29, v30, v31, v32); 7070a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 7080a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 7090a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 7100a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 7110a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 7120a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 7130a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 7140a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27, typename T28, typename T29, typename T30, 7150a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T31, typename T32, typename T33> 7160a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 7170a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 7180a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29, T30, T31, T32, T33> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, 7190a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 7200a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 7210a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 7220a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T32 v32, T33 v33) { 7230a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 7240a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 7250a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27, T28, T29, T30, T31, T32, T33>(v1, v2, v3, v4, v5, v6, v7, v8, 7260a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 7270a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v24, v25, v26, v27, v28, v29, v30, v31, v32, v33); 7280a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 7290a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 7300a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 7310a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 7320a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 7330a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 7340a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 7350a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27, typename T28, typename T29, typename T30, 7360a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T31, typename T32, typename T33, typename T34> 7370a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 7380a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 7390a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29, T30, T31, T32, T33, T34> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, 7400a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, 7410a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, 7420a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, 7430a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T31 v31, T32 v32, T33 v33, T34 v34) { 7440a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 7450a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 7460a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27, T28, T29, T30, T31, T32, T33, T34>(v1, v2, v3, v4, v5, v6, v7, 7470a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, 7480a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34); 7490a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 7500a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 7510a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 7520a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 7530a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 7540a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 7550a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 7560a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27, typename T28, typename T29, typename T30, 7570a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T31, typename T32, typename T33, typename T34, typename T35> 7580a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 7590a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 7600a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29, T30, T31, T32, T33, T34, T35> Values(T1 v1, T2 v2, T3 v3, T4 v4, 7610a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 7620a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, 7630a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, 7640a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) { 7650a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 7660a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 7670a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27, T28, T29, T30, T31, T32, T33, T34, T35>(v1, v2, v3, v4, v5, v6, 7680a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, 7690a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35); 7700a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 7710a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 7720a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 7730a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 7740a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 7750a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 7760a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 7770a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27, typename T28, typename T29, typename T30, 7780a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T31, typename T32, typename T33, typename T34, typename T35, 7790a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T36> 7800a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 7810a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 7820a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29, T30, T31, T32, T33, T34, T35, T36> Values(T1 v1, T2 v2, T3 v3, T4 v4, 7830a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 7840a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, 7850a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, 7860a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) { 7870a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 7880a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 7890a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36>(v1, v2, v3, v4, 7900a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 7910a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, 7920a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v34, v35, v36); 7930a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 7940a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 7950a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 7960a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 7970a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 7980a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 7990a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 8000a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27, typename T28, typename T29, typename T30, 8010a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T31, typename T32, typename T33, typename T34, typename T35, 8020a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T36, typename T37> 8030a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 8040a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 8050a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29, T30, T31, T32, T33, T34, T35, T36, T37> Values(T1 v1, T2 v2, T3 v3, 8060a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 8070a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 8080a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, 8090a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, 8100a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T37 v37) { 8110a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 8120a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 8130a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>(v1, v2, v3, 8140a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 8150a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, 8160a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v34, v35, v36, v37); 8170a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 8180a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 8190a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 8200a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 8210a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 8220a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 8230a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 8240a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27, typename T28, typename T29, typename T30, 8250a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T31, typename T32, typename T33, typename T34, typename T35, 8260a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T36, typename T37, typename T38> 8270a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 8280a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 8290a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Values(T1 v1, T2 v2, 8300a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 8310a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 8320a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, 8330a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, 8340a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T37 v37, T38 v38) { 8350a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 8360a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 8370a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>(v1, v2, 8380a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, 8390a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, 8400a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v33, v34, v35, v36, v37, v38); 8410a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 8420a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 8430a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 8440a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 8450a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 8460a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 8470a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 8480a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27, typename T28, typename T29, typename T30, 8490a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T31, typename T32, typename T33, typename T34, typename T35, 8500a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T36, typename T37, typename T38, typename T39> 8510a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 8520a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 8530a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Values(T1 v1, T2 v2, 8540a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, 8550a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, 8560a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, 8570a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, 8580a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T37 v37, T38 v38, T39 v39) { 8590a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 8600a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 8610a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>(v1, 8620a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, 8630a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, 8640a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v32, v33, v34, v35, v36, v37, v38, v39); 8650a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 8660a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 8670a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 8680a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 8690a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 8700a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 8710a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 8720a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27, typename T28, typename T29, typename T30, 8730a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T31, typename T32, typename T33, typename T34, typename T35, 8740a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T36, typename T37, typename T38, typename T39, typename T40> 8750a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 8760a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 8770a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Values(T1 v1, 8780a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, 8790a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, 8800a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, 8810a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, 8820a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) { 8830a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 8840a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 8850a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 8860a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T40>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, 8870a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, 8880a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40); 8890a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 8900a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 8910a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 8920a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 8930a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 8940a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 8950a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 8960a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27, typename T28, typename T29, typename T30, 8970a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T31, typename T32, typename T33, typename T34, typename T35, 8980a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T36, typename T37, typename T38, typename T39, typename T40, 8990a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T41> 9000a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 9010a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 9020a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, 9030a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T41> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 9040a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 9050a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 9060a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 9070a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) { 9080a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 9090a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 9100a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 9110a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T40, T41>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, 9120a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, 9130a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41); 9140a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 9150a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 9160a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 9170a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 9180a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 9190a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 9200a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 9210a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27, typename T28, typename T29, typename T30, 9220a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T31, typename T32, typename T33, typename T34, typename T35, 9230a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T36, typename T37, typename T38, typename T39, typename T40, 9240a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T41, typename T42> 9250a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 9260a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 9270a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, 9280a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T42> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 9290a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 9300a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 9310a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 9320a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 9330a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T42 v42) { 9340a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 9350a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 9360a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 9370a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T40, T41, T42>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, 9380a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, 9390a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, 9400a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v42); 9410a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 9420a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 9430a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 9440a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 9450a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 9460a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 9470a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 9480a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27, typename T28, typename T29, typename T30, 9490a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T31, typename T32, typename T33, typename T34, typename T35, 9500a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T36, typename T37, typename T38, typename T39, typename T40, 9510a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T41, typename T42, typename T43> 9520a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 9530a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 9540a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, 9550a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T43> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 9560a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 9570a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 9580a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 9590a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 9600a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T42 v42, T43 v43) { 9610a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 9620a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 9630a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 9640a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T40, T41, T42, T43>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, 9650a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, 9660a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, 9670a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v41, v42, v43); 9680a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 9690a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 9700a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 9710a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 9720a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 9730a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 9740a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 9750a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27, typename T28, typename T29, typename T30, 9760a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T31, typename T32, typename T33, typename T34, typename T35, 9770a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T36, typename T37, typename T38, typename T39, typename T40, 9780a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T41, typename T42, typename T43, typename T44> 9790a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 9800a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 9810a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 9820a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T44> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, 9830a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, 9840a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, 9850a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, 9860a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, 9870a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T42 v42, T43 v43, T44 v44) { 9880a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 9890a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 9900a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 9910a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T40, T41, T42, T43, T44>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, 9920a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, 9930a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, 9940a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v40, v41, v42, v43, v44); 9950a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 9960a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 9970a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 9980a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 9990a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 10000a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 10010a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 10020a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27, typename T28, typename T29, typename T30, 10030a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T31, typename T32, typename T33, typename T34, typename T35, 10040a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T36, typename T37, typename T38, typename T39, typename T40, 10050a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T41, typename T42, typename T43, typename T44, typename T45> 10060a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 10070a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 10080a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 10090a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T44, T45> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, 10100a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, 10110a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, 10120a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, 10130a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, 10140a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) { 10150a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 10160a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 10170a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 10180a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T40, T41, T42, T43, T44, T45>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, 10190a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, 10200a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, 10210a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v39, v40, v41, v42, v43, v44, v45); 10220a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 10230a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 10240a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 10250a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 10260a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 10270a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 10280a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 10290a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27, typename T28, typename T29, typename T30, 10300a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T31, typename T32, typename T33, typename T34, typename T35, 10310a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T36, typename T37, typename T38, typename T39, typename T40, 10320a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T41, typename T42, typename T43, typename T44, typename T45, 10330a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T46> 10340a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 10350a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 10360a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 10370a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T44, T45, T46> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 10380a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 10390a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 10400a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 10410a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, 10420a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) { 10430a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 10440a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 10450a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 10460a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T40, T41, T42, T43, T44, T45, T46>(v1, v2, v3, v4, v5, v6, v7, v8, v9, 10470a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 10480a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, 10490a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v38, v39, v40, v41, v42, v43, v44, v45, v46); 10500a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 10510a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 10520a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 10530a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 10540a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 10550a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 10560a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 10570a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27, typename T28, typename T29, typename T30, 10580a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T31, typename T32, typename T33, typename T34, typename T35, 10590a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T36, typename T37, typename T38, typename T39, typename T40, 10600a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T41, typename T42, typename T43, typename T44, typename T45, 10610a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T46, typename T47> 10620a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 10630a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 10640a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 10650a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T44, T45, T46, T47> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, 10660a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 10670a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 10680a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 10690a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, 10700a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) { 10710a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 10720a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 10730a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 10740a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T40, T41, T42, T43, T44, T45, T46, T47>(v1, v2, v3, v4, v5, v6, v7, v8, 10750a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, 10760a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, 10770a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v38, v39, v40, v41, v42, v43, v44, v45, v46, v47); 10780a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 10790a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 10800a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 10810a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 10820a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 10830a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 10840a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 10850a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27, typename T28, typename T29, typename T30, 10860a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T31, typename T32, typename T33, typename T34, typename T35, 10870a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T36, typename T37, typename T38, typename T39, typename T40, 10880a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T41, typename T42, typename T43, typename T44, typename T45, 10890a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T46, typename T47, typename T48> 10900a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 10910a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 10920a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 10930a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T44, T45, T46, T47, T48> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, 10940a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, 10950a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, 10960a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, 10970a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, 10980a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, 10990a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T48 v48) { 11000a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 11010a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 11020a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 11030a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T40, T41, T42, T43, T44, T45, T46, T47, T48>(v1, v2, v3, v4, v5, v6, v7, 11040a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, 11050a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, 11060a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48); 11070a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 11080a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 11090a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 11100a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 11110a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 11120a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 11130a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 11140a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27, typename T28, typename T29, typename T30, 11150a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T31, typename T32, typename T33, typename T34, typename T35, 11160a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T36, typename T37, typename T38, typename T39, typename T40, 11170a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T41, typename T42, typename T43, typename T44, typename T45, 11180a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T46, typename T47, typename T48, typename T49> 11190a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 11200a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 11210a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 11220a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T44, T45, T46, T47, T48, T49> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, 11230a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, 11240a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, 11250a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, 11260a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, 11270a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, 11280a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T47 v47, T48 v48, T49 v49) { 11290a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 11300a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 11310a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 11320a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T40, T41, T42, T43, T44, T45, T46, T47, T48, T49>(v1, v2, v3, v4, v5, v6, 11330a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, 11340a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, 11350a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49); 11360a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 11370a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 11380a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename T1, typename T2, typename T3, typename T4, typename T5, 11390a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T6, typename T7, typename T8, typename T9, typename T10, 11400a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T11, typename T12, typename T13, typename T14, typename T15, 11410a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T16, typename T17, typename T18, typename T19, typename T20, 11420a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T21, typename T22, typename T23, typename T24, typename T25, 11430a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T26, typename T27, typename T28, typename T29, typename T30, 11440a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T31, typename T32, typename T33, typename T34, typename T35, 11450a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T36, typename T37, typename T38, typename T39, typename T40, 11460a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T41, typename T42, typename T43, typename T44, typename T45, 11470a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename T46, typename T47, typename T48, typename T49, typename T50> 11480a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, 11490a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, 11500a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, 11510a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T44, T45, T46, T47, T48, T49, T50> Values(T1 v1, T2 v2, T3 v3, T4 v4, 11520a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, 11530a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, 11540a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, 11550a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, 11560a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, 11570a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) { 11580a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, 11590a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, 11600a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, 11610a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>(v1, v2, v3, v4, 11620a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, 11630a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, 11640a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, 11650a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath v48, v49, v50); 11660a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 11670a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 11680a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Bool() allows generating tests with parameters in a set of (false, true). 11690a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 11700a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Synopsis: 11710a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Bool() 11720a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// - returns a generator producing sequences with elements {false, true}. 11730a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 11740a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// It is useful when testing code that depends on Boolean flags. Combinations 11750a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// of multiple flags can be tested when several Bool()'s are combined using 11760a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Combine() function. 11770a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 11780a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// In the following example all tests in the test case FlagDependentTest 11790a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// will be instantiated twice with parameters false and true. 11800a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 11810a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// class FlagDependentTest : public testing::TestWithParam<bool> { 11820a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// virtual void SetUp() { 11830a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// external_flag = GetParam(); 11840a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// } 11850a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// } 11860a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// INSTANTIATE_TEST_CASE_P(BoolSequence, FlagDependentTest, Bool()); 11870a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 11880a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinline internal::ParamGenerator<bool> Bool() { 11890a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return Values(false, true); 11900a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 11910a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 11920a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath#if GTEST_HAS_COMBINE 11930a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Combine() allows the user to combine two or more sequences to produce 11940a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// values of a Cartesian product of those sequences' elements. 11950a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 11960a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Synopsis: 11970a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Combine(gen1, gen2, ..., genN) 11980a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// - returns a generator producing sequences with elements coming from 11990a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// the Cartesian product of elements from the sequences generated by 12000a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// gen1, gen2, ..., genN. The sequence elements will have a type of 12010a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types 12020a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// of elements from sequences produces by gen1, gen2, ..., genN. 12030a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 12040a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Combine can have up to 10 arguments. This number is currently limited 12050a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// by the maximum number of elements in the tuple implementation used by Google 12060a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Test. 12070a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 12080a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Example: 12090a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 12100a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// This will instantiate tests in test case AnimalTest each one with 12110a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// the parameter values tuple("cat", BLACK), tuple("cat", WHITE), 12120a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// tuple("dog", BLACK), and tuple("dog", WHITE): 12130a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 12140a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// enum Color { BLACK, GRAY, WHITE }; 12150a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// class AnimalTest 12160a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// : public testing::TestWithParam<tuple<const char*, Color> > {...}; 12170a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 12180a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// TEST_P(AnimalTest, AnimalLooksNice) {...} 12190a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 12200a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest, 12210a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Combine(Values("cat", "dog"), 12220a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Values(BLACK, WHITE))); 12230a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 12240a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// This will instantiate tests in FlagDependentTest with all variations of two 12250a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Boolean flags: 12260a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 12270a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// class FlagDependentTest 12280a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// : public testing::TestWithParam<tuple(bool, bool)> > { 12290a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// virtual void SetUp() { 12300a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// // Assigns external_flag_1 and external_flag_2 values from the tuple. 12310a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// tie(external_flag_1, external_flag_2) = GetParam(); 12320a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// } 12330a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// }; 12340a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 12350a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// TEST_P(FlagDependentTest, TestFeature1) { 12360a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// // Test your code using external_flag_1 and external_flag_2 here. 12370a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// } 12380a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest, 12390a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// Combine(Bool(), Bool())); 12400a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath// 12410a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename Generator1, typename Generator2> 12420a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::CartesianProductHolder2<Generator1, Generator2> Combine( 12430a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath const Generator1& g1, const Generator2& g2) { 12440a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::CartesianProductHolder2<Generator1, Generator2>( 12450a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath g1, g2); 12460a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 12470a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 12480a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename Generator1, typename Generator2, typename Generator3> 12490a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::CartesianProductHolder3<Generator1, Generator2, Generator3> Combine( 12500a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath const Generator1& g1, const Generator2& g2, const Generator3& g3) { 12510a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::CartesianProductHolder3<Generator1, Generator2, Generator3>( 12520a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath g1, g2, g3); 12530a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 12540a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 12550a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename Generator1, typename Generator2, typename Generator3, 12560a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename Generator4> 12570a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::CartesianProductHolder4<Generator1, Generator2, Generator3, 12580a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath Generator4> Combine( 12590a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath const Generator1& g1, const Generator2& g2, const Generator3& g3, 12600a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath const Generator4& g4) { 12610a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::CartesianProductHolder4<Generator1, Generator2, Generator3, 12620a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath Generator4>( 12630a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath g1, g2, g3, g4); 12640a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 12650a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 12660a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename Generator1, typename Generator2, typename Generator3, 12670a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename Generator4, typename Generator5> 12680a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::CartesianProductHolder5<Generator1, Generator2, Generator3, 12690a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath Generator4, Generator5> Combine( 12700a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath const Generator1& g1, const Generator2& g2, const Generator3& g3, 12710a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath const Generator4& g4, const Generator5& g5) { 12720a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::CartesianProductHolder5<Generator1, Generator2, Generator3, 12730a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath Generator4, Generator5>( 12740a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath g1, g2, g3, g4, g5); 12750a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 12760a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 12770a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename Generator1, typename Generator2, typename Generator3, 12780a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename Generator4, typename Generator5, typename Generator6> 12790a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::CartesianProductHolder6<Generator1, Generator2, Generator3, 12800a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath Generator4, Generator5, Generator6> Combine( 12810a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath const Generator1& g1, const Generator2& g2, const Generator3& g3, 12820a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath const Generator4& g4, const Generator5& g5, const Generator6& g6) { 12830a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::CartesianProductHolder6<Generator1, Generator2, Generator3, 12840a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath Generator4, Generator5, Generator6>( 12850a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath g1, g2, g3, g4, g5, g6); 12860a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 12870a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 12880a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename Generator1, typename Generator2, typename Generator3, 12890a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename Generator4, typename Generator5, typename Generator6, 12900a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename Generator7> 12910a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::CartesianProductHolder7<Generator1, Generator2, Generator3, 12920a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath Generator4, Generator5, Generator6, Generator7> Combine( 12930a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath const Generator1& g1, const Generator2& g2, const Generator3& g3, 12940a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath const Generator4& g4, const Generator5& g5, const Generator6& g6, 12950a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath const Generator7& g7) { 12960a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::CartesianProductHolder7<Generator1, Generator2, Generator3, 12970a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath Generator4, Generator5, Generator6, Generator7>( 12980a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath g1, g2, g3, g4, g5, g6, g7); 12990a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 13000a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 13010a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename Generator1, typename Generator2, typename Generator3, 13020a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename Generator4, typename Generator5, typename Generator6, 13030a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename Generator7, typename Generator8> 13040a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::CartesianProductHolder8<Generator1, Generator2, Generator3, 13050a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath Generator4, Generator5, Generator6, Generator7, Generator8> Combine( 13060a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath const Generator1& g1, const Generator2& g2, const Generator3& g3, 13070a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath const Generator4& g4, const Generator5& g5, const Generator6& g6, 13080a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath const Generator7& g7, const Generator8& g8) { 13090a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::CartesianProductHolder8<Generator1, Generator2, Generator3, 13100a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath Generator4, Generator5, Generator6, Generator7, Generator8>( 13110a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath g1, g2, g3, g4, g5, g6, g7, g8); 13120a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 13130a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 13140a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename Generator1, typename Generator2, typename Generator3, 13150a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename Generator4, typename Generator5, typename Generator6, 13160a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename Generator7, typename Generator8, typename Generator9> 13170a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::CartesianProductHolder9<Generator1, Generator2, Generator3, 13180a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath Generator4, Generator5, Generator6, Generator7, Generator8, 13190a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath Generator9> Combine( 13200a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath const Generator1& g1, const Generator2& g2, const Generator3& g3, 13210a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath const Generator4& g4, const Generator5& g5, const Generator6& g6, 13220a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath const Generator7& g7, const Generator8& g8, const Generator9& g9) { 13230a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::CartesianProductHolder9<Generator1, Generator2, Generator3, 13240a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath Generator4, Generator5, Generator6, Generator7, Generator8, Generator9>( 13250a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath g1, g2, g3, g4, g5, g6, g7, g8, g9); 13260a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 13270a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 13280a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathtemplate <typename Generator1, typename Generator2, typename Generator3, 13290a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename Generator4, typename Generator5, typename Generator6, 13300a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename Generator7, typename Generator8, typename Generator9, 13310a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath typename Generator10> 13320a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamathinternal::CartesianProductHolder10<Generator1, Generator2, Generator3, 13330a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, 13340a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath Generator10> Combine( 13350a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath const Generator1& g1, const Generator2& g2, const Generator3& g3, 13360a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath const Generator4& g4, const Generator5& g5, const Generator6& g6, 13370a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath const Generator7& g7, const Generator8& g8, const Generator9& g9, 13380a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath const Generator10& g10) { 13390a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return internal::CartesianProductHolder10<Generator1, Generator2, Generator3, 13400a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, 13410a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath Generator10>( 13420a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath g1, g2, g3, g4, g5, g6, g7, g8, g9, g10); 13430a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} 13440a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath#endif // GTEST_HAS_COMBINE 13450a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 13460a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 13470a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 13480a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath#define TEST_P(test_case_name, test_name) \ 13490a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ 13500a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath : public test_case_name { \ 13510a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath public: \ 13520a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \ 13530a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath virtual void TestBody(); \ 13540a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath private: \ 13550a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath static int AddToRegistry() { \ 13560a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ 13570a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath GetTestCasePatternHolder<test_case_name>(\ 13580a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath #test_case_name, __FILE__, __LINE__)->AddTestPattern(\ 13590a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath #test_case_name, \ 13600a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath #test_name, \ 13610a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath new ::testing::internal::TestMetaFactory< \ 13620a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \ 13630a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath return 0; \ 13640a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath } \ 13650a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath static int gtest_registering_dummy_; \ 13660a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath GTEST_DISALLOW_COPY_AND_ASSIGN_(\ 13670a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \ 13680a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath }; \ 13690a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath int GTEST_TEST_CLASS_NAME_(test_case_name, \ 13700a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath test_name)::gtest_registering_dummy_ = \ 13710a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \ 13720a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() 13730a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 13740a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath#define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \ 13750a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath ::testing::internal::ParamGenerator<test_case_name::ParamType> \ 13760a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \ 13770a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath int gtest_##prefix##test_case_name##_dummy_ = \ 13780a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ 13790a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath GetTestCasePatternHolder<test_case_name>(\ 13800a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath #test_case_name, __FILE__, __LINE__)->AddTestCaseInstantiation(\ 13810a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath #prefix, \ 13820a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath >est_##prefix##test_case_name##_EvalGenerator_, \ 13830a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath __FILE__, __LINE__) 13840a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 13850a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath} // namespace testing 13860a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 13870a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath#endif // GTEST_HAS_PARAM_TEST 13880a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath 13890a58c5c2f73e5047b36f12b5f12b12d6f2a9f69dNarayan Kamath#endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ 1390