41 #ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ 
   42 #define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ 
   60 class FooTest : 
public ::testing::TestWithParam<const char*> {
 
   68 TEST_P(FooTest, DoesBlah) {
 
   75 TEST_P(FooTest, HasBlahBlah) {
 
  103 INSTANTIATE_TEST_CASE_P(InstantiationName,
 
  105                         Values(
"meeny", 
"miny", 
"moe"));
 
  126 const char* pets[] = {
"cat", 
"dog"};
 
  127 INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets));
 
  167 class DerivedTest : 
public BaseTest, 
public ::testing::WithParamInterface<int> {
 
  171 TEST_F(BaseTest, HasFoo) {
 
  175 TEST_P(DerivedTest, DoesBlah) {
 
  184 #if !GTEST_OS_SYMBIAN 
  195 #if GTEST_HAS_PARAM_TEST 
  241 template <
typename T, 
typename IncrementT>
 
  242 internal::ParamGenerator<T> Range(
T start, 
T end, IncrementT step) {
 
  243   return internal::ParamGenerator<T>(
 
  244       new internal::RangeGenerator<T, IncrementT>(start, end, step));
 
  247 template <
typename T>
 
  248 internal::ParamGenerator<T> Range(
T start, 
T end) {
 
  249   return Range(start, end, 1);
 
  307 template <
typename ForwardIterator>
 
  308 internal::ParamGenerator<
 
  310 ValuesIn(ForwardIterator begin, ForwardIterator end) {
 
  311   typedef typename ::testing::internal::IteratorTraits<ForwardIterator>
 
  313   return internal::ParamGenerator<ParamType>(
 
  314       new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end));
 
  317 template <
typename T, 
size_t N>
 
  318 internal::ParamGenerator<T> ValuesIn(
const T (&array)[
N]) {
 
  319   return ValuesIn(array, array + N);
 
  322 template <
class Container>
 
  323 internal::ParamGenerator<typename Container::value_type> ValuesIn(
 
  324     const Container& container) {
 
  325   return ValuesIn(container.begin(), container.end());
 
  347 template <
typename T1>
 
  348 internal::ValueArray1<T1> Values(T1 v1) {
 
  349   return internal::ValueArray1<T1>(v1);
 
  352 template <
typename T1, 
typename T2>
 
  353 internal::ValueArray2<T1, T2> Values(T1 v1, T2 v2) {
 
  354   return internal::ValueArray2<T1, T2>(v1, v2);
 
  357 template <
typename T1, 
typename T2, 
typename T3>
 
  358 internal::ValueArray3<T1, T2, T3> Values(T1 v1, T2 v2, T3 v3) {
 
  359   return internal::ValueArray3<T1, T2, T3>(v1, v2, v3);
 
  362 template <
typename T1, 
typename T2, 
typename T3, 
typename T4>
 
  363 internal::ValueArray4<T1, T2, T3, T4> Values(T1 v1, T2 v2, T3 v3, T4 v4) {
 
  364   return internal::ValueArray4<T1, T2, T3, T4>(v1, v2, v3, v4);
 
  367 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5>
 
  368 internal::ValueArray5<T1, T2, T3, T4, T5> Values(T1 v1, T2 v2, T3 v3, T4 v4,
 
  370   return internal::ValueArray5<T1, T2, T3, T4, T5>(v1, v2, v3, v4, v5);
 
  373 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  375 internal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(T1 v1, T2 v2, T3 v3,
 
  376     T4 v4, T5 v5, T6 v6) {
 
  377   return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(v1, v2, v3, v4, v5, v6);
 
  380 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  381     typename T6, 
typename T7>
 
  382 internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(T1 v1, T2 v2, T3 v3,
 
  383     T4 v4, T5 v5, T6 v6, T7 v7) {
 
  384   return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5,
 
  388 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  389     typename T6, 
typename T7, 
typename T8>
 
  390 internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(T1 v1, T2 v2,
 
  391     T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) {
 
  392   return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4,
 
  396 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  397     typename T6, 
typename T7, 
typename T8, 
typename T9>
 
  398 internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2,
 
  399     T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) {
 
  400   return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3,
 
  401       v4, v5, v6, v7, v8, v9);
 
  404 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  405     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10>
 
  406 internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1,
 
  407     T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) {
 
  408   return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1,
 
  409       v2, v3, v4, v5, v6, v7, v8, v9, v10);
 
  412 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  413     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  415 internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
 
  416     T11> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
 
  418   return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
 
  419       T11>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11);
 
  422 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  423     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  424     typename T11, 
typename T12>
 
  425 internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  426     T12> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
 
  427     T10 v10, T11 v11, T12 v12) {
 
  428   return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  429       T12>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12);
 
  432 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  433     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  434     typename T11, 
typename T12, 
typename T13>
 
  435 internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
 
  436     T13> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
 
  437     T10 v10, T11 v11, T12 v12, T13 v13) {
 
  438   return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  439       T12, T13>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13);
 
  442 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  443     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  444     typename T11, 
typename T12, 
typename T13, 
typename T14>
 
  445 internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  446     T14> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
 
  447     T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) {
 
  448   return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  449       T12, T13, T14>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
 
  453 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  454     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  455     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15>
 
  456 internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  457     T14, T15> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
 
  458     T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) {
 
  459   return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  460       T12, T13, T14, T15>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
 
  464 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  465     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  466     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  468 internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  469     T14, T15, T16> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
 
  470     T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
 
  472   return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  473       T12, T13, T14, T15, T16>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
 
  474       v12, v13, v14, v15, v16);
 
  477 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  478     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  479     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  480     typename T16, 
typename T17>
 
  481 internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  482     T14, T15, T16, T17> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
 
  483     T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
 
  485   return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  486       T12, T13, T14, T15, T16, T17>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
 
  487       v11, v12, v13, v14, v15, v16, v17);
 
  490 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  491     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  492     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  493     typename T16, 
typename T17, 
typename T18>
 
  494 internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  495     T14, T15, T16, T17, T18> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
 
  496     T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
 
  497     T16 v16, T17 v17, T18 v18) {
 
  498   return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  499       T12, T13, T14, T15, T16, T17, T18>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
 
  500       v10, v11, v12, v13, v14, v15, v16, v17, v18);
 
  503 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  504     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  505     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  506     typename T16, 
typename T17, 
typename T18, 
typename T19>
 
  507 internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  508     T14, T15, T16, T17, T18, T19> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
 
  509     T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
 
  510     T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) {
 
  511   return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  512       T12, T13, T14, T15, T16, T17, T18, T19>(v1, v2, v3, v4, v5, v6, v7, v8,
 
  513       v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19);
 
  516 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  517     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  518     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  519     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20>
 
  520 internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  521     T14, T15, T16, T17, T18, T19, T20> Values(T1 v1, T2 v2, T3 v3, T4 v4,
 
  522     T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
 
  523     T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) {
 
  524   return internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  525       T12, T13, T14, T15, T16, T17, T18, T19, T20>(v1, v2, v3, v4, v5, v6, v7,
 
  526       v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20);
 
  529 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  530     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  531     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  532     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
  534 internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  535     T14, T15, T16, T17, T18, T19, T20, T21> Values(T1 v1, T2 v2, T3 v3, T4 v4,
 
  536     T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
 
  537     T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) {
 
  538   return internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  539       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(v1, v2, v3, v4, v5, v6,
 
  540       v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21);
 
  543 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  544     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  545     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  546     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
  547     typename T21, 
typename T22>
 
  548 internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  549     T14, T15, T16, T17, T18, T19, T20, T21, T22> Values(T1 v1, T2 v2, T3 v3,
 
  550     T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
 
  551     T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
 
  553   return internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  554       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(v1, v2, v3, v4,
 
  555       v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
 
  559 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  560     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  561     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  562     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
  563     typename T21, 
typename T22, 
typename T23>
 
  564 internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  565     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> Values(T1 v1, T2 v2,
 
  566     T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
 
  567     T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
 
  568     T21 v21, T22 v22, T23 v23) {
 
  569   return internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  570       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(v1, v2, v3,
 
  571       v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
 
  575 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  576     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  577     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  578     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
  579     typename T21, 
typename T22, 
typename T23, 
typename T24>
 
  580 internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  581     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Values(T1 v1, T2 v2,
 
  582     T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
 
  583     T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
 
  584     T21 v21, T22 v22, T23 v23, T24 v24) {
 
  585   return internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  586       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(v1, v2,
 
  587       v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18,
 
  588       v19, v20, v21, v22, v23, v24);
 
  591 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  592     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  593     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  594     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
  595     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25>
 
  596 internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  597     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Values(T1 v1,
 
  598     T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11,
 
  599     T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19,
 
  600     T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) {
 
  601   return internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  602       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>(v1,
 
  603       v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17,
 
  604       v18, v19, v20, v21, v22, v23, v24, v25);
 
  607 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  608     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  609     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  610     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
  611     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
  613 internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  614     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
  615     T26> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
 
  616     T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
 
  617     T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
 
  619   return internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  620       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
  621       T26>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15,
 
  622       v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26);
 
  625 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  626     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  627     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  628     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
  629     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
  630     typename T26, 
typename T27>
 
  631 internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  632     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
 
  633     T27> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
 
  634     T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
 
  635     T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
 
  637   return internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  638       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
  639       T26, T27>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14,
 
  640       v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27);
 
  643 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  644     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  645     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  646     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
  647     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
  648     typename T26, 
typename T27, 
typename T28>
 
  649 internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  650     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
 
  651     T28> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
 
  652     T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
 
  653     T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
 
  654     T26 v26, T27 v27, T28 v28) {
 
  655   return internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  656       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
  657       T26, T27, T28>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
 
  658       v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27,
 
  662 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  663     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  664     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  665     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
  666     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
  667     typename T26, 
typename T27, 
typename T28, 
typename T29>
 
  668 internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  669     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
 
  670     T29> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
 
  671     T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
 
  672     T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
 
  673     T26 v26, T27 v27, T28 v28, T29 v29) {
 
  674   return internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  675       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
  676       T26, T27, T28, T29>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
 
  677       v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26,
 
  681 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  682     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  683     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  684     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
  685     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
  686     typename T26, 
typename T27, 
typename T28, 
typename T29, 
typename T30>
 
  687 internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  688     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
 
  689     T29, T30> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
 
  690     T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
 
  691     T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
 
  692     T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) {
 
  693   return internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  694       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
  695       T26, T27, T28, T29, T30>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
 
  696       v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25,
 
  697       v26, v27, v28, v29, v30);
 
  700 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  701     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  702     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  703     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
  704     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
  705     typename T26, 
typename T27, 
typename T28, 
typename T29, 
typename T30,
 
  707 internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  708     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
 
  709     T29, T30, T31> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
 
  710     T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
 
  711     T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
 
  712     T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) {
 
  713   return internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  714       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
  715       T26, T27, T28, T29, T30, T31>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
 
  716       v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24,
 
  717       v25, v26, v27, v28, v29, v30, v31);
 
  720 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  721     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  722     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  723     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
  724     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
  725     typename T26, 
typename T27, 
typename T28, 
typename T29, 
typename T30,
 
  726     typename T31, 
typename T32>
 
  727 internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  728     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
 
  729     T29, T30, T31, T32> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
 
  730     T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
 
  731     T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
 
  732     T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
 
  734   return internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  735       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
  736       T26, T27, T28, T29, T30, T31, T32>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
 
  737       v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
 
  738       v24, v25, v26, v27, v28, v29, v30, v31, v32);
 
  741 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  742     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  743     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  744     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
  745     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
  746     typename T26, 
typename T27, 
typename T28, 
typename T29, 
typename T30,
 
  747     typename T31, 
typename T32, 
typename T33>
 
  748 internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  749     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
 
  750     T29, T30, T31, T32, T33> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
 
  751     T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
 
  752     T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
 
  753     T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
 
  755   return internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  756       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
  757       T26, T27, T28, T29, T30, T31, T32, T33>(v1, v2, v3, v4, v5, v6, v7, v8,
 
  758       v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
 
  759       v24, v25, v26, v27, v28, v29, v30, v31, v32, v33);
 
  762 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  763     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  764     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  765     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
  766     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
  767     typename T26, 
typename T27, 
typename T28, 
typename T29, 
typename T30,
 
  768     typename T31, 
typename T32, 
typename T33, 
typename T34>
 
  769 internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  770     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
 
  771     T29, T30, T31, T32, T33, T34> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
 
  772     T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
 
  773     T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22,
 
  774     T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30,
 
  775     T31 v31, T32 v32, T33 v33, T34 v34) {
 
  776   return internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  777       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
  778       T26, T27, T28, T29, T30, T31, T32, T33, T34>(v1, v2, v3, v4, v5, v6, v7,
 
  779       v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22,
 
  780       v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34);
 
  783 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  784     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  785     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  786     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
  787     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
  788     typename T26, 
typename T27, 
typename T28, 
typename T29, 
typename T30,
 
  789     typename T31, 
typename T32, 
typename T33, 
typename T34, 
typename T35>
 
  790 internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  791     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
 
  792     T29, T30, T31, T32, T33, T34, T35> Values(T1 v1, T2 v2, T3 v3, T4 v4,
 
  793     T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
 
  794     T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
 
  795     T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
 
  796     T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) {
 
  797   return internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  798       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
  799       T26, T27, T28, T29, T30, T31, T32, T33, T34, T35>(v1, v2, v3, v4, v5, v6,
 
  800       v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21,
 
  801       v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35);
 
  804 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  805     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  806     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  807     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
  808     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
  809     typename T26, 
typename T27, 
typename T28, 
typename T29, 
typename T30,
 
  810     typename T31, 
typename T32, 
typename T33, 
typename T34, 
typename T35,
 
  812 internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  813     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
 
  814     T29, T30, T31, T32, T33, T34, T35, T36> Values(T1 v1, T2 v2, T3 v3, T4 v4,
 
  815     T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
 
  816     T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
 
  817     T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
 
  818     T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) {
 
  819   return internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  820       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
  821       T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36>(v1, v2, v3, v4,
 
  822       v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
 
  823       v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
 
  827 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  828     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  829     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  830     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
  831     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
  832     typename T26, 
typename T27, 
typename T28, 
typename T29, 
typename T30,
 
  833     typename T31, 
typename T32, 
typename T33, 
typename T34, 
typename T35,
 
  834     typename T36, 
typename T37>
 
  835 internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  836     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
 
  837     T29, T30, T31, T32, T33, T34, T35, T36, T37> Values(T1 v1, T2 v2, T3 v3,
 
  838     T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
 
  839     T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
 
  840     T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
 
  841     T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
 
  843   return internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  844       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
  845       T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>(v1, v2, v3,
 
  846       v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
 
  847       v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
 
  851 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  852     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  853     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  854     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
  855     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
  856     typename T26, 
typename T27, 
typename T28, 
typename T29, 
typename T30,
 
  857     typename T31, 
typename T32, 
typename T33, 
typename T34, 
typename T35,
 
  858     typename T36, 
typename T37, 
typename T38>
 
  859 internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  860     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
 
  861     T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Values(T1 v1, T2 v2,
 
  862     T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
 
  863     T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
 
  864     T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
 
  865     T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
 
  867   return internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  868       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
  869       T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>(v1, v2,
 
  870       v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18,
 
  871       v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32,
 
  872       v33, v34, v35, v36, v37, v38);
 
  875 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  876     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  877     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  878     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
  879     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
  880     typename T26, 
typename T27, 
typename T28, 
typename T29, 
typename T30,
 
  881     typename T31, 
typename T32, 
typename T33, 
typename T34, 
typename T35,
 
  882     typename T36, 
typename T37, 
typename T38, 
typename T39>
 
  883 internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  884     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
 
  885     T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Values(T1 v1, T2 v2,
 
  886     T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
 
  887     T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
 
  888     T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
 
  889     T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
 
  890     T37 v37, T38 v38, T39 v39) {
 
  891   return internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  892       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
  893       T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>(v1,
 
  894       v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17,
 
  895       v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31,
 
  896       v32, v33, v34, v35, v36, v37, v38, v39);
 
  899 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  900     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  901     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  902     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
  903     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
  904     typename T26, 
typename T27, 
typename T28, 
typename T29, 
typename T30,
 
  905     typename T31, 
typename T32, 
typename T33, 
typename T34, 
typename T35,
 
  906     typename T36, 
typename T37, 
typename T38, 
typename T39, 
typename T40>
 
  907 internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  908     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
 
  909     T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Values(T1 v1,
 
  910     T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11,
 
  911     T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19,
 
  912     T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27,
 
  913     T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35,
 
  914     T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) {
 
  915   return internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  916       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
  917       T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
 
  918       T40>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15,
 
  919       v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29,
 
  920       v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40);
 
  923 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  924     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  925     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  926     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
  927     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
  928     typename T26, 
typename T27, 
typename T28, 
typename T29, 
typename T30,
 
  929     typename T31, 
typename T32, 
typename T33, 
typename T34, 
typename T35,
 
  930     typename T36, 
typename T37, 
typename T38, 
typename T39, 
typename T40,
 
  932 internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  933     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
 
  934     T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
 
  935     T41> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
 
  936     T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
 
  937     T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
 
  938     T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
 
  939     T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) {
 
  940   return internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  941       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
  942       T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
 
  943       T40, T41>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14,
 
  944       v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28,
 
  945       v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41);
 
  948 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  949     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  950     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  951     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
  952     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
  953     typename T26, 
typename T27, 
typename T28, 
typename T29, 
typename T30,
 
  954     typename T31, 
typename T32, 
typename T33, 
typename T34, 
typename T35,
 
  955     typename T36, 
typename T37, 
typename T38, 
typename T39, 
typename T40,
 
  956     typename T41, 
typename T42>
 
  957 internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  958     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
 
  959     T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
 
  960     T42> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
 
  961     T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
 
  962     T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
 
  963     T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
 
  964     T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
 
  966   return internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  967       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
  968       T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
 
  969       T40, T41, T42>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
 
  970       v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27,
 
  971       v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41,
 
  975 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
  976     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
  977     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
  978     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
  979     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
  980     typename T26, 
typename T27, 
typename T28, 
typename T29, 
typename T30,
 
  981     typename T31, 
typename T32, 
typename T33, 
typename T34, 
typename T35,
 
  982     typename T36, 
typename T37, 
typename T38, 
typename T39, 
typename T40,
 
  983     typename T41, 
typename T42, 
typename T43>
 
  984 internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
  985     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
 
  986     T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
 
  987     T43> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
 
  988     T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
 
  989     T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
 
  990     T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
 
  991     T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
 
  993   return internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
  994       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
  995       T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
 
  996       T40, T41, T42, T43>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
 
  997       v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26,
 
  998       v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40,
 
 1002 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
 1003     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
 1004     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
 1005     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
 1006     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
 1007     typename T26, 
typename T27, 
typename T28, 
typename T29, 
typename T30,
 
 1008     typename T31, 
typename T32, 
typename T33, 
typename T34, 
typename T35,
 
 1009     typename T36, 
typename T37, 
typename T38, 
typename T39, 
typename T40,
 
 1010     typename T41, 
typename T42, 
typename T43, 
typename T44>
 
 1011 internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
 1012     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
 
 1013     T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
 
 1014     T44> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
 
 1015     T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
 
 1016     T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
 
 1017     T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
 
 1018     T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
 
 1019     T42 v42, T43 v43, T44 v44) {
 
 1020   return internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
 1021       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
 1022       T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
 
 1023       T40, T41, T42, T43, T44>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
 
 1024       v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25,
 
 1025       v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39,
 
 1026       v40, v41, v42, v43, v44);
 
 1029 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
 1030     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
 1031     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
 1032     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
 1033     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
 1034     typename T26, 
typename T27, 
typename T28, 
typename T29, 
typename T30,
 
 1035     typename T31, 
typename T32, 
typename T33, 
typename T34, 
typename T35,
 
 1036     typename T36, 
typename T37, 
typename T38, 
typename T39, 
typename T40,
 
 1037     typename T41, 
typename T42, 
typename T43, 
typename T44, 
typename T45>
 
 1038 internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
 1039     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
 
 1040     T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
 
 1041     T44, T45> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
 
 1042     T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
 
 1043     T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
 
 1044     T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32,
 
 1045     T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40,
 
 1046     T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) {
 
 1047   return internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
 1048       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
 1049       T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
 
 1050       T40, T41, T42, T43, T44, T45>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
 
 1051       v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24,
 
 1052       v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38,
 
 1053       v39, v40, v41, v42, v43, v44, v45);
 
 1056 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
 1057     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
 1058     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
 1059     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
 1060     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
 1061     typename T26, 
typename T27, 
typename T28, 
typename T29, 
typename T30,
 
 1062     typename T31, 
typename T32, 
typename T33, 
typename T34, 
typename T35,
 
 1063     typename T36, 
typename T37, 
typename T38, 
typename T39, 
typename T40,
 
 1064     typename T41, 
typename T42, 
typename T43, 
typename T44, 
typename T45,
 
 1066 internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
 1067     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
 
 1068     T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
 
 1069     T44, T45, T46> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
 
 1070     T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
 
 1071     T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
 
 1072     T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
 
 1073     T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
 
 1074     T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) {
 
 1075   return internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
 1076       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
 1077       T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
 
 1078       T40, T41, T42, T43, T44, T45, T46>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
 
 1079       v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
 
 1080       v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37,
 
 1081       v38, v39, v40, v41, v42, v43, v44, v45, v46);
 
 1084 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
 1085     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
 1086     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
 1087     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
 1088     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
 1089     typename T26, 
typename T27, 
typename T28, 
typename T29, 
typename T30,
 
 1090     typename T31, 
typename T32, 
typename T33, 
typename T34, 
typename T35,
 
 1091     typename T36, 
typename T37, 
typename T38, 
typename T39, 
typename T40,
 
 1092     typename T41, 
typename T42, 
typename T43, 
typename T44, 
typename T45,
 
 1093     typename T46, 
typename T47>
 
 1094 internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
 1095     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
 
 1096     T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
 
 1097     T44, T45, T46, T47> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
 
 1098     T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
 
 1099     T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
 
 1100     T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
 
 1101     T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
 
 1102     T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) {
 
 1103   return internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
 1104       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
 1105       T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
 
 1106       T40, T41, T42, T43, T44, T45, T46, T47>(v1, v2, v3, v4, v5, v6, v7, v8,
 
 1107       v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
 
 1108       v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37,
 
 1109       v38, v39, v40, v41, v42, v43, v44, v45, v46, v47);
 
 1112 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
 1113     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
 1114     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
 1115     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
 1116     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
 1117     typename T26, 
typename T27, 
typename T28, 
typename T29, 
typename T30,
 
 1118     typename T31, 
typename T32, 
typename T33, 
typename T34, 
typename T35,
 
 1119     typename T36, 
typename T37, 
typename T38, 
typename T39, 
typename T40,
 
 1120     typename T41, 
typename T42, 
typename T43, 
typename T44, 
typename T45,
 
 1121     typename T46, 
typename T47, 
typename T48>
 
 1122 internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
 1123     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
 
 1124     T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
 
 1125     T44, T45, T46, T47, T48> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
 
 1126     T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
 
 1127     T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
 
 1128     T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
 
 1129     T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
 
 1130     T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47,
 
 1132   return internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
 1133       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
 1134       T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
 
 1135       T40, T41, T42, T43, T44, T45, T46, T47, T48>(v1, v2, v3, v4, v5, v6, v7,
 
 1136       v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22,
 
 1137       v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36,
 
 1138       v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48);
 
 1141 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
 1142     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
 1143     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
 1144     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
 1145     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
 1146     typename T26, 
typename T27, 
typename T28, 
typename T29, 
typename T30,
 
 1147     typename T31, 
typename T32, 
typename T33, 
typename T34, 
typename T35,
 
 1148     typename T36, 
typename T37, 
typename T38, 
typename T39, 
typename T40,
 
 1149     typename T41, 
typename T42, 
typename T43, 
typename T44, 
typename T45,
 
 1150     typename T46, 
typename T47, 
typename T48, 
typename T49>
 
 1151 internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
 1152     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
 
 1153     T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
 
 1154     T44, T45, T46, T47, T48, T49> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
 
 1155     T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
 
 1156     T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22,
 
 1157     T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30,
 
 1158     T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38,
 
 1159     T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46,
 
 1160     T47 v47, T48 v48, T49 v49) {
 
 1161   return internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
 1162       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
 1163       T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
 
 1164       T40, T41, T42, T43, T44, T45, T46, T47, T48, T49>(v1, v2, v3, v4, v5, v6,
 
 1165       v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21,
 
 1166       v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35,
 
 1167       v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49);
 
 1170 template <
typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5,
 
 1171     typename T6, 
typename T7, 
typename T8, 
typename T9, 
typename T10,
 
 1172     typename T11, 
typename T12, 
typename T13, 
typename T14, 
typename T15,
 
 1173     typename T16, 
typename T17, 
typename T18, 
typename T19, 
typename T20,
 
 1174     typename T21, 
typename T22, 
typename T23, 
typename T24, 
typename T25,
 
 1175     typename T26, 
typename T27, 
typename T28, 
typename T29, 
typename T30,
 
 1176     typename T31, 
typename T32, 
typename T33, 
typename T34, 
typename T35,
 
 1177     typename T36, 
typename T37, 
typename T38, 
typename T39, 
typename T40,
 
 1178     typename T41, 
typename T42, 
typename T43, 
typename T44, 
typename T45,
 
 1179     typename T46, 
typename T47, 
typename T48, 
typename T49, 
typename T50>
 
 1180 internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
 
 1181     T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
 
 1182     T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
 
 1183     T44, T45, T46, T47, T48, T49, T50> Values(T1 v1, T2 v2, T3 v3, T4 v4,
 
 1184     T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
 
 1185     T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
 
 1186     T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
 
 1187     T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37,
 
 1188     T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45,
 
 1189     T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) {
 
 1190   return internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
 
 1191       T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
 
 1192       T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
 
 1193       T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>(v1, v2, v3, v4,
 
 1194       v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
 
 1195       v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
 
 1196       v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47,
 
 1220 inline internal::ParamGenerator<bool> Bool() {
 
 1221   return Values(
false, 
true);
 
 1224 # if GTEST_HAS_COMBINE 
 1273 template <
typename Generator1, 
typename Generator2>
 
 1274 internal::CartesianProductHolder2<Generator1, Generator2> Combine(
 
 1275     const Generator1& g1, 
const Generator2& g2) {
 
 1276   return internal::CartesianProductHolder2<Generator1, Generator2>(
 
 1280 template <
typename Generator1, 
typename Generator2, 
typename Generator3>
 
 1281 internal::CartesianProductHolder3<Generator1, Generator2, Generator3> Combine(
 
 1282     const Generator1& g1, 
const Generator2& g2, 
const Generator3& g3) {
 
 1283   return internal::CartesianProductHolder3<Generator1, Generator2, Generator3>(
 
 1287 template <
typename Generator1, 
typename Generator2, 
typename Generator3,
 
 1288     typename Generator4>
 
 1289 internal::CartesianProductHolder4<Generator1, Generator2, Generator3,
 
 1290     Generator4> Combine(
 
 1291     const Generator1& g1, 
const Generator2& g2, 
const Generator3& g3,
 
 1292         const Generator4& g4) {
 
 1293   return internal::CartesianProductHolder4<Generator1, Generator2, Generator3,
 
 1298 template <
typename Generator1, 
typename Generator2, 
typename Generator3,
 
 1299     typename Generator4, 
typename Generator5>
 
 1300 internal::CartesianProductHolder5<Generator1, Generator2, Generator3,
 
 1301     Generator4, Generator5> Combine(
 
 1302     const Generator1& g1, 
const Generator2& g2, 
const Generator3& g3,
 
 1303         const Generator4& g4, 
const Generator5& g5) {
 
 1304   return internal::CartesianProductHolder5<Generator1, Generator2, Generator3,
 
 1305       Generator4, Generator5>(
 
 1306       g1, g2, g3, g4, g5);
 
 1309 template <
typename Generator1, 
typename Generator2, 
typename Generator3,
 
 1310     typename Generator4, 
typename Generator5, 
typename Generator6>
 
 1311 internal::CartesianProductHolder6<Generator1, Generator2, Generator3,
 
 1312     Generator4, Generator5, Generator6> Combine(
 
 1313     const Generator1& g1, 
const Generator2& g2, 
const Generator3& g3,
 
 1314         const Generator4& g4, 
const Generator5& g5, 
const Generator6& g6) {
 
 1315   return internal::CartesianProductHolder6<Generator1, Generator2, Generator3,
 
 1316       Generator4, Generator5, Generator6>(
 
 1317       g1, g2, g3, g4, g5, g6);
 
 1320 template <
typename Generator1, 
typename Generator2, 
typename Generator3,
 
 1321     typename Generator4, 
typename Generator5, 
typename Generator6,
 
 1322     typename Generator7>
 
 1323 internal::CartesianProductHolder7<Generator1, Generator2, Generator3,
 
 1324     Generator4, Generator5, Generator6, Generator7> Combine(
 
 1325     const Generator1& g1, 
const Generator2& g2, 
const Generator3& g3,
 
 1326         const Generator4& g4, 
const Generator5& g5, 
const Generator6& g6,
 
 1327         const Generator7& g7) {
 
 1328   return internal::CartesianProductHolder7<Generator1, Generator2, Generator3,
 
 1329       Generator4, Generator5, Generator6, Generator7>(
 
 1330       g1, g2, g3, g4, g5, g6, g7);
 
 1333 template <
typename Generator1, 
typename Generator2, 
typename Generator3,
 
 1334     typename Generator4, 
typename Generator5, 
typename Generator6,
 
 1335     typename Generator7, 
typename Generator8>
 
 1336 internal::CartesianProductHolder8<Generator1, Generator2, Generator3,
 
 1337     Generator4, Generator5, Generator6, Generator7, Generator8> Combine(
 
 1338     const Generator1& g1, 
const Generator2& g2, 
const Generator3& g3,
 
 1339         const Generator4& g4, 
const Generator5& g5, 
const Generator6& g6,
 
 1340         const Generator7& g7, 
const Generator8& g8) {
 
 1341   return internal::CartesianProductHolder8<Generator1, Generator2, Generator3,
 
 1342       Generator4, Generator5, Generator6, Generator7, Generator8>(
 
 1343       g1, g2, g3, g4, g5, g6, g7, g8);
 
 1346 template <
typename Generator1, 
typename Generator2, 
typename Generator3,
 
 1347     typename Generator4, 
typename Generator5, 
typename Generator6,
 
 1348     typename Generator7, 
typename Generator8, 
typename Generator9>
 
 1349 internal::CartesianProductHolder9<Generator1, Generator2, Generator3,
 
 1350     Generator4, Generator5, Generator6, Generator7, Generator8,
 
 1351     Generator9> Combine(
 
 1352     const Generator1& g1, 
const Generator2& g2, 
const Generator3& g3,
 
 1353         const Generator4& g4, 
const Generator5& g5, 
const Generator6& g6,
 
 1354         const Generator7& g7, 
const Generator8& g8, 
const Generator9& g9) {
 
 1355   return internal::CartesianProductHolder9<Generator1, Generator2, Generator3,
 
 1356       Generator4, Generator5, Generator6, Generator7, Generator8, Generator9>(
 
 1357       g1, g2, g3, g4, g5, g6, g7, g8, g9);
 
 1360 template <
typename Generator1, 
typename Generator2, 
typename Generator3,
 
 1361     typename Generator4, 
typename Generator5, 
typename Generator6,
 
 1362     typename Generator7, 
typename Generator8, 
typename Generator9,
 
 1363     typename Generator10>
 
 1364 internal::CartesianProductHolder10<Generator1, Generator2, Generator3,
 
 1365     Generator4, Generator5, Generator6, Generator7, Generator8, Generator9,
 
 1366     Generator10> Combine(
 
 1367     const Generator1& g1, 
const Generator2& g2, 
const Generator3& g3,
 
 1368         const Generator4& g4, 
const Generator5& g5, 
const Generator6& g6,
 
 1369         const Generator7& g7, 
const Generator8& g8, 
const Generator9& g9,
 
 1370         const Generator10& g10) {
 
 1371   return internal::CartesianProductHolder10<Generator1, Generator2, Generator3,
 
 1372       Generator4, Generator5, Generator6, Generator7, Generator8, Generator9,
 
 1374       g1, g2, g3, g4, g5, g6, g7, g8, g9, g10);
 
 1376 # endif  // GTEST_HAS_COMBINE 
 1380 # define TEST_P(test_case_name, test_name) \ 
 1381   class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ 
 1382       : public test_case_name { \ 
 1384     GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \ 
 1385     virtual void TestBody(); \ 
 1387     static int AddToRegistry() { \ 
 1388       ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ 
 1389           GetTestCasePatternHolder<test_case_name>(\ 
 1390               #test_case_name, __FILE__, __LINE__)->AddTestPattern(\ 
 1393                   new ::testing::internal::TestMetaFactory< \ 
 1394                       GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \ 
 1397     static int gtest_registering_dummy_; \ 
 1398     GTEST_DISALLOW_COPY_AND_ASSIGN_(\ 
 1399         GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \ 
 1401   int GTEST_TEST_CLASS_NAME_(test_case_name, \ 
 1402                              test_name)::gtest_registering_dummy_ = \ 
 1403       GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \ 
 1404   void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() 
 1406 # define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \ 
 1407   ::testing::internal::ParamGenerator<test_case_name::ParamType> \ 
 1408       gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \ 
 1409   int gtest_##prefix##test_case_name##_dummy_ = \ 
 1410       ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ 
 1411           GetTestCasePatternHolder<test_case_name>(\ 
 1412               #test_case_name, __FILE__, __LINE__)->AddTestCaseInstantiation(\ 
 1414                   >est_##prefix##test_case_name##_EvalGenerator_, \ 
 1419 #endif  // GTEST_HAS_PARAM_TEST 
 1421 #endif  // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ 
Definition: gtest-death-test.h:43
#define TEST_F(test_fixture, test_name)
Definition: gtest.h:2271
const T1 &f1 return GTEST_2_TUPLE_() T(f0, f1)
const double N
Definition: navstokes_cosines.cc:94
MUP_BASETYPE value_type
The numeric datatype used by the parser. 
Definition: muParserDef.h:222
#define EXPECT_TRUE(condition)
Definition: gtest.h:1914