46 #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ 47 #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ 52 #include "gtest/internal/gtest-param-util.h" 53 #include "gtest/internal/gtest-port.h" 55 #if GTEST_HAS_PARAM_TEST 62 template <
typename ForwardIterator>
63 internal::ParamGenerator <
64 typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type >
65 ValuesIn(ForwardIterator begin, ForwardIterator
end);
67 template <
typename T,
size_t N>
68 internal::ParamGenerator<T>
ValuesIn(
const T(&array)[N]);
70 template <
class Container>
71 internal::ParamGenerator<typename Container::value_type>
ValuesIn(
72 const Container & container);
78 template <
typename T1>
85 operator ParamGenerator<T>()
const {
return ValuesIn(&
v1_, &
v1_ + 1); }
94 template <
typename T1,
typename T2>
98 ValueArray2(T1 v1, T2 v2) :
v1_(v1), v2_(v2) {}
100 template <
typename T>
101 operator ParamGenerator<T>()
const 103 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_)};
109 void operator=(
const ValueArray2 & other);
115 template <
typename T1,
typename T2,
typename T3>
119 ValueArray3(T1 v1, T2 v2, T3 v3) :
v1_(v1), v2_(v2), v3_(v3) {}
121 template <
typename T>
122 operator ParamGenerator<T>()
const 124 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
132 void operator=(
const ValueArray3 & other);
139 template <
typename T1,
typename T2,
typename T3,
typename T4>
143 ValueArray4(T1 v1, T2 v2, T3 v3, T4 v4) :
v1_(v1), v2_(v2), v3_(v3),
146 template <
typename T>
147 operator ParamGenerator<T>()
const 149 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
150 static_cast<T
>(v3_), static_cast<T>(v4_)
157 void operator=(
const ValueArray4 & other);
165 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
169 ValueArray5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) :
v1_(v1), v2_(v2), v3_(v3),
172 template <
typename T>
173 operator ParamGenerator<T>()
const 175 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
176 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_)
183 void operator=(
const ValueArray5 & other);
192 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
197 ValueArray6(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) :
v1_(v1), v2_(v2),
198 v3_(v3), v4_(v4), v5_(v5), v6_(v6) {}
200 template <
typename T>
201 operator ParamGenerator<T>()
const 203 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
204 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
212 void operator=(
const ValueArray6 & other);
222 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
223 typename T6,
typename T7>
227 ValueArray7(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) :
v1_(v1),
228 v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7) {}
230 template <
typename T>
231 operator ParamGenerator<T>()
const 233 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
234 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
235 static_cast<T>(v6_),
static_cast<T
>(v7_)
242 void operator=(
const ValueArray7 & other);
253 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
254 typename T6,
typename T7,
typename T8>
258 ValueArray8(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
259 T8 v8) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
262 template <
typename T>
263 operator ParamGenerator<T>()
const 265 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
266 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
267 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_)
274 void operator=(
const ValueArray8 & other);
286 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
287 typename T6,
typename T7,
typename T8,
typename T9>
291 ValueArray9(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
292 T9 v9) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
295 template <
typename T>
296 operator ParamGenerator<T>()
const 298 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
299 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
300 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
308 void operator=(
const ValueArray9 & other);
321 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
322 typename T6,
typename T7,
typename T8,
typename T9,
typename T10>
326 ValueArray10(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
327 T10 v10) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
328 v8_(v8), v9_(v9), v10_(v10) {}
330 template <
typename T>
331 operator ParamGenerator<T>()
const 333 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
334 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
335 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
336 static_cast<T
>(v9_), static_cast<T>(v10_)
343 void operator=(
const ValueArray10 & other);
357 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
358 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
363 ValueArray11(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
364 T10 v10, T11 v11) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
365 v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11) {}
367 template <
typename T>
368 operator ParamGenerator<T>()
const 370 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
371 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
372 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
373 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_)
380 void operator=(
const ValueArray11 & other);
395 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
396 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
397 typename T11,
typename T12>
401 ValueArray12(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
402 T10 v10, T11 v11, T12 v12) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
403 v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12) {}
405 template <
typename T>
406 operator ParamGenerator<T>()
const 408 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
409 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
410 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
411 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
419 void operator=(
const ValueArray12 & other);
435 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
436 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
437 typename T11,
typename T12,
typename T13>
441 ValueArray13(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) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4),
443 v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
444 v12_(v12), v13_(v13) {}
446 template <
typename T>
447 operator ParamGenerator<T>()
const 449 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
450 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
451 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
452 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
453 static_cast<T>(v12_),
static_cast<T
>(v13_)
460 void operator=(
const ValueArray13 & other);
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>
483 ValueArray14(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
484 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) :
v1_(v1), v2_(v2), v3_(v3),
485 v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
486 v11_(v11), v12_(v12), v13_(v13), v14_(v14) {}
488 template <
typename T>
489 operator ParamGenerator<T>()
const 491 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
492 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
493 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
494 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
495 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_)
502 void operator=(
const ValueArray14 & other);
520 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
521 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
522 typename T11,
typename T12,
typename T13,
typename T14,
typename T15>
526 ValueArray15(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
527 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) :
v1_(v1), v2_(v2),
528 v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
529 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15) {}
531 template <
typename T>
532 operator ParamGenerator<T>()
const 534 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
535 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
536 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
537 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
538 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
546 void operator=(
const ValueArray15 & other);
565 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
566 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
567 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
572 ValueArray16(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
573 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16) :
v1_(v1),
574 v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
575 v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
578 template <
typename T>
579 operator ParamGenerator<T>()
const 581 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
582 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
583 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
584 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
585 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
586 static_cast<T
>(v15_), static_cast<T>(v16_)
593 void operator=(
const ValueArray16 & other);
613 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
614 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
615 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
616 typename T16,
typename T17>
620 ValueArray17(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,
622 T17 v17) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
623 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
624 v15_(v15), v16_(v16), v17_(v17) {}
626 template <
typename T>
627 operator ParamGenerator<T>()
const 629 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
630 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
631 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
632 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
633 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
634 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_)
641 void operator=(
const ValueArray17 & other);
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>
669 ValueArray18(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
670 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
671 T18 v18) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
672 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
673 v15_(v15), v16_(v16), v17_(v17), v18_(v18) {}
675 template <
typename T>
676 operator ParamGenerator<T>()
const 678 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
679 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
680 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
681 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
682 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
683 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
691 void operator=(
const ValueArray18 & other);
713 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
714 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
715 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
716 typename T16,
typename T17,
typename T18,
typename T19>
720 ValueArray19(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
721 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
722 T18 v18, T19 v19) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
723 v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
724 v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19) {}
726 template <
typename T>
727 operator ParamGenerator<T>()
const 729 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
730 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
731 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
732 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
733 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
734 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
735 static_cast<T>(v18_),
static_cast<T
>(v19_)
742 void operator=(
const ValueArray19 & other);
765 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
766 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
767 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
768 typename T16,
typename T17,
typename T18,
typename T19,
typename T20>
772 ValueArray20(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
773 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
774 T18 v18, T19 v19, T20 v20) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
775 v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
776 v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
777 v19_(v19), v20_(v20) {}
779 template <
typename T>
780 operator ParamGenerator<T>()
const 782 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
783 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
784 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
785 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
786 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
787 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
788 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_)
795 void operator=(
const ValueArray20 & other);
819 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
820 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
821 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
822 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
827 ValueArray21(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
828 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
829 T18 v18, T19 v19, T20 v20, T21 v21) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4),
830 v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
831 v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
832 v18_(v18), v19_(v19), v20_(v20), v21_(v21) {}
834 template <
typename T>
835 operator ParamGenerator<T>()
const 837 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
838 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
839 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
840 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
841 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
842 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
843 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
851 void operator=(
const ValueArray21 & other);
876 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
877 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
878 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
879 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
880 typename T21,
typename T22>
884 ValueArray22(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
885 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
886 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) :
v1_(v1), v2_(v2), v3_(v3),
887 v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
888 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
889 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22) {}
891 template <
typename T>
892 operator ParamGenerator<T>()
const 894 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
895 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
896 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
897 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
898 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
899 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
900 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
901 static_cast<T
>(v21_), static_cast<T>(v22_)
908 void operator=(
const ValueArray22 & other);
934 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
935 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
936 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
937 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
938 typename T21,
typename T22,
typename T23>
942 ValueArray23(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
943 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
944 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) :
v1_(v1), v2_(v2),
945 v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
946 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
947 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
950 template <
typename T>
951 operator ParamGenerator<T>()
const 953 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
954 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
955 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
956 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
957 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
958 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
959 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
960 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_)
967 void operator=(
const ValueArray23 & other);
994 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
995 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
996 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
997 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
998 typename T21,
typename T22,
typename T23,
typename T24>
1002 ValueArray24(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1003 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1004 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) :
v1_(v1),
1005 v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
1006 v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
1007 v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
1008 v22_(v22), v23_(v23), v24_(v24) {}
1010 template <
typename T>
1011 operator ParamGenerator<T>()
const 1013 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
1014 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
1015 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
1016 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
1017 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
1018 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
1019 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
1020 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
1021 static_cast<T>(v24_)
1028 void operator=(
const ValueArray24 & other);
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>
1064 ValueArray25(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1065 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1066 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
1067 T25 v25) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
1068 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
1069 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
1070 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25) {}
1072 template <
typename T>
1073 operator ParamGenerator<T>()
const 1075 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
1076 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
1077 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
1078 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
1079 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
1080 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
1081 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
1082 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
1083 static_cast<T>(v24_),
static_cast<T
>(v25_)
1090 void operator=(
const ValueArray25 & other);
1119 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1120 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1121 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1122 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1123 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1128 ValueArray26(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1129 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1130 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1131 T26 v26) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
1132 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
1133 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
1134 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26) {}
1136 template <
typename T>
1137 operator ParamGenerator<T>()
const 1139 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
1140 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
1141 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
1142 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
1143 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
1144 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
1145 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
1146 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
1147 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_)
1154 void operator=(
const ValueArray26 & other);
1184 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1185 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1186 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1187 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1188 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1189 typename T26,
typename T27>
1193 ValueArray27(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1194 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1195 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1196 T26 v26, T27 v27) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
1197 v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
1198 v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
1199 v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
1200 v26_(v26), v27_(v27) {}
1202 template <
typename T>
1203 operator ParamGenerator<T>()
const 1205 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
1206 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
1207 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
1208 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
1209 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
1210 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
1211 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
1212 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
1213 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
1214 static_cast<T
>(v27_)
1221 void operator=(
const ValueArray27 & other);
1252 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1253 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1254 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1255 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1256 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1257 typename T26,
typename T27,
typename T28>
1261 ValueArray28(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1262 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1263 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1264 T26 v26, T27 v27, T28 v28) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
1265 v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
1266 v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
1267 v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
1268 v25_(v25), v26_(v26), v27_(v27), v28_(v28) {}
1270 template <
typename T>
1271 operator ParamGenerator<T>()
const 1273 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
1274 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
1275 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
1276 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
1277 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
1278 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
1279 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
1280 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
1281 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
1282 static_cast<T
>(v27_), static_cast<T>(v28_)
1289 void operator=(
const ValueArray28 & other);
1321 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1322 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1323 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1324 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1325 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1326 typename T26,
typename T27,
typename T28,
typename T29>
1330 ValueArray29(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1331 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1332 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1333 T26 v26, T27 v27, T28 v28, T29 v29) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4),
1334 v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
1335 v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
1336 v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
1337 v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29) {}
1339 template <
typename T>
1340 operator ParamGenerator<T>()
const 1342 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
1343 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
1344 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
1345 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
1346 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
1347 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
1348 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
1349 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
1350 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
1351 static_cast<T
>(v27_), static_cast<T>(v28_),
static_cast<T
>(v29_)
1358 void operator=(
const ValueArray29 & other);
1391 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1392 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1393 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1394 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1395 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1396 typename T26,
typename T27,
typename T28,
typename T29,
typename T30>
1400 ValueArray30(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1401 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1402 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1403 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) :
v1_(v1), v2_(v2), v3_(v3),
1404 v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
1405 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
1406 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
1407 v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
1408 v29_(v29), v30_(v30) {}
1410 template <
typename T>
1411 operator ParamGenerator<T>()
const 1413 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
1414 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
1415 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
1416 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
1417 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
1418 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
1419 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
1420 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
1421 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
1422 static_cast<T
>(v27_), static_cast<T>(v28_),
static_cast<T
>(v29_),
1423 static_cast<T>(v30_)
1430 void operator=(
const ValueArray30 & other);
1464 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1465 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1466 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1467 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1468 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1469 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
1474 ValueArray31(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1475 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1476 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1477 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) :
v1_(v1), v2_(v2),
1478 v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
1479 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
1480 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
1481 v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
1482 v29_(v29), v30_(v30), v31_(v31) {}
1484 template <
typename T>
1485 operator ParamGenerator<T>()
const 1487 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
1488 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
1489 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
1490 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
1491 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
1492 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
1493 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
1494 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
1495 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
1496 static_cast<T
>(v27_), static_cast<T>(v28_),
static_cast<T
>(v29_),
1497 static_cast<T>(v30_),
static_cast<T
>(v31_)
1504 void operator=(
const ValueArray31 & other);
1539 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1540 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1541 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1542 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1543 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1544 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
1545 typename T31,
typename T32>
1549 ValueArray32(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1550 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1551 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1552 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) :
v1_(v1),
1553 v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
1554 v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
1555 v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
1556 v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
1557 v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32) {}
1559 template <
typename T>
1560 operator ParamGenerator<T>()
const 1562 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
1563 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
1564 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
1565 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
1566 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
1567 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
1568 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
1569 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
1570 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
1571 static_cast<T
>(v27_), static_cast<T>(v28_),
static_cast<T
>(v29_),
1572 static_cast<T>(v30_),
static_cast<T
>(v31_), static_cast<T>(v32_)
1579 void operator=(
const ValueArray32 & other);
1615 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1616 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1617 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1618 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1619 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1620 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
1621 typename T31,
typename T32,
typename T33>
1625 ValueArray33(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1626 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1627 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1628 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32,
1629 T33 v33) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
1630 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
1631 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
1632 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
1633 v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
1636 template <
typename T>
1637 operator ParamGenerator<T>()
const 1639 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
1640 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
1641 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
1642 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
1643 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
1644 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
1645 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
1646 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
1647 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
1648 static_cast<T
>(v27_), static_cast<T>(v28_),
static_cast<T
>(v29_),
1649 static_cast<T>(v30_),
static_cast<T
>(v31_), static_cast<T>(v32_),
1650 static_cast<T
>(v33_)
1657 void operator=(
const ValueArray33 & other);
1694 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1695 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1696 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1697 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1698 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1699 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
1700 typename T31,
typename T32,
typename T33,
typename T34>
1704 ValueArray34(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1705 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1706 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1707 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
1708 T34 v34) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
1709 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
1710 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
1711 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
1712 v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
1713 v33_(v33), v34_(v34) {}
1715 template <
typename T>
1716 operator ParamGenerator<T>()
const 1718 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
1719 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
1720 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
1721 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
1722 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
1723 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
1724 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
1725 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
1726 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
1727 static_cast<T
>(v27_), static_cast<T>(v28_),
static_cast<T
>(v29_),
1728 static_cast<T>(v30_),
static_cast<T
>(v31_), static_cast<T>(v32_),
1729 static_cast<T
>(v33_), static_cast<T>(v34_)
1736 void operator=(
const ValueArray34 & other);
1774 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1775 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1776 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1777 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1778 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1779 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
1780 typename T31,
typename T32,
typename T33,
typename T34,
typename T35>
1784 ValueArray35(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1785 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1786 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1787 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
1788 T34 v34, T35 v35) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
1789 v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
1790 v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
1791 v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
1792 v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31),
1793 v32_(v32), v33_(v33), v34_(v34), v35_(v35) {}
1795 template <
typename T>
1796 operator ParamGenerator<T>()
const 1798 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
1799 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
1800 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
1801 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
1802 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
1803 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
1804 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
1805 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
1806 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
1807 static_cast<T
>(v27_), static_cast<T>(v28_),
static_cast<T
>(v29_),
1808 static_cast<T>(v30_),
static_cast<T
>(v31_), static_cast<T>(v32_),
1809 static_cast<T
>(v33_), static_cast<T>(v34_),
static_cast<T
>(v35_)
1816 void operator=(
const ValueArray35 & other);
1855 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1856 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1857 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1858 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1859 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1860 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
1861 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
1866 ValueArray36(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1867 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1868 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1869 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
1870 T34 v34, T35 v35, T36 v36) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
1871 v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
1872 v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
1873 v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
1874 v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30),
1875 v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36) {}
1877 template <
typename T>
1878 operator ParamGenerator<T>()
const 1880 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
1881 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
1882 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
1883 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
1884 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
1885 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
1886 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
1887 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
1888 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
1889 static_cast<T
>(v27_), static_cast<T>(v28_),
static_cast<T
>(v29_),
1890 static_cast<T>(v30_),
static_cast<T
>(v31_), static_cast<T>(v32_),
1891 static_cast<T
>(v33_), static_cast<T>(v34_),
static_cast<T
>(v35_),
1892 static_cast<T>(v36_)
1899 void operator=(
const ValueArray36 & other);
1939 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1940 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1941 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1942 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1943 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1944 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
1945 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
1946 typename T36,
typename T37>
1950 ValueArray37(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1951 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1952 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1953 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
1954 T34 v34, T35 v35, T36 v36, T37 v37) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4),
1955 v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
1956 v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
1957 v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
1958 v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29),
1959 v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35),
1960 v36_(v36), v37_(v37) {}
1962 template <
typename T>
1963 operator ParamGenerator<T>()
const 1965 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
1966 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
1967 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
1968 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
1969 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
1970 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
1971 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
1972 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
1973 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
1974 static_cast<T
>(v27_), static_cast<T>(v28_),
static_cast<T
>(v29_),
1975 static_cast<T>(v30_),
static_cast<T
>(v31_), static_cast<T>(v32_),
1976 static_cast<T
>(v33_), static_cast<T>(v34_),
static_cast<T
>(v35_),
1977 static_cast<T>(v36_),
static_cast<T
>(v37_)
1984 void operator=(
const ValueArray37 & other);
2025 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
2026 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
2027 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
2028 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
2029 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
2030 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
2031 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
2032 typename T36,
typename T37,
typename T38>
2036 ValueArray38(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2037 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2038 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2039 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2040 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) :
v1_(v1), v2_(v2), v3_(v3),
2041 v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
2042 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
2043 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
2044 v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
2045 v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
2046 v35_(v35), v36_(v36), v37_(v37), v38_(v38) {}
2048 template <
typename T>
2049 operator ParamGenerator<T>()
const 2051 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
2052 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
2053 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
2054 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
2055 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
2056 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
2057 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
2058 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
2059 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
2060 static_cast<T
>(v27_), static_cast<T>(v28_),
static_cast<T
>(v29_),
2061 static_cast<T>(v30_),
static_cast<T
>(v31_), static_cast<T>(v32_),
2062 static_cast<T
>(v33_), static_cast<T>(v34_),
static_cast<T
>(v35_),
2063 static_cast<T>(v36_),
static_cast<T
>(v37_), static_cast<T>(v38_)
2070 void operator=(
const ValueArray38 & other);
2112 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
2113 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
2114 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
2115 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
2116 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
2117 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
2118 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
2119 typename T36,
typename T37,
typename T38,
typename T39>
2123 ValueArray39(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2124 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2125 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2126 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2127 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) :
v1_(v1), v2_(v2),
2128 v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
2129 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
2130 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
2131 v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
2132 v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
2133 v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39) {}
2135 template <
typename T>
2136 operator ParamGenerator<T>()
const 2138 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
2139 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
2140 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
2141 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
2142 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
2143 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
2144 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
2145 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
2146 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
2147 static_cast<T
>(v27_), static_cast<T>(v28_),
static_cast<T
>(v29_),
2148 static_cast<T>(v30_),
static_cast<T
>(v31_), static_cast<T>(v32_),
2149 static_cast<T
>(v33_), static_cast<T>(v34_),
static_cast<T
>(v35_),
2150 static_cast<T>(v36_),
static_cast<T
>(v37_), static_cast<T>(v38_),
2151 static_cast<T
>(v39_)
2158 void operator=(
const ValueArray39 & other);
2201 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
2202 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
2203 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
2204 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
2205 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
2206 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
2207 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
2208 typename T36,
typename T37,
typename T38,
typename T39,
typename T40>
2212 ValueArray40(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2213 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2214 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2215 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2216 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) :
v1_(v1),
2217 v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
2218 v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
2219 v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
2220 v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
2221 v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33),
2222 v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39),
2225 template <
typename T>
2226 operator ParamGenerator<T>()
const 2228 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
2229 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
2230 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
2231 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
2232 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
2233 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
2234 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
2235 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
2236 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
2237 static_cast<T
>(v27_), static_cast<T>(v28_),
static_cast<T
>(v29_),
2238 static_cast<T>(v30_),
static_cast<T
>(v31_), static_cast<T>(v32_),
2239 static_cast<T
>(v33_), static_cast<T>(v34_),
static_cast<T
>(v35_),
2240 static_cast<T>(v36_),
static_cast<T
>(v37_), static_cast<T>(v38_),
2241 static_cast<T
>(v39_), static_cast<T>(v40_)
2248 void operator=(
const ValueArray40 & other);
2292 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
2293 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
2294 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
2295 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
2296 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
2297 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
2298 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
2299 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
2304 ValueArray41(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2305 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2306 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2307 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2308 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40,
2309 T41 v41) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
2310 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
2311 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
2312 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
2313 v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
2314 v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
2315 v39_(v39), v40_(v40), v41_(v41) {}
2317 template <
typename T>
2318 operator ParamGenerator<T>()
const 2320 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
2321 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
2322 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
2323 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
2324 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
2325 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
2326 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
2327 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
2328 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
2329 static_cast<T
>(v27_), static_cast<T>(v28_),
static_cast<T
>(v29_),
2330 static_cast<T>(v30_),
static_cast<T
>(v31_), static_cast<T>(v32_),
2331 static_cast<T
>(v33_), static_cast<T>(v34_),
static_cast<T
>(v35_),
2332 static_cast<T>(v36_),
static_cast<T
>(v37_), static_cast<T>(v38_),
2333 static_cast<T
>(v39_), static_cast<T>(v40_),
static_cast<T
>(v41_)
2340 void operator=(
const ValueArray41 & other);
2385 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
2386 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
2387 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
2388 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
2389 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
2390 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
2391 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
2392 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
2393 typename T41,
typename T42>
2397 ValueArray42(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2398 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2399 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2400 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2401 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
2402 T42 v42) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
2403 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
2404 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
2405 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
2406 v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
2407 v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
2408 v39_(v39), v40_(v40), v41_(v41), v42_(v42) {}
2410 template <
typename T>
2411 operator ParamGenerator<T>()
const 2413 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
2414 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
2415 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
2416 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
2417 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
2418 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
2419 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
2420 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
2421 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
2422 static_cast<T
>(v27_), static_cast<T>(v28_),
static_cast<T
>(v29_),
2423 static_cast<T>(v30_),
static_cast<T
>(v31_), static_cast<T>(v32_),
2424 static_cast<T
>(v33_), static_cast<T>(v34_),
static_cast<T
>(v35_),
2425 static_cast<T>(v36_),
static_cast<T
>(v37_), static_cast<T>(v38_),
2426 static_cast<T
>(v39_), static_cast<T>(v40_),
static_cast<T
>(v41_),
2427 static_cast<T>(v42_)
2434 void operator=(
const ValueArray42 & other);
2480 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
2481 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
2482 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
2483 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
2484 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
2485 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
2486 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
2487 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
2488 typename T41,
typename T42,
typename T43>
2492 ValueArray43(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2493 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2494 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2495 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2496 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
2497 T42 v42, T43 v43) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
2498 v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
2499 v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
2500 v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
2501 v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31),
2502 v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37),
2503 v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43) {}
2505 template <
typename T>
2506 operator ParamGenerator<T>()
const 2508 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
2509 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
2510 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
2511 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
2512 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
2513 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
2514 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
2515 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
2516 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
2517 static_cast<T
>(v27_), static_cast<T>(v28_),
static_cast<T
>(v29_),
2518 static_cast<T>(v30_),
static_cast<T
>(v31_), static_cast<T>(v32_),
2519 static_cast<T
>(v33_), static_cast<T>(v34_),
static_cast<T
>(v35_),
2520 static_cast<T>(v36_),
static_cast<T
>(v37_), static_cast<T>(v38_),
2521 static_cast<T
>(v39_), static_cast<T>(v40_),
static_cast<T
>(v41_),
2522 static_cast<T>(v42_),
static_cast<T
>(v43_)
2529 void operator=(
const ValueArray43 & other);
2576 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
2577 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
2578 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
2579 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
2580 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
2581 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
2582 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
2583 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
2584 typename T41,
typename T42,
typename T43,
typename T44>
2588 ValueArray44(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2589 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2590 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2591 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2592 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
2593 T42 v42, T43 v43, T44 v44) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
2594 v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
2595 v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
2596 v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
2597 v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30),
2598 v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36),
2599 v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42),
2600 v43_(v43), v44_(v44) {}
2602 template <
typename T>
2603 operator ParamGenerator<T>()
const 2605 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
2606 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
2607 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
2608 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
2609 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
2610 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
2611 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
2612 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
2613 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
2614 static_cast<T
>(v27_), static_cast<T>(v28_),
static_cast<T
>(v29_),
2615 static_cast<T>(v30_),
static_cast<T
>(v31_), static_cast<T>(v32_),
2616 static_cast<T
>(v33_), static_cast<T>(v34_),
static_cast<T
>(v35_),
2617 static_cast<T>(v36_),
static_cast<T
>(v37_), static_cast<T>(v38_),
2618 static_cast<T
>(v39_), static_cast<T>(v40_),
static_cast<T
>(v41_),
2619 static_cast<T>(v42_),
static_cast<T
>(v43_), static_cast<T>(v44_)
2626 void operator=(
const ValueArray44 & other);
2674 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
2675 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
2676 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
2677 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
2678 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
2679 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
2680 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
2681 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
2682 typename T41,
typename T42,
typename T43,
typename T44,
typename T45>
2686 ValueArray45(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2687 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2688 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2689 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2690 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
2691 T42 v42, T43 v43, T44 v44, T45 v45) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4),
2692 v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
2693 v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
2694 v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
2695 v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29),
2696 v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35),
2697 v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41),
2698 v42_(v42), v43_(v43), v44_(v44), v45_(v45) {}
2700 template <
typename T>
2701 operator ParamGenerator<T>()
const 2703 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
2704 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
2705 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
2706 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
2707 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
2708 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
2709 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
2710 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
2711 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
2712 static_cast<T
>(v27_), static_cast<T>(v28_),
static_cast<T
>(v29_),
2713 static_cast<T>(v30_),
static_cast<T
>(v31_), static_cast<T>(v32_),
2714 static_cast<T
>(v33_), static_cast<T>(v34_),
static_cast<T
>(v35_),
2715 static_cast<T>(v36_),
static_cast<T
>(v37_), static_cast<T>(v38_),
2716 static_cast<T
>(v39_), static_cast<T>(v40_),
static_cast<T
>(v41_),
2717 static_cast<T>(v42_),
static_cast<T
>(v43_), static_cast<T>(v44_),
2718 static_cast<T
>(v45_)
2725 void operator=(
const ValueArray45 & other);
2774 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
2775 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
2776 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
2777 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
2778 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
2779 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
2780 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
2781 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
2782 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
2787 ValueArray46(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2788 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2789 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2790 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2791 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
2792 T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) :
v1_(v1), v2_(v2), v3_(v3),
2793 v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
2794 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
2795 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
2796 v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
2797 v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
2798 v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40),
2799 v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46) {}
2801 template <
typename T>
2802 operator ParamGenerator<T>()
const 2804 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
2805 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
2806 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
2807 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
2808 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
2809 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
2810 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
2811 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
2812 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
2813 static_cast<T
>(v27_), static_cast<T>(v28_),
static_cast<T
>(v29_),
2814 static_cast<T>(v30_),
static_cast<T
>(v31_), static_cast<T>(v32_),
2815 static_cast<T
>(v33_), static_cast<T>(v34_),
static_cast<T
>(v35_),
2816 static_cast<T>(v36_),
static_cast<T
>(v37_), static_cast<T>(v38_),
2817 static_cast<T
>(v39_), static_cast<T>(v40_),
static_cast<T
>(v41_),
2818 static_cast<T>(v42_),
static_cast<T
>(v43_), static_cast<T>(v44_),
2819 static_cast<T
>(v45_), static_cast<T>(v46_)
2826 void operator=(
const ValueArray46 & other);
2876 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
2877 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
2878 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
2879 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
2880 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
2881 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
2882 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
2883 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
2884 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
2885 typename T46,
typename T47>
2889 ValueArray47(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2890 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2891 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2892 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2893 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
2894 T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) :
v1_(v1), v2_(v2),
2895 v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
2896 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
2897 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
2898 v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
2899 v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
2900 v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40),
2901 v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46),
2904 template <
typename T>
2905 operator ParamGenerator<T>()
const 2907 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
2908 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
2909 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
2910 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
2911 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
2912 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
2913 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
2914 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
2915 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
2916 static_cast<T
>(v27_), static_cast<T>(v28_),
static_cast<T
>(v29_),
2917 static_cast<T>(v30_),
static_cast<T
>(v31_), static_cast<T>(v32_),
2918 static_cast<T
>(v33_), static_cast<T>(v34_),
static_cast<T
>(v35_),
2919 static_cast<T>(v36_),
static_cast<T
>(v37_), static_cast<T>(v38_),
2920 static_cast<T
>(v39_), static_cast<T>(v40_),
static_cast<T
>(v41_),
2921 static_cast<T>(v42_),
static_cast<T
>(v43_), static_cast<T>(v44_),
2922 static_cast<T
>(v45_), static_cast<T>(v46_),
static_cast<T
>(v47_)
2929 void operator=(
const ValueArray47 & other);
2980 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
2981 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
2982 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
2983 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
2984 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
2985 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
2986 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
2987 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
2988 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
2989 typename T46,
typename T47,
typename T48>
2993 ValueArray48(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2994 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2995 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2996 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2997 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
2998 T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) :
v1_(v1),
2999 v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
3000 v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
3001 v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
3002 v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
3003 v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33),
3004 v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39),
3005 v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45),
3006 v46_(v46), v47_(v47), v48_(v48) {}
3008 template <
typename T>
3009 operator ParamGenerator<T>()
const 3011 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
3012 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
3013 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
3014 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
3015 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
3016 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
3017 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
3018 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
3019 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
3020 static_cast<T
>(v27_), static_cast<T>(v28_),
static_cast<T
>(v29_),
3021 static_cast<T>(v30_),
static_cast<T
>(v31_), static_cast<T>(v32_),
3022 static_cast<T
>(v33_), static_cast<T>(v34_),
static_cast<T
>(v35_),
3023 static_cast<T>(v36_),
static_cast<T
>(v37_), static_cast<T>(v38_),
3024 static_cast<T
>(v39_), static_cast<T>(v40_),
static_cast<T
>(v41_),
3025 static_cast<T>(v42_),
static_cast<T
>(v43_), static_cast<T>(v44_),
3026 static_cast<T
>(v45_), static_cast<T>(v46_),
static_cast<T
>(v47_),
3027 static_cast<T>(v48_)
3034 void operator=(
const ValueArray48 & other);
3086 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
3087 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
3088 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
3089 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
3090 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
3091 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
3092 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
3093 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
3094 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
3095 typename T46,
typename T47,
typename T48,
typename T49>
3099 ValueArray49(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
3100 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
3101 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
3102 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
3103 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
3104 T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48,
3105 T49 v49) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
3106 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
3107 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
3108 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
3109 v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
3110 v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
3111 v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44),
3112 v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49) {}
3114 template <
typename T>
3115 operator ParamGenerator<T>()
const 3117 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
3118 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
3119 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
3120 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
3121 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
3122 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
3123 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
3124 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
3125 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
3126 static_cast<T
>(v27_), static_cast<T>(v28_),
static_cast<T
>(v29_),
3127 static_cast<T>(v30_),
static_cast<T
>(v31_), static_cast<T>(v32_),
3128 static_cast<T
>(v33_), static_cast<T>(v34_),
static_cast<T
>(v35_),
3129 static_cast<T>(v36_),
static_cast<T
>(v37_), static_cast<T>(v38_),
3130 static_cast<T
>(v39_), static_cast<T>(v40_),
static_cast<T
>(v41_),
3131 static_cast<T>(v42_),
static_cast<T
>(v43_), static_cast<T>(v44_),
3132 static_cast<T
>(v45_), static_cast<T>(v46_),
static_cast<T
>(v47_),
3133 static_cast<T>(v48_),
static_cast<T
>(v49_)
3140 void operator=(
const ValueArray49 & other);
3193 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
3194 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
3195 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
3196 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
3197 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
3198 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
3199 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
3200 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
3201 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
3202 typename T46,
typename T47,
typename T48,
typename T49,
typename T50>
3206 ValueArray50(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
3207 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
3208 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
3209 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
3210 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
3211 T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49,
3212 T50 v50) :
v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
3213 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
3214 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
3215 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
3216 v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
3217 v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
3218 v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44),
3219 v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49), v50_(v50) {}
3221 template <
typename T>
3222 operator ParamGenerator<T>()
const 3224 const T array[] = {
static_cast<T
>(
v1_), static_cast<T>(v2_),
3225 static_cast<T
>(v3_), static_cast<T>(v4_),
static_cast<T
>(v5_),
3226 static_cast<T>(v6_),
static_cast<T
>(v7_), static_cast<T>(v8_),
3227 static_cast<T
>(v9_), static_cast<T>(v10_),
static_cast<T
>(v11_),
3228 static_cast<T>(v12_),
static_cast<T
>(v13_), static_cast<T>(v14_),
3229 static_cast<T
>(v15_), static_cast<T>(v16_),
static_cast<T
>(v17_),
3230 static_cast<T>(v18_),
static_cast<T
>(v19_), static_cast<T>(v20_),
3231 static_cast<T
>(v21_), static_cast<T>(v22_),
static_cast<T
>(v23_),
3232 static_cast<T>(v24_),
static_cast<T
>(v25_), static_cast<T>(v26_),
3233 static_cast<T
>(v27_), static_cast<T>(v28_),
static_cast<T
>(v29_),
3234 static_cast<T>(v30_),
static_cast<T
>(v31_), static_cast<T>(v32_),
3235 static_cast<T
>(v33_), static_cast<T>(v34_),
static_cast<T
>(v35_),
3236 static_cast<T>(v36_),
static_cast<T
>(v37_), static_cast<T>(v38_),
3237 static_cast<T
>(v39_), static_cast<T>(v40_),
static_cast<T
>(v41_),
3238 static_cast<T>(v42_),
static_cast<T
>(v43_), static_cast<T>(v44_),
3239 static_cast<T
>(v45_), static_cast<T>(v46_),
static_cast<T
>(v47_),
3240 static_cast<T>(v48_),
static_cast<T
>(v49_), static_cast<T>(v50_)
3247 void operator=(
const ValueArray50 & other);
3301 # if GTEST_HAS_COMBINE 3307 template <
typename T1,
typename T2>
3308 class CartesianProductGenerator2
3309 :
public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2> >
3312 typedef ::std::tr1::tuple<T1, T2> ParamType;
3314 CartesianProductGenerator2(
const ParamGenerator<T1> & g1,
3315 const ParamGenerator<T2> & g2)
3316 : g1_(g1), g2_(g2) {}
3317 virtual ~CartesianProductGenerator2() {}
3319 virtual ParamIteratorInterface<ParamType> * Begin()
const 3321 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin());
3323 virtual ParamIteratorInterface<ParamType> * End()
const 3325 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end());
3329 class Iterator :
public ParamIteratorInterface<ParamType>
3332 Iterator(
const ParamGeneratorInterface<ParamType> * base,
3333 const ParamGenerator<T1> & g1,
3335 const ParamGenerator<T2> & g2,
3338 begin1_(g1.begin()), end1_(g1.
end()), current1_(current1),
3339 begin2_(g2.begin()), end2_(g2.
end()), current2_(current2)
3341 ComputeCurrentValue();
3343 virtual ~Iterator() {}
3345 virtual const ParamGeneratorInterface<ParamType> * BaseGenerator()
const 3351 virtual void Advance()
3356 if (current2_ == end2_)
3358 current2_ = begin2_;
3362 ComputeCurrentValue();
3364 virtual ParamIteratorInterface<ParamType> * Clone()
const 3366 return new Iterator(*
this);
3368 virtual const ParamType * Current()
const {
return ¤t_value_; }
3369 virtual bool Equals(
const ParamIteratorInterface<ParamType> & other)
const 3374 <<
"The program attempted to compare iterators " 3375 <<
"from different generators." << std::endl;
3376 const Iterator * typed_other =
3377 CheckedDowncastToActualType<const Iterator>(&other);
3381 return (AtEnd() && typed_other->AtEnd()) ||
3383 current1_ == typed_other->current1_ &&
3384 current2_ == typed_other->current2_);
3388 Iterator(
const Iterator & other)
3389 : base_(other.base_),
3390 begin1_(other.begin1_),
3392 current1_(other.current1_),
3393 begin2_(other.begin2_),
3395 current2_(other.current2_)
3397 ComputeCurrentValue();
3400 void ComputeCurrentValue()
3403 { current_value_ = ParamType(*current1_, *current2_); }
3410 current1_ == end1_ ||
3417 const ParamGeneratorInterface<ParamType> *
const base_;
3426 ParamType current_value_;
3430 void operator=(
const CartesianProductGenerator2 & other);
3432 const ParamGenerator<T1> g1_;
3433 const ParamGenerator<T2> g2_;
3437 template <
typename T1,
typename T2,
typename T3>
3438 class CartesianProductGenerator3
3439 :
public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3> >
3442 typedef ::std::tr1::tuple<T1, T2, T3> ParamType;
3444 CartesianProductGenerator3(
const ParamGenerator<T1> & g1,
3445 const ParamGenerator<T2> & g2,
const ParamGenerator<T3> & g3)
3446 : g1_(g1), g2_(g2), g3_(g3) {}
3447 virtual ~CartesianProductGenerator3() {}
3449 virtual ParamIteratorInterface<ParamType> * Begin()
const 3451 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
3454 virtual ParamIteratorInterface<ParamType> * End()
const 3456 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end());
3460 class Iterator :
public ParamIteratorInterface<ParamType>
3463 Iterator(
const ParamGeneratorInterface<ParamType> * base,
3464 const ParamGenerator<T1> & g1,
3466 const ParamGenerator<T2> & g2,
3468 const ParamGenerator<T3> & g3,
3471 begin1_(g1.begin()), end1_(g1.
end()), current1_(current1),
3472 begin2_(g2.begin()), end2_(g2.
end()), current2_(current2),
3473 begin3_(g3.begin()), end3_(g3.
end()), current3_(current3)
3475 ComputeCurrentValue();
3477 virtual ~Iterator() {}
3479 virtual const ParamGeneratorInterface<ParamType> * BaseGenerator()
const 3485 virtual void Advance()
3490 if (current3_ == end3_)
3492 current3_ = begin3_;
3496 if (current2_ == end2_)
3498 current2_ = begin2_;
3502 ComputeCurrentValue();
3504 virtual ParamIteratorInterface<ParamType> * Clone()
const 3506 return new Iterator(*
this);
3508 virtual const ParamType * Current()
const {
return ¤t_value_; }
3509 virtual bool Equals(
const ParamIteratorInterface<ParamType> & other)
const 3514 <<
"The program attempted to compare iterators " 3515 <<
"from different generators." << std::endl;
3516 const Iterator * typed_other =
3517 CheckedDowncastToActualType<const Iterator>(&other);
3521 return (AtEnd() && typed_other->AtEnd()) ||
3523 current1_ == typed_other->current1_ &&
3524 current2_ == typed_other->current2_ &&
3525 current3_ == typed_other->current3_);
3529 Iterator(
const Iterator & other)
3530 : base_(other.base_),
3531 begin1_(other.begin1_),
3533 current1_(other.current1_),
3534 begin2_(other.begin2_),
3536 current2_(other.current2_),
3537 begin3_(other.begin3_),
3539 current3_(other.current3_)
3541 ComputeCurrentValue();
3544 void ComputeCurrentValue()
3547 { current_value_ = ParamType(*current1_, *current2_, *current3_); }
3554 current1_ == end1_ ||
3555 current2_ == end2_ ||
3562 const ParamGeneratorInterface<ParamType> *
const base_;
3574 ParamType current_value_;
3578 void operator=(
const CartesianProductGenerator3 & other);
3580 const ParamGenerator<T1> g1_;
3581 const ParamGenerator<T2> g2_;
3582 const ParamGenerator<T3> g3_;
3586 template <
typename T1,
typename T2,
typename T3,
typename T4>
3587 class CartesianProductGenerator4
3588 :
public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4> >
3591 typedef ::std::tr1::tuple<T1, T2, T3, T4> ParamType;
3593 CartesianProductGenerator4(
const ParamGenerator<T1> & g1,
3594 const ParamGenerator<T2> & g2,
const ParamGenerator<T3> & g3,
3595 const ParamGenerator<T4> & g4)
3596 : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {}
3597 virtual ~CartesianProductGenerator4() {}
3599 virtual ParamIteratorInterface<ParamType> * Begin()
const 3601 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
3602 g3_.begin(), g4_, g4_.begin());
3604 virtual ParamIteratorInterface<ParamType> * End()
const 3606 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
3611 class Iterator :
public ParamIteratorInterface<ParamType>
3614 Iterator(
const ParamGeneratorInterface<ParamType> * base,
3615 const ParamGenerator<T1> & g1,
3617 const ParamGenerator<T2> & g2,
3619 const ParamGenerator<T3> & g3,
3621 const ParamGenerator<T4> & g4,
3624 begin1_(g1.begin()), end1_(g1.
end()), current1_(current1),
3625 begin2_(g2.begin()), end2_(g2.
end()), current2_(current2),
3626 begin3_(g3.begin()), end3_(g3.
end()), current3_(current3),
3627 begin4_(g4.begin()), end4_(g4.
end()), current4_(current4)
3629 ComputeCurrentValue();
3631 virtual ~Iterator() {}
3633 virtual const ParamGeneratorInterface<ParamType> * BaseGenerator()
const 3639 virtual void Advance()
3644 if (current4_ == end4_)
3646 current4_ = begin4_;
3650 if (current3_ == end3_)
3652 current3_ = begin3_;
3656 if (current2_ == end2_)
3658 current2_ = begin2_;
3662 ComputeCurrentValue();
3664 virtual ParamIteratorInterface<ParamType> * Clone()
const 3666 return new Iterator(*
this);
3668 virtual const ParamType * Current()
const {
return ¤t_value_; }
3669 virtual bool Equals(
const ParamIteratorInterface<ParamType> & other)
const 3674 <<
"The program attempted to compare iterators " 3675 <<
"from different generators." << std::endl;
3676 const Iterator * typed_other =
3677 CheckedDowncastToActualType<const Iterator>(&other);
3681 return (AtEnd() && typed_other->AtEnd()) ||
3683 current1_ == typed_other->current1_ &&
3684 current2_ == typed_other->current2_ &&
3685 current3_ == typed_other->current3_ &&
3686 current4_ == typed_other->current4_);
3690 Iterator(
const Iterator & other)
3691 : base_(other.base_),
3692 begin1_(other.begin1_),
3694 current1_(other.current1_),
3695 begin2_(other.begin2_),
3697 current2_(other.current2_),
3698 begin3_(other.begin3_),
3700 current3_(other.current3_),
3701 begin4_(other.begin4_),
3703 current4_(other.current4_)
3705 ComputeCurrentValue();
3708 void ComputeCurrentValue()
3711 current_value_ = ParamType(*current1_, *current2_, *current3_,
3719 current1_ == end1_ ||
3720 current2_ == end2_ ||
3721 current3_ == end3_ ||
3728 const ParamGeneratorInterface<ParamType> *
const base_;
3743 ParamType current_value_;
3747 void operator=(
const CartesianProductGenerator4 & other);
3749 const ParamGenerator<T1> g1_;
3750 const ParamGenerator<T2> g2_;
3751 const ParamGenerator<T3> g3_;
3752 const ParamGenerator<T4> g4_;
3756 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
3757 class CartesianProductGenerator5
3758 :
public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5> >
3761 typedef ::std::tr1::tuple<T1, T2, T3, T4, T5> ParamType;
3763 CartesianProductGenerator5(
const ParamGenerator<T1> & g1,
3764 const ParamGenerator<T2> & g2,
const ParamGenerator<T3> & g3,
3765 const ParamGenerator<T4> & g4,
const ParamGenerator<T5> & g5)
3766 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {}
3767 virtual ~CartesianProductGenerator5() {}
3769 virtual ParamIteratorInterface<ParamType> * Begin()
const 3771 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
3772 g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin());
3774 virtual ParamIteratorInterface<ParamType> * End()
const 3776 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
3777 g4_, g4_.end(), g5_, g5_.end());
3781 class Iterator :
public ParamIteratorInterface<ParamType>
3784 Iterator(
const ParamGeneratorInterface<ParamType> * base,
3785 const ParamGenerator<T1> & g1,
3787 const ParamGenerator<T2> & g2,
3789 const ParamGenerator<T3> & g3,
3791 const ParamGenerator<T4> & g4,
3793 const ParamGenerator<T5> & g5,
3796 begin1_(g1.begin()), end1_(g1.
end()), current1_(current1),
3797 begin2_(g2.begin()), end2_(g2.
end()), current2_(current2),
3798 begin3_(g3.begin()), end3_(g3.
end()), current3_(current3),
3799 begin4_(g4.begin()), end4_(g4.
end()), current4_(current4),
3800 begin5_(g5.begin()), end5_(g5.
end()), current5_(current5)
3802 ComputeCurrentValue();
3804 virtual ~Iterator() {}
3806 virtual const ParamGeneratorInterface<ParamType> * BaseGenerator()
const 3812 virtual void Advance()
3817 if (current5_ == end5_)
3819 current5_ = begin5_;
3823 if (current4_ == end4_)
3825 current4_ = begin4_;
3829 if (current3_ == end3_)
3831 current3_ = begin3_;
3835 if (current2_ == end2_)
3837 current2_ = begin2_;
3841 ComputeCurrentValue();
3843 virtual ParamIteratorInterface<ParamType> * Clone()
const 3845 return new Iterator(*
this);
3847 virtual const ParamType * Current()
const {
return ¤t_value_; }
3848 virtual bool Equals(
const ParamIteratorInterface<ParamType> & other)
const 3853 <<
"The program attempted to compare iterators " 3854 <<
"from different generators." << std::endl;
3855 const Iterator * typed_other =
3856 CheckedDowncastToActualType<const Iterator>(&other);
3860 return (AtEnd() && typed_other->AtEnd()) ||
3862 current1_ == typed_other->current1_ &&
3863 current2_ == typed_other->current2_ &&
3864 current3_ == typed_other->current3_ &&
3865 current4_ == typed_other->current4_ &&
3866 current5_ == typed_other->current5_);
3870 Iterator(
const Iterator & other)
3871 : base_(other.base_),
3872 begin1_(other.begin1_),
3874 current1_(other.current1_),
3875 begin2_(other.begin2_),
3877 current2_(other.current2_),
3878 begin3_(other.begin3_),
3880 current3_(other.current3_),
3881 begin4_(other.begin4_),
3883 current4_(other.current4_),
3884 begin5_(other.begin5_),
3886 current5_(other.current5_)
3888 ComputeCurrentValue();
3891 void ComputeCurrentValue()
3894 current_value_ = ParamType(*current1_, *current2_, *current3_,
3895 *current4_, *current5_);
3902 current1_ == end1_ ||
3903 current2_ == end2_ ||
3904 current3_ == end3_ ||
3905 current4_ == end4_ ||
3912 const ParamGeneratorInterface<ParamType> *
const base_;
3930 ParamType current_value_;
3934 void operator=(
const CartesianProductGenerator5 & other);
3936 const ParamGenerator<T1> g1_;
3937 const ParamGenerator<T2> g2_;
3938 const ParamGenerator<T3> g3_;
3939 const ParamGenerator<T4> g4_;
3940 const ParamGenerator<T5> g5_;
3944 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
3946 class CartesianProductGenerator6
3947 :
public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5,
3951 typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> ParamType;
3953 CartesianProductGenerator6(
const ParamGenerator<T1> & g1,
3954 const ParamGenerator<T2> & g2,
const ParamGenerator<T3> & g3,
3955 const ParamGenerator<T4> & g4,
const ParamGenerator<T5> & g5,
3956 const ParamGenerator<T6> & g6)
3957 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {}
3958 virtual ~CartesianProductGenerator6() {}
3960 virtual ParamIteratorInterface<ParamType> * Begin()
const 3962 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
3963 g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin());
3965 virtual ParamIteratorInterface<ParamType> * End()
const 3967 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
3968 g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end());
3972 class Iterator :
public ParamIteratorInterface<ParamType>
3975 Iterator(
const ParamGeneratorInterface<ParamType> * base,
3976 const ParamGenerator<T1> & g1,
3978 const ParamGenerator<T2> & g2,
3980 const ParamGenerator<T3> & g3,
3982 const ParamGenerator<T4> & g4,
3984 const ParamGenerator<T5> & g5,
3986 const ParamGenerator<T6> & g6,
3989 begin1_(g1.begin()), end1_(g1.
end()), current1_(current1),
3990 begin2_(g2.begin()), end2_(g2.
end()), current2_(current2),
3991 begin3_(g3.begin()), end3_(g3.
end()), current3_(current3),
3992 begin4_(g4.begin()), end4_(g4.
end()), current4_(current4),
3993 begin5_(g5.begin()), end5_(g5.
end()), current5_(current5),
3994 begin6_(g6.begin()), end6_(g6.
end()), current6_(current6)
3996 ComputeCurrentValue();
3998 virtual ~Iterator() {}
4000 virtual const ParamGeneratorInterface<ParamType> * BaseGenerator()
const 4006 virtual void Advance()
4011 if (current6_ == end6_)
4013 current6_ = begin6_;
4017 if (current5_ == end5_)
4019 current5_ = begin5_;
4023 if (current4_ == end4_)
4025 current4_ = begin4_;
4029 if (current3_ == end3_)
4031 current3_ = begin3_;
4035 if (current2_ == end2_)
4037 current2_ = begin2_;
4041 ComputeCurrentValue();
4043 virtual ParamIteratorInterface<ParamType> * Clone()
const 4045 return new Iterator(*
this);
4047 virtual const ParamType * Current()
const {
return ¤t_value_; }
4048 virtual bool Equals(
const ParamIteratorInterface<ParamType> & other)
const 4053 <<
"The program attempted to compare iterators " 4054 <<
"from different generators." << std::endl;
4055 const Iterator * typed_other =
4056 CheckedDowncastToActualType<const Iterator>(&other);
4060 return (AtEnd() && typed_other->AtEnd()) ||
4062 current1_ == typed_other->current1_ &&
4063 current2_ == typed_other->current2_ &&
4064 current3_ == typed_other->current3_ &&
4065 current4_ == typed_other->current4_ &&
4066 current5_ == typed_other->current5_ &&
4067 current6_ == typed_other->current6_);
4071 Iterator(
const Iterator & other)
4072 : base_(other.base_),
4073 begin1_(other.begin1_),
4075 current1_(other.current1_),
4076 begin2_(other.begin2_),
4078 current2_(other.current2_),
4079 begin3_(other.begin3_),
4081 current3_(other.current3_),
4082 begin4_(other.begin4_),
4084 current4_(other.current4_),
4085 begin5_(other.begin5_),
4087 current5_(other.current5_),
4088 begin6_(other.begin6_),
4090 current6_(other.current6_)
4092 ComputeCurrentValue();
4095 void ComputeCurrentValue()
4098 current_value_ = ParamType(*current1_, *current2_, *current3_,
4099 *current4_, *current5_, *current6_);
4106 current1_ == end1_ ||
4107 current2_ == end2_ ||
4108 current3_ == end3_ ||
4109 current4_ == end4_ ||
4110 current5_ == end5_ ||
4117 const ParamGeneratorInterface<ParamType> *
const base_;
4138 ParamType current_value_;
4142 void operator=(
const CartesianProductGenerator6 & other);
4144 const ParamGenerator<T1> g1_;
4145 const ParamGenerator<T2> g2_;
4146 const ParamGenerator<T3> g3_;
4147 const ParamGenerator<T4> g4_;
4148 const ParamGenerator<T5> g5_;
4149 const ParamGenerator<T6> g6_;
4153 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4154 typename T6,
typename T7>
4155 class CartesianProductGenerator7
4156 :
public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
4160 typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7> ParamType;
4162 CartesianProductGenerator7(
const ParamGenerator<T1> & g1,
4163 const ParamGenerator<T2> & g2,
const ParamGenerator<T3> & g3,
4164 const ParamGenerator<T4> & g4,
const ParamGenerator<T5> & g5,
4165 const ParamGenerator<T6> & g6,
const ParamGenerator<T7> & g7)
4166 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {}
4167 virtual ~CartesianProductGenerator7() {}
4169 virtual ParamIteratorInterface<ParamType> * Begin()
const 4171 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
4172 g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
4175 virtual ParamIteratorInterface<ParamType> * End()
const 4177 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
4178 g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end());
4182 class Iterator :
public ParamIteratorInterface<ParamType>
4185 Iterator(
const ParamGeneratorInterface<ParamType> * base,
4186 const ParamGenerator<T1> & g1,
4188 const ParamGenerator<T2> & g2,
4190 const ParamGenerator<T3> & g3,
4192 const ParamGenerator<T4> & g4,
4194 const ParamGenerator<T5> & g5,
4196 const ParamGenerator<T6> & g6,
4198 const ParamGenerator<T7> & g7,
4201 begin1_(g1.begin()), end1_(g1.
end()), current1_(current1),
4202 begin2_(g2.begin()), end2_(g2.
end()), current2_(current2),
4203 begin3_(g3.begin()), end3_(g3.
end()), current3_(current3),
4204 begin4_(g4.begin()), end4_(g4.
end()), current4_(current4),
4205 begin5_(g5.begin()), end5_(g5.
end()), current5_(current5),
4206 begin6_(g6.begin()), end6_(g6.
end()), current6_(current6),
4207 begin7_(g7.begin()), end7_(g7.
end()), current7_(current7)
4209 ComputeCurrentValue();
4211 virtual ~Iterator() {}
4213 virtual const ParamGeneratorInterface<ParamType> * BaseGenerator()
const 4219 virtual void Advance()
4224 if (current7_ == end7_)
4226 current7_ = begin7_;
4230 if (current6_ == end6_)
4232 current6_ = begin6_;
4236 if (current5_ == end5_)
4238 current5_ = begin5_;
4242 if (current4_ == end4_)
4244 current4_ = begin4_;
4248 if (current3_ == end3_)
4250 current3_ = begin3_;
4254 if (current2_ == end2_)
4256 current2_ = begin2_;
4260 ComputeCurrentValue();
4262 virtual ParamIteratorInterface<ParamType> * Clone()
const 4264 return new Iterator(*
this);
4266 virtual const ParamType * Current()
const {
return ¤t_value_; }
4267 virtual bool Equals(
const ParamIteratorInterface<ParamType> & other)
const 4272 <<
"The program attempted to compare iterators " 4273 <<
"from different generators." << std::endl;
4274 const Iterator * typed_other =
4275 CheckedDowncastToActualType<const Iterator>(&other);
4279 return (AtEnd() && typed_other->AtEnd()) ||
4281 current1_ == typed_other->current1_ &&
4282 current2_ == typed_other->current2_ &&
4283 current3_ == typed_other->current3_ &&
4284 current4_ == typed_other->current4_ &&
4285 current5_ == typed_other->current5_ &&
4286 current6_ == typed_other->current6_ &&
4287 current7_ == typed_other->current7_);
4291 Iterator(
const Iterator & other)
4292 : base_(other.base_),
4293 begin1_(other.begin1_),
4295 current1_(other.current1_),
4296 begin2_(other.begin2_),
4298 current2_(other.current2_),
4299 begin3_(other.begin3_),
4301 current3_(other.current3_),
4302 begin4_(other.begin4_),
4304 current4_(other.current4_),
4305 begin5_(other.begin5_),
4307 current5_(other.current5_),
4308 begin6_(other.begin6_),
4310 current6_(other.current6_),
4311 begin7_(other.begin7_),
4313 current7_(other.current7_)
4315 ComputeCurrentValue();
4318 void ComputeCurrentValue()
4321 current_value_ = ParamType(*current1_, *current2_, *current3_,
4322 *current4_, *current5_, *current6_, *current7_);
4329 current1_ == end1_ ||
4330 current2_ == end2_ ||
4331 current3_ == end3_ ||
4332 current4_ == end4_ ||
4333 current5_ == end5_ ||
4334 current6_ == end6_ ||
4341 const ParamGeneratorInterface<ParamType> *
const base_;
4365 ParamType current_value_;
4369 void operator=(
const CartesianProductGenerator7 & other);
4371 const ParamGenerator<T1> g1_;
4372 const ParamGenerator<T2> g2_;
4373 const ParamGenerator<T3> g3_;
4374 const ParamGenerator<T4> g4_;
4375 const ParamGenerator<T5> g5_;
4376 const ParamGenerator<T6> g6_;
4377 const ParamGenerator<T7> g7_;
4381 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4382 typename T6,
typename T7,
typename T8>
4383 class CartesianProductGenerator8
4384 :
public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
4388 typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8> ParamType;
4390 CartesianProductGenerator8(
const ParamGenerator<T1> & g1,
4391 const ParamGenerator<T2> & g2,
const ParamGenerator<T3> & g3,
4392 const ParamGenerator<T4> & g4,
const ParamGenerator<T5> & g5,
4393 const ParamGenerator<T6> & g6,
const ParamGenerator<T7> & g7,
4394 const ParamGenerator<T8> & g8)
4395 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7),
4397 virtual ~CartesianProductGenerator8() {}
4399 virtual ParamIteratorInterface<ParamType> * Begin()
const 4401 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
4402 g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
4403 g7_.begin(), g8_, g8_.begin());
4405 virtual ParamIteratorInterface<ParamType> * End()
const 4407 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
4408 g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
4413 class Iterator :
public ParamIteratorInterface<ParamType>
4416 Iterator(
const ParamGeneratorInterface<ParamType> * base,
4417 const ParamGenerator<T1> & g1,
4419 const ParamGenerator<T2> & g2,
4421 const ParamGenerator<T3> & g3,
4423 const ParamGenerator<T4> & g4,
4425 const ParamGenerator<T5> & g5,
4427 const ParamGenerator<T6> & g6,
4429 const ParamGenerator<T7> & g7,
4431 const ParamGenerator<T8> & g8,
4434 begin1_(g1.begin()), end1_(g1.
end()), current1_(current1),
4435 begin2_(g2.begin()), end2_(g2.
end()), current2_(current2),
4436 begin3_(g3.begin()), end3_(g3.
end()), current3_(current3),
4437 begin4_(g4.begin()), end4_(g4.
end()), current4_(current4),
4438 begin5_(g5.begin()), end5_(g5.
end()), current5_(current5),
4439 begin6_(g6.begin()), end6_(g6.
end()), current6_(current6),
4440 begin7_(g7.begin()), end7_(g7.
end()), current7_(current7),
4441 begin8_(g8.begin()), end8_(g8.
end()), current8_(current8)
4443 ComputeCurrentValue();
4445 virtual ~Iterator() {}
4447 virtual const ParamGeneratorInterface<ParamType> * BaseGenerator()
const 4453 virtual void Advance()
4458 if (current8_ == end8_)
4460 current8_ = begin8_;
4464 if (current7_ == end7_)
4466 current7_ = begin7_;
4470 if (current6_ == end6_)
4472 current6_ = begin6_;
4476 if (current5_ == end5_)
4478 current5_ = begin5_;
4482 if (current4_ == end4_)
4484 current4_ = begin4_;
4488 if (current3_ == end3_)
4490 current3_ = begin3_;
4494 if (current2_ == end2_)
4496 current2_ = begin2_;
4500 ComputeCurrentValue();
4502 virtual ParamIteratorInterface<ParamType> * Clone()
const 4504 return new Iterator(*
this);
4506 virtual const ParamType * Current()
const {
return ¤t_value_; }
4507 virtual bool Equals(
const ParamIteratorInterface<ParamType> & other)
const 4512 <<
"The program attempted to compare iterators " 4513 <<
"from different generators." << std::endl;
4514 const Iterator * typed_other =
4515 CheckedDowncastToActualType<const Iterator>(&other);
4519 return (AtEnd() && typed_other->AtEnd()) ||
4521 current1_ == typed_other->current1_ &&
4522 current2_ == typed_other->current2_ &&
4523 current3_ == typed_other->current3_ &&
4524 current4_ == typed_other->current4_ &&
4525 current5_ == typed_other->current5_ &&
4526 current6_ == typed_other->current6_ &&
4527 current7_ == typed_other->current7_ &&
4528 current8_ == typed_other->current8_);
4532 Iterator(
const Iterator & other)
4533 : base_(other.base_),
4534 begin1_(other.begin1_),
4536 current1_(other.current1_),
4537 begin2_(other.begin2_),
4539 current2_(other.current2_),
4540 begin3_(other.begin3_),
4542 current3_(other.current3_),
4543 begin4_(other.begin4_),
4545 current4_(other.current4_),
4546 begin5_(other.begin5_),
4548 current5_(other.current5_),
4549 begin6_(other.begin6_),
4551 current6_(other.current6_),
4552 begin7_(other.begin7_),
4554 current7_(other.current7_),
4555 begin8_(other.begin8_),
4557 current8_(other.current8_)
4559 ComputeCurrentValue();
4562 void ComputeCurrentValue()
4565 current_value_ = ParamType(*current1_, *current2_, *current3_,
4566 *current4_, *current5_, *current6_, *current7_, *current8_);
4573 current1_ == end1_ ||
4574 current2_ == end2_ ||
4575 current3_ == end3_ ||
4576 current4_ == end4_ ||
4577 current5_ == end5_ ||
4578 current6_ == end6_ ||
4579 current7_ == end7_ ||
4586 const ParamGeneratorInterface<ParamType> *
const base_;
4613 ParamType current_value_;
4617 void operator=(
const CartesianProductGenerator8 & other);
4619 const ParamGenerator<T1> g1_;
4620 const ParamGenerator<T2> g2_;
4621 const ParamGenerator<T3> g3_;
4622 const ParamGenerator<T4> g4_;
4623 const ParamGenerator<T5> g5_;
4624 const ParamGenerator<T6> g6_;
4625 const ParamGenerator<T7> g7_;
4626 const ParamGenerator<T8> g8_;
4630 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4631 typename T6,
typename T7,
typename T8,
typename T9>
4632 class CartesianProductGenerator9
4633 :
public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
4637 typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9> ParamType;
4639 CartesianProductGenerator9(
const ParamGenerator<T1> & g1,
4640 const ParamGenerator<T2> & g2,
const ParamGenerator<T3> & g3,
4641 const ParamGenerator<T4> & g4,
const ParamGenerator<T5> & g5,
4642 const ParamGenerator<T6> & g6,
const ParamGenerator<T7> & g7,
4643 const ParamGenerator<T8> & g8,
const ParamGenerator<T9> & g9)
4644 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
4646 virtual ~CartesianProductGenerator9() {}
4648 virtual ParamIteratorInterface<ParamType> * Begin()
const 4650 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
4651 g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
4652 g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin());
4654 virtual ParamIteratorInterface<ParamType> * End()
const 4656 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
4657 g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
4658 g8_.end(), g9_, g9_.end());
4662 class Iterator :
public ParamIteratorInterface<ParamType>
4665 Iterator(
const ParamGeneratorInterface<ParamType> * base,
4666 const ParamGenerator<T1> & g1,
4668 const ParamGenerator<T2> & g2,
4670 const ParamGenerator<T3> & g3,
4672 const ParamGenerator<T4> & g4,
4674 const ParamGenerator<T5> & g5,
4676 const ParamGenerator<T6> & g6,
4678 const ParamGenerator<T7> & g7,
4680 const ParamGenerator<T8> & g8,
4682 const ParamGenerator<T9> & g9,
4685 begin1_(g1.begin()), end1_(g1.
end()), current1_(current1),
4686 begin2_(g2.begin()), end2_(g2.
end()), current2_(current2),
4687 begin3_(g3.begin()), end3_(g3.
end()), current3_(current3),
4688 begin4_(g4.begin()), end4_(g4.
end()), current4_(current4),
4689 begin5_(g5.begin()), end5_(g5.
end()), current5_(current5),
4690 begin6_(g6.begin()), end6_(g6.
end()), current6_(current6),
4691 begin7_(g7.begin()), end7_(g7.
end()), current7_(current7),
4692 begin8_(g8.begin()), end8_(g8.
end()), current8_(current8),
4693 begin9_(g9.begin()), end9_(g9.
end()), current9_(current9)
4695 ComputeCurrentValue();
4697 virtual ~Iterator() {}
4699 virtual const ParamGeneratorInterface<ParamType> * BaseGenerator()
const 4705 virtual void Advance()
4710 if (current9_ == end9_)
4712 current9_ = begin9_;
4716 if (current8_ == end8_)
4718 current8_ = begin8_;
4722 if (current7_ == end7_)
4724 current7_ = begin7_;
4728 if (current6_ == end6_)
4730 current6_ = begin6_;
4734 if (current5_ == end5_)
4736 current5_ = begin5_;
4740 if (current4_ == end4_)
4742 current4_ = begin4_;
4746 if (current3_ == end3_)
4748 current3_ = begin3_;
4752 if (current2_ == end2_)
4754 current2_ = begin2_;
4758 ComputeCurrentValue();
4760 virtual ParamIteratorInterface<ParamType> * Clone()
const 4762 return new Iterator(*
this);
4764 virtual const ParamType * Current()
const {
return ¤t_value_; }
4765 virtual bool Equals(
const ParamIteratorInterface<ParamType> & other)
const 4770 <<
"The program attempted to compare iterators " 4771 <<
"from different generators." << std::endl;
4772 const Iterator * typed_other =
4773 CheckedDowncastToActualType<const Iterator>(&other);
4777 return (AtEnd() && typed_other->AtEnd()) ||
4779 current1_ == typed_other->current1_ &&
4780 current2_ == typed_other->current2_ &&
4781 current3_ == typed_other->current3_ &&
4782 current4_ == typed_other->current4_ &&
4783 current5_ == typed_other->current5_ &&
4784 current6_ == typed_other->current6_ &&
4785 current7_ == typed_other->current7_ &&
4786 current8_ == typed_other->current8_ &&
4787 current9_ == typed_other->current9_);
4791 Iterator(
const Iterator & other)
4792 : base_(other.base_),
4793 begin1_(other.begin1_),
4795 current1_(other.current1_),
4796 begin2_(other.begin2_),
4798 current2_(other.current2_),
4799 begin3_(other.begin3_),
4801 current3_(other.current3_),
4802 begin4_(other.begin4_),
4804 current4_(other.current4_),
4805 begin5_(other.begin5_),
4807 current5_(other.current5_),
4808 begin6_(other.begin6_),
4810 current6_(other.current6_),
4811 begin7_(other.begin7_),
4813 current7_(other.current7_),
4814 begin8_(other.begin8_),
4816 current8_(other.current8_),
4817 begin9_(other.begin9_),
4819 current9_(other.current9_)
4821 ComputeCurrentValue();
4824 void ComputeCurrentValue()
4827 current_value_ = ParamType(*current1_, *current2_, *current3_,
4828 *current4_, *current5_, *current6_, *current7_, *current8_,
4836 current1_ == end1_ ||
4837 current2_ == end2_ ||
4838 current3_ == end3_ ||
4839 current4_ == end4_ ||
4840 current5_ == end5_ ||
4841 current6_ == end6_ ||
4842 current7_ == end7_ ||
4843 current8_ == end8_ ||
4850 const ParamGeneratorInterface<ParamType> *
const base_;
4880 ParamType current_value_;
4884 void operator=(
const CartesianProductGenerator9 & other);
4886 const ParamGenerator<T1> g1_;
4887 const ParamGenerator<T2> g2_;
4888 const ParamGenerator<T3> g3_;
4889 const ParamGenerator<T4> g4_;
4890 const ParamGenerator<T5> g5_;
4891 const ParamGenerator<T6> g6_;
4892 const ParamGenerator<T7> g7_;
4893 const ParamGenerator<T8> g8_;
4894 const ParamGenerator<T9> g9_;
4898 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4899 typename T6,
typename T7,
typename T8,
typename T9,
typename T10>
4900 class CartesianProductGenerator10
4901 :
public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
4905 typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> ParamType;
4907 CartesianProductGenerator10(
const ParamGenerator<T1> & g1,
4908 const ParamGenerator<T2> & g2,
const ParamGenerator<T3> & g3,
4909 const ParamGenerator<T4> & g4,
const ParamGenerator<T5> & g5,
4910 const ParamGenerator<T6> & g6,
const ParamGenerator<T7> & g7,
4911 const ParamGenerator<T8> & g8,
const ParamGenerator<T9> & g9,
4912 const ParamGenerator<T10> & g10)
4913 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
4914 g9_(g9), g10_(g10) {}
4915 virtual ~CartesianProductGenerator10() {}
4917 virtual ParamIteratorInterface<ParamType> * Begin()
const 4919 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
4920 g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
4921 g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin(), g10_, g10_.begin());
4923 virtual ParamIteratorInterface<ParamType> * End()
const 4925 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
4926 g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
4927 g8_.end(), g9_, g9_.end(), g10_, g10_.end());
4931 class Iterator :
public ParamIteratorInterface<ParamType>
4934 Iterator(
const ParamGeneratorInterface<ParamType> * base,
4935 const ParamGenerator<T1> & g1,
4937 const ParamGenerator<T2> & g2,
4939 const ParamGenerator<T3> & g3,
4941 const ParamGenerator<T4> & g4,
4943 const ParamGenerator<T5> & g5,
4945 const ParamGenerator<T6> & g6,
4947 const ParamGenerator<T7> & g7,
4949 const ParamGenerator<T8> & g8,
4951 const ParamGenerator<T9> & g9,
4953 const ParamGenerator<T10> & g10,
4956 begin1_(g1.begin()), end1_(g1.
end()), current1_(current1),
4957 begin2_(g2.begin()), end2_(g2.
end()), current2_(current2),
4958 begin3_(g3.begin()), end3_(g3.
end()), current3_(current3),
4959 begin4_(g4.begin()), end4_(g4.
end()), current4_(current4),
4960 begin5_(g5.begin()), end5_(g5.
end()), current5_(current5),
4961 begin6_(g6.begin()), end6_(g6.
end()), current6_(current6),
4962 begin7_(g7.begin()), end7_(g7.
end()), current7_(current7),
4963 begin8_(g8.begin()), end8_(g8.
end()), current8_(current8),
4964 begin9_(g9.begin()), end9_(g9.
end()), current9_(current9),
4965 begin10_(g10.begin()), end10_(g10.
end()), current10_(current10)
4967 ComputeCurrentValue();
4969 virtual ~Iterator() {}
4971 virtual const ParamGeneratorInterface<ParamType> * BaseGenerator()
const 4977 virtual void Advance()
4982 if (current10_ == end10_)
4984 current10_ = begin10_;
4988 if (current9_ == end9_)
4990 current9_ = begin9_;
4994 if (current8_ == end8_)
4996 current8_ = begin8_;
5000 if (current7_ == end7_)
5002 current7_ = begin7_;
5006 if (current6_ == end6_)
5008 current6_ = begin6_;
5012 if (current5_ == end5_)
5014 current5_ = begin5_;
5018 if (current4_ == end4_)
5020 current4_ = begin4_;
5024 if (current3_ == end3_)
5026 current3_ = begin3_;
5030 if (current2_ == end2_)
5032 current2_ = begin2_;
5036 ComputeCurrentValue();
5038 virtual ParamIteratorInterface<ParamType> * Clone()
const 5040 return new Iterator(*
this);
5042 virtual const ParamType * Current()
const {
return ¤t_value_; }
5043 virtual bool Equals(
const ParamIteratorInterface<ParamType> & other)
const 5048 <<
"The program attempted to compare iterators " 5049 <<
"from different generators." << std::endl;
5050 const Iterator * typed_other =
5051 CheckedDowncastToActualType<const Iterator>(&other);
5055 return (AtEnd() && typed_other->AtEnd()) ||
5057 current1_ == typed_other->current1_ &&
5058 current2_ == typed_other->current2_ &&
5059 current3_ == typed_other->current3_ &&
5060 current4_ == typed_other->current4_ &&
5061 current5_ == typed_other->current5_ &&
5062 current6_ == typed_other->current6_ &&
5063 current7_ == typed_other->current7_ &&
5064 current8_ == typed_other->current8_ &&
5065 current9_ == typed_other->current9_ &&
5066 current10_ == typed_other->current10_);
5070 Iterator(
const Iterator & other)
5071 : base_(other.base_),
5072 begin1_(other.begin1_),
5074 current1_(other.current1_),
5075 begin2_(other.begin2_),
5077 current2_(other.current2_),
5078 begin3_(other.begin3_),
5080 current3_(other.current3_),
5081 begin4_(other.begin4_),
5083 current4_(other.current4_),
5084 begin5_(other.begin5_),
5086 current5_(other.current5_),
5087 begin6_(other.begin6_),
5089 current6_(other.current6_),
5090 begin7_(other.begin7_),
5092 current7_(other.current7_),
5093 begin8_(other.begin8_),
5095 current8_(other.current8_),
5096 begin9_(other.begin9_),
5098 current9_(other.current9_),
5099 begin10_(other.begin10_),
5100 end10_(other.end10_),
5101 current10_(other.current10_)
5103 ComputeCurrentValue();
5106 void ComputeCurrentValue()
5109 current_value_ = ParamType(*current1_, *current2_, *current3_,
5110 *current4_, *current5_, *current6_, *current7_, *current8_,
5111 *current9_, *current10_);
5118 current1_ == end1_ ||
5119 current2_ == end2_ ||
5120 current3_ == end3_ ||
5121 current4_ == end4_ ||
5122 current5_ == end5_ ||
5123 current6_ == end6_ ||
5124 current7_ == end7_ ||
5125 current8_ == end8_ ||
5126 current9_ == end9_ ||
5127 current10_ == end10_;
5133 const ParamGeneratorInterface<ParamType> *
const base_;
5166 ParamType current_value_;
5170 void operator=(
const CartesianProductGenerator10 & other);
5172 const ParamGenerator<T1> g1_;
5173 const ParamGenerator<T2> g2_;
5174 const ParamGenerator<T3> g3_;
5175 const ParamGenerator<T4> g4_;
5176 const ParamGenerator<T5> g5_;
5177 const ParamGenerator<T6> g6_;
5178 const ParamGenerator<T7> g7_;
5179 const ParamGenerator<T8> g8_;
5180 const ParamGenerator<T9> g9_;
5181 const ParamGenerator<T10> g10_;
5191 template <
class Generator1,
class Generator2>
5192 class CartesianProductHolder2
5195 CartesianProductHolder2(
const Generator1 & g1,
const Generator2 & g2)
5196 : g1_(g1), g2_(g2) {}
5197 template <
typename T1,
typename T2>
5198 operator ParamGenerator< ::std::tr1::tuple<T1, T2> >()
const 5200 return ParamGenerator< ::std::tr1::tuple<T1, T2> >(
5201 new CartesianProductGenerator2<T1, T2>(
5202 static_cast<ParamGenerator<T1>
>(g1_),
5203 static_cast<ParamGenerator<T2>
>(g2_)));
5208 void operator=(
const CartesianProductHolder2 & other);
5210 const Generator1 g1_;
5211 const Generator2 g2_;
5214 template <
class Generator1,
class Generator2,
class Generator3>
5215 class CartesianProductHolder3
5218 CartesianProductHolder3(
const Generator1 & g1,
const Generator2 & g2,
5219 const Generator3 & g3)
5220 : g1_(g1), g2_(g2), g3_(g3) {}
5221 template <
typename T1,
typename T2,
typename T3>
5222 operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3> >()
const 5224 return ParamGenerator< ::std::tr1::tuple<T1, T2, T3> >(
5225 new CartesianProductGenerator3<T1, T2, T3>(
5226 static_cast<ParamGenerator<T1>
>(g1_),
5227 static_cast<ParamGenerator<T2>
>(g2_),
5228 static_cast<ParamGenerator<T3>
>(g3_)));
5233 void operator=(
const CartesianProductHolder3 & other);
5235 const Generator1 g1_;
5236 const Generator2 g2_;
5237 const Generator3 g3_;
5240 template <
class Generator1,
class Generator2,
class Generator3,
5242 class CartesianProductHolder4
5245 CartesianProductHolder4(
const Generator1 & g1,
const Generator2 & g2,
5246 const Generator3 & g3,
const Generator4 & g4)
5247 : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {}
5248 template <
typename T1,
typename T2,
typename T3,
typename T4>
5249 operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4> >()
const 5251 return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4> >(
5252 new CartesianProductGenerator4<T1, T2, T3, T4>(
5253 static_cast<ParamGenerator<T1>
>(g1_),
5254 static_cast<ParamGenerator<T2>
>(g2_),
5255 static_cast<ParamGenerator<T3>
>(g3_),
5256 static_cast<ParamGenerator<T4>
>(g4_)));
5261 void operator=(
const CartesianProductHolder4 & other);
5263 const Generator1 g1_;
5264 const Generator2 g2_;
5265 const Generator3 g3_;
5266 const Generator4 g4_;
5269 template <
class Generator1,
class Generator2,
class Generator3,
5270 class Generator4,
class Generator5>
5271 class CartesianProductHolder5
5274 CartesianProductHolder5(
const Generator1 & g1,
const Generator2 & g2,
5275 const Generator3 & g3,
const Generator4 & g4,
const Generator5 & g5)
5276 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {}
5277 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
5278 operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5> >()
const 5280 return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5> >(
5281 new CartesianProductGenerator5<T1, T2, T3, T4, T5>(
5282 static_cast<ParamGenerator<T1>
>(g1_),
5283 static_cast<ParamGenerator<T2>
>(g2_),
5284 static_cast<ParamGenerator<T3>
>(g3_),
5285 static_cast<ParamGenerator<T4>
>(g4_),
5286 static_cast<ParamGenerator<T5>
>(g5_)));
5291 void operator=(
const CartesianProductHolder5 & other);
5293 const Generator1 g1_;
5294 const Generator2 g2_;
5295 const Generator3 g3_;
5296 const Generator4 g4_;
5297 const Generator5 g5_;
5300 template <
class Generator1,
class Generator2,
class Generator3,
5301 class Generator4,
class Generator5,
class Generator6>
5302 class CartesianProductHolder6
5305 CartesianProductHolder6(
const Generator1 & g1,
const Generator2 & g2,
5306 const Generator3 & g3,
const Generator4 & g4,
const Generator5 & g5,
5307 const Generator6 & g6)
5308 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {}
5309 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5311 operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> >()
const 5313 return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> >(
5314 new CartesianProductGenerator6<T1, T2, T3, T4, T5, T6>(
5315 static_cast<ParamGenerator<T1>
>(g1_),
5316 static_cast<ParamGenerator<T2>
>(g2_),
5317 static_cast<ParamGenerator<T3>
>(g3_),
5318 static_cast<ParamGenerator<T4>
>(g4_),
5319 static_cast<ParamGenerator<T5>
>(g5_),
5320 static_cast<ParamGenerator<T6>
>(g6_)));
5325 void operator=(
const CartesianProductHolder6 & other);
5327 const Generator1 g1_;
5328 const Generator2 g2_;
5329 const Generator3 g3_;
5330 const Generator4 g4_;
5331 const Generator5 g5_;
5332 const Generator6 g6_;
5335 template <
class Generator1,
class Generator2,
class Generator3,
5336 class Generator4,
class Generator5,
class Generator6,
class Generator7>
5337 class CartesianProductHolder7
5340 CartesianProductHolder7(
const Generator1 & g1,
const Generator2 & g2,
5341 const Generator3 & g3,
const Generator4 & g4,
const Generator5 & g5,
5342 const Generator6 & g6,
const Generator7 & g7)
5343 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {}
5344 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5345 typename T6,
typename T7>
5349 return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7> >(
5350 new CartesianProductGenerator7<T1, T2, T3, T4, T5, T6, T7>(
5351 static_cast<ParamGenerator<T1>
>(g1_),
5352 static_cast<ParamGenerator<T2>
>(g2_),
5353 static_cast<ParamGenerator<T3>
>(g3_),
5354 static_cast<ParamGenerator<T4>
>(g4_),
5355 static_cast<ParamGenerator<T5>
>(g5_),
5356 static_cast<ParamGenerator<T6>
>(g6_),
5357 static_cast<ParamGenerator<T7>
>(g7_)));
5362 void operator=(
const CartesianProductHolder7 & other);
5364 const Generator1 g1_;
5365 const Generator2 g2_;
5366 const Generator3 g3_;
5367 const Generator4 g4_;
5368 const Generator5 g5_;
5369 const Generator6 g6_;
5370 const Generator7 g7_;
5373 template <
class Generator1,
class Generator2,
class Generator3,
5374 class Generator4,
class Generator5,
class Generator6,
class Generator7,
5376 class CartesianProductHolder8
5379 CartesianProductHolder8(
const Generator1 & g1,
const Generator2 & g2,
5380 const Generator3 & g3,
const Generator4 & g4,
const Generator5 & g5,
5381 const Generator6 & g6,
const Generator7 & g7,
const Generator8 & g8)
5382 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7),
5384 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5385 typename T6,
typename T7,
typename T8>
5389 return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8> >(
5390 new CartesianProductGenerator8<T1, T2, T3, T4, T5, T6, T7, T8>(
5391 static_cast<ParamGenerator<T1>
>(g1_),
5392 static_cast<ParamGenerator<T2>
>(g2_),
5393 static_cast<ParamGenerator<T3>
>(g3_),
5394 static_cast<ParamGenerator<T4>
>(g4_),
5395 static_cast<ParamGenerator<T5>
>(g5_),
5396 static_cast<ParamGenerator<T6>
>(g6_),
5397 static_cast<ParamGenerator<T7>
>(g7_),
5398 static_cast<ParamGenerator<T8>
>(g8_)));
5403 void operator=(
const CartesianProductHolder8 & other);
5405 const Generator1 g1_;
5406 const Generator2 g2_;
5407 const Generator3 g3_;
5408 const Generator4 g4_;
5409 const Generator5 g5_;
5410 const Generator6 g6_;
5411 const Generator7 g7_;
5412 const Generator8 g8_;
5415 template <
class Generator1,
class Generator2,
class Generator3,
5416 class Generator4,
class Generator5,
class Generator6,
class Generator7,
5417 class Generator8,
class Generator9>
5418 class CartesianProductHolder9
5421 CartesianProductHolder9(
const Generator1 & g1,
const Generator2 & g2,
5422 const Generator3 & g3,
const Generator4 & g4,
const Generator5 & g5,
5423 const Generator6 & g6,
const Generator7 & g7,
const Generator8 & g8,
5424 const Generator9 & g9)
5425 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
5427 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5428 typename T6,
typename T7,
typename T8,
typename T9>
5434 new CartesianProductGenerator9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(
5435 static_cast<ParamGenerator<T1>
>(g1_),
5436 static_cast<ParamGenerator<T2>
>(g2_),
5437 static_cast<ParamGenerator<T3>
>(g3_),
5438 static_cast<ParamGenerator<T4>
>(g4_),
5439 static_cast<ParamGenerator<T5>
>(g5_),
5440 static_cast<ParamGenerator<T6>
>(g6_),
5441 static_cast<ParamGenerator<T7>
>(g7_),
5442 static_cast<ParamGenerator<T8>
>(g8_),
5443 static_cast<ParamGenerator<T9>
>(g9_)));
5448 void operator=(
const CartesianProductHolder9 & other);
5450 const Generator1 g1_;
5451 const Generator2 g2_;
5452 const Generator3 g3_;
5453 const Generator4 g4_;
5454 const Generator5 g5_;
5455 const Generator6 g6_;
5456 const Generator7 g7_;
5457 const Generator8 g8_;
5458 const Generator9 g9_;
5461 template <
class Generator1,
class Generator2,
class Generator3,
5462 class Generator4,
class Generator5,
class Generator6,
class Generator7,
5463 class Generator8,
class Generator9,
class Generator10>
5464 class CartesianProductHolder10
5467 CartesianProductHolder10(
const Generator1 & g1,
const Generator2 & g2,
5468 const Generator3 & g3,
const Generator4 & g4,
const Generator5 & g5,
5469 const Generator6 & g6,
const Generator7 & g7,
const Generator8 & g8,
5470 const Generator9 & g9,
const Generator10 & g10)
5471 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
5472 g9_(g9), g10_(g10) {}
5473 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5474 typename T6,
typename T7,
typename T8,
typename T9,
typename T10>
5480 new CartesianProductGenerator10<T1, T2, T3, T4, T5, T6, T7, T8, T9,
5482 static_cast<ParamGenerator<T1>
>(g1_),
5483 static_cast<ParamGenerator<T2>
>(g2_),
5484 static_cast<ParamGenerator<T3>
>(g3_),
5485 static_cast<ParamGenerator<T4>
>(g4_),
5486 static_cast<ParamGenerator<T5>
>(g5_),
5487 static_cast<ParamGenerator<T6>
>(g6_),
5488 static_cast<ParamGenerator<T7>
>(g7_),
5489 static_cast<ParamGenerator<T8>
>(g8_),
5490 static_cast<ParamGenerator<T9>
>(g9_),
5491 static_cast<ParamGenerator<T10>
>(g10_)));
5496 void operator=(
const CartesianProductHolder10 & other);
5498 const Generator1 g1_;
5499 const Generator2 g2_;
5500 const Generator3 g3_;
5501 const Generator4 g4_;
5502 const Generator5 g5_;
5503 const Generator6 g6_;
5504 const Generator7 g7_;
5505 const Generator8 g8_;
5506 const Generator9 g9_;
5507 const Generator10 g10_;
5510 # endif // GTEST_HAS_COMBINE 5515 #endif // GTEST_HAS_PARAM_TEST 5517 #endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
internal::ParamGenerator< typename::testing::internal::IteratorTraits< ForwardIterator >::value_type > ValuesIn(ForwardIterator begin, ForwardIterator end)
ParamIterator< T1 > iterator
#define GTEST_CHECK_(condition)
void operator=(const ValueArray1 &other)