PageRenderTime 96ms CodeModel.GetById 22ms app.highlight 63ms RepoModel.GetById 0ms app.codeStats 1ms

/3rd_party/llvm/utils/unittest/googletest/include/gtest/gtest-param-test.h

https://code.google.com/p/softart/
C++ Header | 1426 lines | 1006 code | 100 blank | 320 comment | 1 complexity | 2d8f3a5ce25f77033753012c072aa211 MD5 | raw file
Possible License(s): LGPL-2.1, BSD-3-Clause, JSON, MPL-2.0-no-copyleft-exception, GPL-2.0, GPL-3.0, LGPL-3.0, BSD-2-Clause

Large files files are truncated, but you can click here to view the full file

  1// This file was GENERATED by command:
  2//     pump.py gtest-param-test.h.pump
  3// DO NOT EDIT BY HAND!!!
  4
  5// Copyright 2008, Google Inc.
  6// All rights reserved.
  7//
  8// Redistribution and use in source and binary forms, with or without
  9// modification, are permitted provided that the following conditions are
 10// met:
 11//
 12//     * Redistributions of source code must retain the above copyright
 13// notice, this list of conditions and the following disclaimer.
 14//     * Redistributions in binary form must reproduce the above
 15// copyright notice, this list of conditions and the following disclaimer
 16// in the documentation and/or other materials provided with the
 17// distribution.
 18//     * Neither the name of Google Inc. nor the names of its
 19// contributors may be used to endorse or promote products derived from
 20// this software without specific prior written permission.
 21//
 22// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 23// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 24// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 25// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 26// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 27// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 28// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 29// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 30// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 31// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 32// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 33//
 34// Authors: vladl@google.com (Vlad Losev)
 35//
 36// Macros and functions for implementing parameterized tests
 37// in Google C++ Testing Framework (Google Test)
 38//
 39// This file is generated by a SCRIPT.  DO NOT EDIT BY HAND!
 40//
 41#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
 42#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
 43
 44
 45// Value-parameterized tests allow you to test your code with different
 46// parameters without writing multiple copies of the same test.
 47//
 48// Here is how you use value-parameterized tests:
 49
 50#if 0
 51
 52// To write value-parameterized tests, first you should define a fixture
 53// class. It is usually derived from testing::TestWithParam<T> (see below for
 54// another inheritance scheme that's sometimes useful in more complicated
 55// class hierarchies), where the type of your parameter values.
 56// TestWithParam<T> is itself derived from testing::Test. T can be any
 57// copyable type. If it's a raw pointer, you are responsible for managing the
 58// lifespan of the pointed values.
 59
 60class FooTest : public ::testing::TestWithParam<const char*> {
 61  // You can implement all the usual class fixture members here.
 62};
 63
 64// Then, use the TEST_P macro to define as many parameterized tests
 65// for this fixture as you want. The _P suffix is for "parameterized"
 66// or "pattern", whichever you prefer to think.
 67
 68TEST_P(FooTest, DoesBlah) {
 69  // Inside a test, access the test parameter with the GetParam() method
 70  // of the TestWithParam<T> class:
 71  EXPECT_TRUE(foo.Blah(GetParam()));
 72  ...
 73}
 74
 75TEST_P(FooTest, HasBlahBlah) {
 76  ...
 77}
 78
 79// Finally, you can use INSTANTIATE_TEST_CASE_P to instantiate the test
 80// case with any set of parameters you want. Google Test defines a number
 81// of functions for generating test parameters. They return what we call
 82// (surprise!) parameter generators. Here is a  summary of them, which
 83// are all in the testing namespace:
 84//
 85//
 86//  Range(begin, end [, step]) - Yields values {begin, begin+step,
 87//                               begin+step+step, ...}. The values do not
 88//                               include end. step defaults to 1.
 89//  Values(v1, v2, ..., vN)    - Yields values {v1, v2, ..., vN}.
 90//  ValuesIn(container)        - Yields values from a C-style array, an STL
 91//  ValuesIn(begin,end)          container, or an iterator range [begin, end).
 92//  Bool()                     - Yields sequence {false, true}.
 93//  Combine(g1, g2, ..., gN)   - Yields all combinations (the Cartesian product
 94//                               for the math savvy) of the values generated
 95//                               by the N generators.
 96//
 97// For more details, see comments at the definitions of these functions below
 98// in this file.
 99//
100// The following statement will instantiate tests from the FooTest test case
101// each with parameter values "meeny", "miny", and "moe".
102
103INSTANTIATE_TEST_CASE_P(InstantiationName,
104                        FooTest,
105                        Values("meeny", "miny", "moe"));
106
107// To distinguish different instances of the pattern, (yes, you
108// can instantiate it more then once) the first argument to the
109// INSTANTIATE_TEST_CASE_P macro is a prefix that will be added to the
110// actual test case name. Remember to pick unique prefixes for different
111// instantiations. The tests from the instantiation above will have
112// these names:
113//
114//    * InstantiationName/FooTest.DoesBlah/0 for "meeny"
115//    * InstantiationName/FooTest.DoesBlah/1 for "miny"
116//    * InstantiationName/FooTest.DoesBlah/2 for "moe"
117//    * InstantiationName/FooTest.HasBlahBlah/0 for "meeny"
118//    * InstantiationName/FooTest.HasBlahBlah/1 for "miny"
119//    * InstantiationName/FooTest.HasBlahBlah/2 for "moe"
120//
121// You can use these names in --gtest_filter.
122//
123// This statement will instantiate all tests from FooTest again, each
124// with parameter values "cat" and "dog":
125
126const char* pets[] = {"cat", "dog"};
127INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets));
128
129// The tests from the instantiation above will have these names:
130//
131//    * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat"
132//    * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog"
133//    * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat"
134//    * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog"
135//
136// Please note that INSTANTIATE_TEST_CASE_P will instantiate all tests
137// in the given test case, whether their definitions come before or
138// AFTER the INSTANTIATE_TEST_CASE_P statement.
139//
140// Please also note that generator expressions (including parameters to the
141// generators) are evaluated in InitGoogleTest(), after main() has started.
142// This allows the user on one hand, to adjust generator parameters in order
143// to dynamically determine a set of tests to run and on the other hand,
144// give the user a chance to inspect the generated tests with Google Test
145// reflection API before RUN_ALL_TESTS() is executed.
146//
147// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc
148// for more examples.
149//
150// In the future, we plan to publish the API for defining new parameter
151// generators. But for now this interface remains part of the internal
152// implementation and is subject to change.
153//
154//
155// A parameterized test fixture must be derived from testing::Test and from
156// testing::WithParamInterface<T>, where T is the type of the parameter
157// values. Inheriting from TestWithParam<T> satisfies that requirement because
158// TestWithParam<T> inherits from both Test and WithParamInterface. In more
159// complicated hierarchies, however, it is occasionally useful to inherit
160// separately from Test and WithParamInterface. For example:
161
162class BaseTest : public ::testing::Test {
163  // You can inherit all the usual members for a non-parameterized test
164  // fixture here.
165};
166
167class DerivedTest : public BaseTest, public ::testing::WithParamInterface<int> {
168  // The usual test fixture members go here too.
169};
170
171TEST_F(BaseTest, HasFoo) {
172  // This is an ordinary non-parameterized test.
173}
174
175TEST_P(DerivedTest, DoesBlah) {
176  // GetParam works just the same here as if you inherit from TestWithParam.
177  EXPECT_TRUE(foo.Blah(GetParam()));
178}
179
180#endif  // 0
181
182#include "gtest/internal/gtest-port.h"
183
184#if !GTEST_OS_SYMBIAN
185# include <utility>
186#endif
187
188// scripts/fuse_gtest.py depends on gtest's own header being #included
189// *unconditionally*.  Therefore these #includes cannot be moved
190// inside #if GTEST_HAS_PARAM_TEST.
191#include "gtest/internal/gtest-internal.h"
192#include "gtest/internal/gtest-param-util.h"
193
194#if GTEST_HAS_PARAM_TEST
195
196namespace testing {
197
198// Functions producing parameter generators.
199//
200// Google Test uses these generators to produce parameters for value-
201// parameterized tests. When a parameterized test case is instantiated
202// with a particular generator, Google Test creates and runs tests
203// for each element in the sequence produced by the generator.
204//
205// In the following sample, tests from test case FooTest are instantiated
206// each three times with parameter values 3, 5, and 8:
207//
208// class FooTest : public TestWithParam<int> { ... };
209//
210// TEST_P(FooTest, TestThis) {
211// }
212// TEST_P(FooTest, TestThat) {
213// }
214// INSTANTIATE_TEST_CASE_P(TestSequence, FooTest, Values(3, 5, 8));
215//
216
217// Range() returns generators providing sequences of values in a range.
218//
219// Synopsis:
220// Range(start, end)
221//   - returns a generator producing a sequence of values {start, start+1,
222//     start+2, ..., }.
223// Range(start, end, step)
224//   - returns a generator producing a sequence of values {start, start+step,
225//     start+step+step, ..., }.
226// Notes:
227//   * The generated sequences never include end. For example, Range(1, 5)
228//     returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2)
229//     returns a generator producing {1, 3, 5, 7}.
230//   * start and end must have the same type. That type may be any integral or
231//     floating-point type or a user defined type satisfying these conditions:
232//     * It must be assignable (have operator=() defined).
233//     * It must have operator+() (operator+(int-compatible type) for
234//       two-operand version).
235//     * It must have operator<() defined.
236//     Elements in the resulting sequences will also have that type.
237//   * Condition start < end must be satisfied in order for resulting sequences
238//     to contain any elements.
239//
240template <typename T, typename IncrementT>
241internal::ParamGenerator<T> Range(T start, T end, IncrementT step) {
242  return internal::ParamGenerator<T>(
243      new internal::RangeGenerator<T, IncrementT>(start, end, step));
244}
245
246template <typename T>
247internal::ParamGenerator<T> Range(T start, T end) {
248  return Range(start, end, 1);
249}
250
251// ValuesIn() function allows generation of tests with parameters coming from
252// a container.
253//
254// Synopsis:
255// ValuesIn(const T (&array)[N])
256//   - returns a generator producing sequences with elements from
257//     a C-style array.
258// ValuesIn(const Container& container)
259//   - returns a generator producing sequences with elements from
260//     an STL-style container.
261// ValuesIn(Iterator begin, Iterator end)
262//   - returns a generator producing sequences with elements from
263//     a range [begin, end) defined by a pair of STL-style iterators. These
264//     iterators can also be plain C pointers.
265//
266// Please note that ValuesIn copies the values from the containers
267// passed in and keeps them to generate tests in RUN_ALL_TESTS().
268//
269// Examples:
270//
271// This instantiates tests from test case StringTest
272// each with C-string values of "foo", "bar", and "baz":
273//
274// const char* strings[] = {"foo", "bar", "baz"};
275// INSTANTIATE_TEST_CASE_P(StringSequence, SrtingTest, ValuesIn(strings));
276//
277// This instantiates tests from test case StlStringTest
278// each with STL strings with values "a" and "b":
279//
280// ::std::vector< ::std::string> GetParameterStrings() {
281//   ::std::vector< ::std::string> v;
282//   v.push_back("a");
283//   v.push_back("b");
284//   return v;
285// }
286//
287// INSTANTIATE_TEST_CASE_P(CharSequence,
288//                         StlStringTest,
289//                         ValuesIn(GetParameterStrings()));
290//
291//
292// This will also instantiate tests from CharTest
293// each with parameter values 'a' and 'b':
294//
295// ::std::list<char> GetParameterChars() {
296//   ::std::list<char> list;
297//   list.push_back('a');
298//   list.push_back('b');
299//   return list;
300// }
301// ::std::list<char> l = GetParameterChars();
302// INSTANTIATE_TEST_CASE_P(CharSequence2,
303//                         CharTest,
304//                         ValuesIn(l.begin(), l.end()));
305//
306template <typename ForwardIterator>
307internal::ParamGenerator<
308  typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
309ValuesIn(ForwardIterator begin, ForwardIterator end) {
310  typedef typename ::testing::internal::IteratorTraits<ForwardIterator>
311      ::value_type ParamType;
312  return internal::ParamGenerator<ParamType>(
313      new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end));
314}
315
316template <typename T, size_t N>
317internal::ParamGenerator<T> ValuesIn(const T (&array)[N]) {
318  return ValuesIn(array, array + N);
319}
320
321template <class Container>
322internal::ParamGenerator<typename Container::value_type> ValuesIn(
323    const Container& container) {
324  return ValuesIn(container.begin(), container.end());
325}
326
327} // namespace testing
328
329#include <gtest/internal/gtest-param-util-generated.h>
330
331namespace testing {
332
333// Values() allows generating tests from explicitly specified list of
334// parameters.
335//
336// Synopsis:
337// Values(T v1, T v2, ..., T vN)
338//   - returns a generator producing sequences with elements v1, v2, ..., vN.
339//
340// For example, this instantiates tests from test case BarTest each
341// with values "one", "two", and "three":
342//
343// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three"));
344//
345// This instantiates tests from test case BazTest each with values 1, 2, 3.5.
346// The exact type of values will depend on the type of parameter in BazTest.
347//
348// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5));
349//
350// Currently, Values() supports from 1 to 50 parameters.
351//
352template <typename T1>
353internal::ValueArray1<T1> Values(T1 v1) {
354  return internal::ValueArray1<T1>(v1);
355}
356
357template <typename T1, typename T2>
358internal::ValueArray2<T1, T2> Values(T1 v1, T2 v2) {
359  return internal::ValueArray2<T1, T2>(v1, v2);
360}
361
362template <typename T1, typename T2, typename T3>
363internal::ValueArray3<T1, T2, T3> Values(T1 v1, T2 v2, T3 v3) {
364  return internal::ValueArray3<T1, T2, T3>(v1, v2, v3);
365}
366
367template <typename T1, typename T2, typename T3, typename T4>
368internal::ValueArray4<T1, T2, T3, T4> Values(T1 v1, T2 v2, T3 v3, T4 v4) {
369  return internal::ValueArray4<T1, T2, T3, T4>(v1, v2, v3, v4);
370}
371
372template <typename T1, typename T2, typename T3, typename T4, typename T5>
373internal::ValueArray5<T1, T2, T3, T4, T5> Values(T1 v1, T2 v2, T3 v3, T4 v4,
374    T5 v5) {
375  return internal::ValueArray5<T1, T2, T3, T4, T5>(v1, v2, v3, v4, v5);
376}
377
378template <typename T1, typename T2, typename T3, typename T4, typename T5,
379    typename T6>
380internal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(T1 v1, T2 v2, T3 v3,
381    T4 v4, T5 v5, T6 v6) {
382  return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(v1, v2, v3, v4, v5, v6);
383}
384
385template <typename T1, typename T2, typename T3, typename T4, typename T5,
386    typename T6, typename T7>
387internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(T1 v1, T2 v2, T3 v3,
388    T4 v4, T5 v5, T6 v6, T7 v7) {
389  return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5,
390      v6, v7);
391}
392
393template <typename T1, typename T2, typename T3, typename T4, typename T5,
394    typename T6, typename T7, typename T8>
395internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(T1 v1, T2 v2,
396    T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) {
397  return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4,
398      v5, v6, v7, v8);
399}
400
401template <typename T1, typename T2, typename T3, typename T4, typename T5,
402    typename T6, typename T7, typename T8, typename T9>
403internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2,
404    T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) {
405  return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3,
406      v4, v5, v6, v7, v8, v9);
407}
408
409template <typename T1, typename T2, typename T3, typename T4, typename T5,
410    typename T6, typename T7, typename T8, typename T9, typename T10>
411internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1,
412    T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) {
413  return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1,
414      v2, v3, v4, v5, v6, v7, v8, v9, v10);
415}
416
417template <typename T1, typename T2, typename T3, typename T4, typename T5,
418    typename T6, typename T7, typename T8, typename T9, typename T10,
419    typename T11>
420internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
421    T11> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
422    T10 v10, T11 v11) {
423  return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
424      T11>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11);
425}
426
427template <typename T1, typename T2, typename T3, typename T4, typename T5,
428    typename T6, typename T7, typename T8, typename T9, typename T10,
429    typename T11, typename T12>
430internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
431    T12> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
432    T10 v10, T11 v11, T12 v12) {
433  return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
434      T12>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12);
435}
436
437template <typename T1, typename T2, typename T3, typename T4, typename T5,
438    typename T6, typename T7, typename T8, typename T9, typename T10,
439    typename T11, typename T12, typename T13>
440internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
441    T13> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
442    T10 v10, T11 v11, T12 v12, T13 v13) {
443  return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
444      T12, T13>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13);
445}
446
447template <typename T1, typename T2, typename T3, typename T4, typename T5,
448    typename T6, typename T7, typename T8, typename T9, typename T10,
449    typename T11, typename T12, typename T13, typename T14>
450internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
451    T14> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
452    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) {
453  return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
454      T12, T13, T14>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
455      v14);
456}
457
458template <typename T1, typename T2, typename T3, typename T4, typename T5,
459    typename T6, typename T7, typename T8, typename T9, typename T10,
460    typename T11, typename T12, typename T13, typename T14, typename T15>
461internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
462    T14, T15> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
463    T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) {
464  return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
465      T12, T13, T14, T15>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
466      v13, v14, v15);
467}
468
469template <typename T1, typename T2, typename T3, typename T4, typename T5,
470    typename T6, typename T7, typename T8, typename T9, typename T10,
471    typename T11, typename T12, typename T13, typename T14, typename T15,
472    typename T16>
473internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
474    T14, T15, T16> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
475    T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
476    T16 v16) {
477  return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
478      T12, T13, T14, T15, T16>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
479      v12, v13, v14, v15, v16);
480}
481
482template <typename T1, typename T2, typename T3, typename T4, typename T5,
483    typename T6, typename T7, typename T8, typename T9, typename T10,
484    typename T11, typename T12, typename T13, typename T14, typename T15,
485    typename T16, typename T17>
486internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
487    T14, T15, T16, T17> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
488    T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
489    T16 v16, T17 v17) {
490  return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
491      T12, T13, T14, T15, T16, T17>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
492      v11, v12, v13, v14, v15, v16, v17);
493}
494
495template <typename T1, typename T2, typename T3, typename T4, typename T5,
496    typename T6, typename T7, typename T8, typename T9, typename T10,
497    typename T11, typename T12, typename T13, typename T14, typename T15,
498    typename T16, typename T17, typename T18>
499internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
500    T14, T15, T16, T17, T18> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
501    T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
502    T16 v16, T17 v17, T18 v18) {
503  return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
504      T12, T13, T14, T15, T16, T17, T18>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
505      v10, v11, v12, v13, v14, v15, v16, v17, v18);
506}
507
508template <typename T1, typename T2, typename T3, typename T4, typename T5,
509    typename T6, typename T7, typename T8, typename T9, typename T10,
510    typename T11, typename T12, typename T13, typename T14, typename T15,
511    typename T16, typename T17, typename T18, typename T19>
512internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
513    T14, T15, T16, T17, T18, T19> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
514    T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
515    T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) {
516  return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
517      T12, T13, T14, T15, T16, T17, T18, T19>(v1, v2, v3, v4, v5, v6, v7, v8,
518      v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19);
519}
520
521template <typename T1, typename T2, typename T3, typename T4, typename T5,
522    typename T6, typename T7, typename T8, typename T9, typename T10,
523    typename T11, typename T12, typename T13, typename T14, typename T15,
524    typename T16, typename T17, typename T18, typename T19, typename T20>
525internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
526    T14, T15, T16, T17, T18, T19, T20> Values(T1 v1, T2 v2, T3 v3, T4 v4,
527    T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
528    T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) {
529  return internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
530      T12, T13, T14, T15, T16, T17, T18, T19, T20>(v1, v2, v3, v4, v5, v6, v7,
531      v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20);
532}
533
534template <typename T1, typename T2, typename T3, typename T4, typename T5,
535    typename T6, typename T7, typename T8, typename T9, typename T10,
536    typename T11, typename T12, typename T13, typename T14, typename T15,
537    typename T16, typename T17, typename T18, typename T19, typename T20,
538    typename T21>
539internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
540    T14, T15, T16, T17, T18, T19, T20, T21> Values(T1 v1, T2 v2, T3 v3, T4 v4,
541    T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
542    T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) {
543  return internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
544      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(v1, v2, v3, v4, v5, v6,
545      v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21);
546}
547
548template <typename T1, typename T2, typename T3, typename T4, typename T5,
549    typename T6, typename T7, typename T8, typename T9, typename T10,
550    typename T11, typename T12, typename T13, typename T14, typename T15,
551    typename T16, typename T17, typename T18, typename T19, typename T20,
552    typename T21, typename T22>
553internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
554    T14, T15, T16, T17, T18, T19, T20, T21, T22> Values(T1 v1, T2 v2, T3 v3,
555    T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
556    T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
557    T21 v21, T22 v22) {
558  return internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
559      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(v1, v2, v3, v4,
560      v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
561      v20, v21, v22);
562}
563
564template <typename T1, typename T2, typename T3, typename T4, typename T5,
565    typename T6, typename T7, typename T8, typename T9, typename T10,
566    typename T11, typename T12, typename T13, typename T14, typename T15,
567    typename T16, typename T17, typename T18, typename T19, typename T20,
568    typename T21, typename T22, typename T23>
569internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
570    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> Values(T1 v1, T2 v2,
571    T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
572    T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
573    T21 v21, T22 v22, T23 v23) {
574  return internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
575      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(v1, v2, v3,
576      v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
577      v20, v21, v22, v23);
578}
579
580template <typename T1, typename T2, typename T3, typename T4, typename T5,
581    typename T6, typename T7, typename T8, typename T9, typename T10,
582    typename T11, typename T12, typename T13, typename T14, typename T15,
583    typename T16, typename T17, typename T18, typename T19, typename T20,
584    typename T21, typename T22, typename T23, typename T24>
585internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
586    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Values(T1 v1, T2 v2,
587    T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
588    T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
589    T21 v21, T22 v22, T23 v23, T24 v24) {
590  return internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
591      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(v1, v2,
592      v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18,
593      v19, v20, v21, v22, v23, v24);
594}
595
596template <typename T1, typename T2, typename T3, typename T4, typename T5,
597    typename T6, typename T7, typename T8, typename T9, typename T10,
598    typename T11, typename T12, typename T13, typename T14, typename T15,
599    typename T16, typename T17, typename T18, typename T19, typename T20,
600    typename T21, typename T22, typename T23, typename T24, typename T25>
601internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
602    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Values(T1 v1,
603    T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11,
604    T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19,
605    T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) {
606  return internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
607      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>(v1,
608      v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17,
609      v18, v19, v20, v21, v22, v23, v24, v25);
610}
611
612template <typename T1, typename T2, typename T3, typename T4, typename T5,
613    typename T6, typename T7, typename T8, typename T9, typename T10,
614    typename T11, typename T12, typename T13, typename T14, typename T15,
615    typename T16, typename T17, typename T18, typename T19, typename T20,
616    typename T21, typename T22, typename T23, typename T24, typename T25,
617    typename T26>
618internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
619    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
620    T26> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
621    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
622    T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
623    T26 v26) {
624  return internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
625      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
626      T26>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15,
627      v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26);
628}
629
630template <typename T1, typename T2, typename T3, typename T4, typename T5,
631    typename T6, typename T7, typename T8, typename T9, typename T10,
632    typename T11, typename T12, typename T13, typename T14, typename T15,
633    typename T16, typename T17, typename T18, typename T19, typename T20,
634    typename T21, typename T22, typename T23, typename T24, typename T25,
635    typename T26, typename T27>
636internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
637    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
638    T27> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
639    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
640    T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
641    T26 v26, T27 v27) {
642  return internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
643      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
644      T26, T27>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14,
645      v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27);
646}
647
648template <typename T1, typename T2, typename T3, typename T4, typename T5,
649    typename T6, typename T7, typename T8, typename T9, typename T10,
650    typename T11, typename T12, typename T13, typename T14, typename T15,
651    typename T16, typename T17, typename T18, typename T19, typename T20,
652    typename T21, typename T22, typename T23, typename T24, typename T25,
653    typename T26, typename T27, typename T28>
654internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
655    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
656    T28> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
657    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
658    T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
659    T26 v26, T27 v27, T28 v28) {
660  return internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
661      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
662      T26, T27, T28>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
663      v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27,
664      v28);
665}
666
667template <typename T1, typename T2, typename T3, typename T4, typename T5,
668    typename T6, typename T7, typename T8, typename T9, typename T10,
669    typename T11, typename T12, typename T13, typename T14, typename T15,
670    typename T16, typename T17, typename T18, typename T19, typename T20,
671    typename T21, typename T22, typename T23, typename T24, typename T25,
672    typename T26, typename T27, typename T28, typename T29>
673internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
674    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
675    T29> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
676    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
677    T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
678    T26 v26, T27 v27, T28 v28, T29 v29) {
679  return internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
680      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
681      T26, T27, T28, T29>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
682      v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26,
683      v27, v28, v29);
684}
685
686template <typename T1, typename T2, typename T3, typename T4, typename T5,
687    typename T6, typename T7, typename T8, typename T9, typename T10,
688    typename T11, typename T12, typename T13, typename T14, typename T15,
689    typename T16, typename T17, typename T18, typename T19, typename T20,
690    typename T21, typename T22, typename T23, typename T24, typename T25,
691    typename T26, typename T27, typename T28, typename T29, typename T30>
692internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
693    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
694    T29, T30> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
695    T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
696    T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
697    T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) {
698  return internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
699      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
700      T26, T27, T28, T29, T30>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
701      v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25,
702      v26, v27, v28, v29, v30);
703}
704
705template <typename T1, typename T2, typename T3, typename T4, typename T5,
706    typename T6, typename T7, typename T8, typename T9, typename T10,
707    typename T11, typename T12, typename T13, typename T14, typename T15,
708    typename T16, typename T17, typename T18, typename T19, typename T20,
709    typename T21, typename T22, typename T23, typename T24, typename T25,
710    typename T26, typename T27, typename T28, typename T29, typename T30,
711    typename T31>
712internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
713    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
714    T29, T30, T31> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
715    T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
716    T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
717    T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) {
718  return internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
719      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
720      T26, T27, T28, T29, T30, T31>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
721      v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24,
722      v25, v26, v27, v28, v29, v30, v31);
723}
724
725template <typename T1, typename T2, typename T3, typename T4, typename T5,
726    typename T6, typename T7, typename T8, typename T9, typename T10,
727    typename T11, typename T12, typename T13, typename T14, typename T15,
728    typename T16, typename T17, typename T18, typename T19, typename T20,
729    typename T21, typename T22, typename T23, typename T24, typename T25,
730    typename T26, typename T27, typename T28, typename T29, typename T30,
731    typename T31, typename T32>
732internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
733    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
734    T29, T30, T31, T32> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
735    T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
736    T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
737    T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
738    T32 v32) {
739  return internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
740      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
741      T26, T27, T28, T29, T30, T31, T32>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
742      v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
743      v24, v25, v26, v27, v28, v29, v30, v31, v32);
744}
745
746template <typename T1, typename T2, typename T3, typename T4, typename T5,
747    typename T6, typename T7, typename T8, typename T9, typename T10,
748    typename T11, typename T12, typename T13, typename T14, typename T15,
749    typename T16, typename T17, typename T18, typename T19, typename T20,
750    typename T21, typename T22, typename T23, typename T24, typename T25,
751    typename T26, typename T27, typename T28, typename T29, typename T30,
752    typename T31, typename T32, typename T33>
753internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
754    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
755    T29, T30, T31, T32, T33> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
756    T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
757    T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
758    T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
759    T32 v32, T33 v33) {
760  return internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
761      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
762      T26, T27, T28, T29, T30, T31, T32, T33>(v1, v2, v3, v4, v5, v6, v7, v8,
763      v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
764      v24, v25, v26, v27, v28, v29, v30, v31, v32, v33);
765}
766
767template <typename T1, typename T2, typename T3, typename T4, typename T5,
768    typename T6, typename T7, typename T8, typename T9, typename T10,
769    typename T11, typename T12, typename T13, typename T14, typename T15,
770    typename T16, typename T17, typename T18, typename T19, typename T20,
771    typename T21, typename T22, typename T23, typename T24, typename T25,
772    typename T26, typename T27, typename T28, typename T29, typename T30,
773    typename T31, typename T32, typename T33, typename T34>
774internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
775    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
776    T29, T30, T31, T32, T33, T34> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
777    T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
778    T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22,
779    T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30,
780    T31 v31, T32 v32, T33 v33, T34 v34) {
781  return internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
782      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
783      T26, T27, T28, T29, T30, T31, T32, T33, T34>(v1, v2, v3, v4, v5, v6, v7,
784      v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22,
785      v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34);
786}
787
788template <typename T1, typename T2, typename T3, typename T4, typename T5,
789    typename T6, typename T7, typename T8, typename T9, typename T10,
790    typename T11, typename T12, typename T13, typename T14, typename T15,
791    typename T16, typename T17, typename T18, typename T19, typename T20,
792    typename T21, typename T22, typename T23, typename T24, typename T25,
793    typename T26, typename T27, typename T28, typename T29, typename T30,
794    typename T31, typename T32, typename T33, typename T34, typename T35>
795internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
796    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
797    T29, T30, T31, T32, T33, T34, T35> Values(T1 v1, T2 v2, T3 v3, T4 v4,
798    T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
799    T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
800    T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
801    T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) {
802  return internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
803      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
804      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35>(v1, v2, v3, v4, v5, v6,
805      v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21,
806      v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35);
807}
808
809template <typename T1, typename T2, typename T3, typename T4, typename T5,
810    typename T6, typename T7, typename T8, typename T9, typename T10,
811    typename T11, typename T12, typename T13, typename T14, typename T15,
812    typename T16, typename T17, typename T18, typename T19, typename T20,
813    typename T21, typename T22, typename T23, typename T24, typename T25,
814    typename T26, typename T27, typename T28, typename T29, typename T30,
815    typename T31, typename T32, typename T33, typename T34, typename T35,
816    typename T36>
817internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
818    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
819    T29, T30, T31, T32, T33, T34, T35, T36> Values(T1 v1, T2 v2, T3 v3, T4 v4,
820    T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
821    T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
822    T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
823    T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) {
824  return internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
825      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
826      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36>(v1, v2, v3, v4,
827      v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
828      v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
829      v34, v35, v36);
830}
831
832template <typename T1, typename T2, typename T3, typename T4, typename T5,
833    typename T6, typename T7, typename T8, typename T9, typename T10,
834    typename T11, typename T12, typename T13, typename T14, typename T15,
835    typename T16, typename T17, typename T18, typename T19, typename T20,
836    typename T21, typename T22, typename T23, typename T24, typename T25,
837    typename T26, typename T27, typename T28, typename T29, typename T30,
838    typename T31, typename T32, typename T33, typename T34, typename T35,
839    typename T36, typename T37>
840internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
841    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
842    T29, T30, T31, T32, T33, T34, T35, T36, T37> Values(T1 v1, T2 v2, T3 v3,
843    T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
844    T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
845    T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
846    T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
847    T37 v37) {
848  return internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
849      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
850      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>(v1, v2, v3,
851      v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
852      v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
853      v34, v35, v36, v37);
854}
855
856template <typename T1, typename T2, typename T3, typename T4, typename T5,
857    typename T6, typename T7, typename T8, typename T9, typename T10,
858    typename T11, typename T12, typename T13, typename T14, typename T15,
859    typename T16, typename T17, typename T18, typename T19, typename T20,
860    typename T21, typename T22, typename T23, typename T24, typename T25,
861    typename T26, typename T27, typename T28, typename T29, typename T30,
862    typename T31, typename T32, typename T33, typename T34, typename T35,
863    typename T36, typename T37, typename T38>
864internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
865    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
866    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Values(T1 v1, T2 v2,
867    T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
868    T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
869    T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
870    T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
871    T37 v37, T38 v38) {
872  return internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
873      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
874      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>(v1, v2,
875      v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18,
876      v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32,
877      v33, v34, v35, v36, v37, v38);
878}
879
880template <typename T1, typename T2, typename T3, typename T4, typename T5,
881    typename T6, typename T7, typename T8, typename T9, typename T10,
882    typename T11, typename T12, typename T13, typename T14, typename T15,
883    typename T16, typename T17, typename T18, typename T19, typename T20,
884    typename T21, typename T22, typename T23, typename T24, typename T25,
885    typename T26, typename T27, typename T28, typename T29, typename T30,
886    typename T31, typename T32, typename T33, typename T34, typename T35,
887    typename T36, typename T37, typename T38, typename T39>
888internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
889    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
890    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Values(T1 v1, T2 v2,
891    T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
892    T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
893    T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
894    T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
895    T37 v37, T38 v38, T39 v39) {
896  return internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
897      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
898      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>(v1,
899      v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17,
900      v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31,
901      v32, v33, v34, v35, v36, v37, v38, v39);
902}
903
904template <typename T1, typename T2, typename T3, typename T4, typename T5,
905    typename T6, typename T7, typename T8, typename T9, typename T10,
906    typename T11, typename T12, typename T13, typename T14, typename T15,
907    typename T16, typename T17, typename T18, typename T19, typename T20,
908    typename T21, typename T22, typename T23, typename T24, typename T25,
909    typename T26, typename T27, typename T28, typename T29, typename T30,
910    typename T31, typename T32, typename T33, typename T34, typename T35,
911    typename T36, typename T37, typename T38, typename T39, typename T40>
912internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
913    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
914    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Values(T1 v1,
915    T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11,
916    T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19,
917    T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27,
918    T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35,
919    T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) {
920  return internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
921      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
922      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
923      T40>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15,
924      v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29,
925      v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40);
926}
927
928template <typename T1, typename T2, typename T3, typename T4, typename T5,
929    typename T6, typename T7, typename T8, typename T9, typename T10,
930    typename T11, typename T12, typename T13, typename T14, typename T15,
931    typename T16, typename T17, typename T18, typename T19, typename T20,
932    typename T21, typename T22, typename T23, typename T24, typename T25,
933    typename T26, typename T27, typename T28, typename T29, typename T30,
934    typename T31, typename T32, typename T33, typename T34, typename T35,
935    typename T36, typename T37, typename T38, typename T39, typename T40,
936    typename T41>
937internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
938    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
939    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
940    T41> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
941    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
942    T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
943    T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
944    T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) {
945  return internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
946      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
947      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
948      T40, T41>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14,
949      v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28,
950      v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41);
951}
952
953template <typename T1, typename T2, typename T3, typename T4, typename T5,
954    typename T6, typename T7, typename T8, typename T9, typename T10,
955    typename T11, typename T12, typename T13, typename T14, typename T15,
956    typename T16, typename T17, typename T18, typename T19, typename T20,
957    typename T21, typename T22, typename T23, typename T24, typename T25,
958    typename T26, typename T27, typename T28, typename T29, typename T30,
959    typename T31, typename T32, typename T33, typename T34, typename T35,
960    typename T36, typename T37, typename T38, typename T39, typename T40,
961    typename T41, typename T42>
962internal::ValueArray42<T1, 

Large files files are truncated, but you can click here to view the full file