46#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
47#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
56template <
typename ForwardIterator>
57internal::ParamGenerator<
58 typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
59ValuesIn(ForwardIterator begin, ForwardIterator end);
61template <
typename T,
size_t N>
62internal::ParamGenerator<T>
ValuesIn(
const T (&array)[
N]);
64template <
class Container>
65internal::ParamGenerator<typename Container::value_type>
ValuesIn(
66 const Container& container);
78 const T array[] = {
static_cast<T>(v1_)};
89template <
typename T1,
typename T2>
96 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_)};
108template <
typename T1,
typename T2,
typename T3>
113 template <
typename T>
115 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
116 static_cast<T>(v3_)};
129template <
typename T1,
typename T2,
typename T3,
typename T4>
132 ValueArray4(T1 v1, T2 v2, T3 v3, T4 v4) : v1_(v1), v2_(v2), v3_(v3),
135 template <
typename T>
137 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
138 static_cast<T>(v3_),
static_cast<T>(v4_)};
152template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
155 ValueArray5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) : v1_(v1), v2_(v2), v3_(v3),
158 template <
typename T>
160 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
161 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_)};
176template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
180 ValueArray6(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) : v1_(v1), v2_(v2),
181 v3_(v3), v4_(v4), v5_(v5), v6_(v6) {}
183 template <
typename T>
185 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
186 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
187 static_cast<T>(v6_)};
203template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
204 typename T6,
typename T7>
207 ValueArray7(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) : v1_(v1),
208 v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7) {}
210 template <
typename T>
212 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
213 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
214 static_cast<T>(v6_),
static_cast<T>(v7_)};
231template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
232 typename T6,
typename T7,
typename T8>
236 T8 v8) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
239 template <
typename T>
241 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
242 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
243 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_)};
261template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
262 typename T6,
typename T7,
typename T8,
typename T9>
265 ValueArray9(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
266 T9 v9) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
269 template <
typename T>
271 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
272 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
273 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
274 static_cast<T>(v9_)};
293template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
294 typename T6,
typename T7,
typename T8,
typename T9,
typename T10>
297 ValueArray10(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
298 T10 v10) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
299 v8_(v8), v9_(v9), v10_(v10) {}
301 template <
typename T>
303 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
304 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
305 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
306 static_cast<T>(v9_),
static_cast<T>(v10_)};
326template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
327 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
331 ValueArray11(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
332 T10 v10, T11 v11) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
333 v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11) {}
335 template <
typename T>
337 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
338 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
339 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
340 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_)};
361template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
362 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
363 typename T11,
typename T12>
366 ValueArray12(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
367 T10 v10, T11 v11, T12 v12) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
368 v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12) {}
370 template <
typename T>
372 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
373 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
374 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
375 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
376 static_cast<T>(v12_)};
398template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
399 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
400 typename T11,
typename T12,
typename T13>
403 ValueArray13(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
404 T10 v10, T11 v11, T12 v12, T13 v13) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
405 v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
406 v12_(v12), v13_(v13) {}
408 template <
typename T>
410 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
411 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
412 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
413 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
414 static_cast<T>(v12_),
static_cast<T>(v13_)};
437template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
438 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
439 typename T11,
typename T12,
typename T13,
typename T14>
442 ValueArray14(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
443 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) : v1_(v1), v2_(v2), v3_(v3),
444 v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
445 v11_(v11), v12_(v12), v13_(v13), v14_(v14) {}
447 template <
typename T>
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_),
static_cast<T>(v14_)};
477template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
478 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
479 typename T11,
typename T12,
typename T13,
typename T14,
typename T15>
482 ValueArray15(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
483 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) : v1_(v1), v2_(v2),
484 v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
485 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15) {}
487 template <
typename T>
489 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
490 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
491 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
492 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
493 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
494 static_cast<T>(v15_)};
519template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
520 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
521 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
525 ValueArray16(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
526 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16) : v1_(v1),
527 v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
528 v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
531 template <
typename T>
533 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
534 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
535 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
536 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
537 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
538 static_cast<T>(v15_),
static_cast<T>(v16_)};
564template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
565 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
566 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
567 typename T16,
typename T17>
570 ValueArray17(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
571 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
572 T17 v17) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
573 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
574 v15_(v15), v16_(v16), v17_(v17) {}
576 template <
typename T>
578 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
579 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
580 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
581 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
582 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
583 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_)};
610template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
611 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
612 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
613 typename T16,
typename T17,
typename T18>
616 ValueArray18(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
617 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
618 T18 v18) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
619 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
620 v15_(v15), v16_(v16), v17_(v17), v18_(v18) {}
622 template <
typename T>
624 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
625 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
626 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
627 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
628 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
629 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
630 static_cast<T>(v18_)};
658template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
659 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
660 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
661 typename T16,
typename T17,
typename T18,
typename T19>
664 ValueArray19(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
665 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
666 T18 v18, T19 v19) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
667 v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
668 v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19) {}
670 template <
typename T>
672 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
673 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
674 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
675 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
676 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
677 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
678 static_cast<T>(v18_),
static_cast<T>(v19_)};
707template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
708 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
709 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
710 typename T16,
typename T17,
typename T18,
typename T19,
typename T20>
713 ValueArray20(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
714 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
715 T18 v18, T19 v19, T20 v20) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
716 v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
717 v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
718 v19_(v19), v20_(v20) {}
720 template <
typename T>
722 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
723 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
724 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
725 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
726 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
727 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
728 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_)};
758template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
759 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
760 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
761 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
765 ValueArray21(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
766 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
767 T18 v18, T19 v19, T20 v20, T21 v21) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
768 v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
769 v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
770 v18_(v18), v19_(v19), v20_(v20), v21_(v21) {}
772 template <
typename T>
774 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
775 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
776 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
777 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
778 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
779 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
780 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
781 static_cast<T>(v21_)};
812template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
813 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
814 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
815 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
816 typename T21,
typename T22>
819 ValueArray22(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
820 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
821 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) : v1_(v1), v2_(v2), v3_(v3),
822 v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
823 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
824 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22) {}
826 template <
typename T>
828 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
829 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
830 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
831 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
832 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
833 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
834 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
835 static_cast<T>(v21_),
static_cast<T>(v22_)};
867template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
868 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
869 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
870 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
871 typename T21,
typename T22,
typename T23>
874 ValueArray23(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
875 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
876 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) : v1_(v1), v2_(v2),
877 v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
878 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
879 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
882 template <
typename T>
884 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
885 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
886 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
887 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
888 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
889 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
890 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
891 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_)};
924template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
925 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
926 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
927 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
928 typename T21,
typename T22,
typename T23,
typename T24>
931 ValueArray24(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
932 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
933 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) : v1_(v1),
934 v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
935 v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
936 v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
937 v22_(v22), v23_(v23), v24_(v24) {}
939 template <
typename T>
941 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
942 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
943 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
944 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
945 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
946 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
947 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
948 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
949 static_cast<T>(v24_)};
983template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
984 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
985 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
986 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
987 typename T21,
typename T22,
typename T23,
typename T24,
typename T25>
990 ValueArray25(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
991 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
992 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
993 T25 v25) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
994 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
995 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
996 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25) {}
998 template <
typename T>
1000 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
1001 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
1002 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
1003 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
1004 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
1005 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
1006 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
1007 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
1008 static_cast<T>(v24_),
static_cast<T>(v25_)};
1043template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1044 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1045 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1046 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1047 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1051 ValueArray26(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1052 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1053 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1054 T26 v26) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
1055 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
1056 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
1057 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26) {}
1059 template <
typename T>
1061 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
1062 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
1063 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
1064 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
1065 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
1066 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
1067 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
1068 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
1069 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_)};
1105template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1106 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1107 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1108 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1109 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1110 typename T26,
typename T27>
1113 ValueArray27(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1114 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1115 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1116 T26 v26, T27 v27) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
1117 v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
1118 v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
1119 v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
1120 v26_(v26), v27_(v27) {}
1122 template <
typename T>
1124 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
1125 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
1126 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
1127 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
1128 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
1129 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
1130 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
1131 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
1132 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
1133 static_cast<T>(v27_)};
1170template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1171 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1172 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1173 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1174 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1175 typename T26,
typename T27,
typename T28>
1178 ValueArray28(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1179 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1180 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1181 T26 v26, T27 v27, T28 v28) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
1182 v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
1183 v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
1184 v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
1185 v25_(v25), v26_(v26), v27_(v27), v28_(v28) {}
1187 template <
typename T>
1189 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
1190 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
1191 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
1192 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
1193 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
1194 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
1195 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
1196 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
1197 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
1198 static_cast<T>(v27_),
static_cast<T>(v28_)};
1236template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1237 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1238 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1239 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1240 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1241 typename T26,
typename T27,
typename T28,
typename T29>
1244 ValueArray29(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1245 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1246 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1247 T26 v26, T27 v27, T28 v28, T29 v29) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
1248 v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
1249 v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
1250 v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
1251 v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29) {}
1253 template <
typename T>
1255 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
1256 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
1257 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
1258 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
1259 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
1260 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
1261 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
1262 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
1263 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
1264 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_)};
1303template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1304 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1305 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1306 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1307 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1308 typename T26,
typename T27,
typename T28,
typename T29,
typename T30>
1311 ValueArray30(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1312 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1313 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1314 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) : v1_(v1), v2_(v2), v3_(v3),
1315 v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
1316 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
1317 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
1318 v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
1319 v29_(v29), v30_(v30) {}
1321 template <
typename T>
1323 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
1324 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
1325 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
1326 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
1327 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
1328 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
1329 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
1330 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
1331 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
1332 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
1333 static_cast<T>(v30_)};
1373template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1374 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1375 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1376 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1377 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1378 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
1382 ValueArray31(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1383 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1384 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1385 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) : v1_(v1), v2_(v2),
1386 v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
1387 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
1388 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
1389 v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
1390 v29_(v29), v30_(v30), v31_(v31) {}
1392 template <
typename T>
1394 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
1395 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
1396 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
1397 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
1398 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
1399 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
1400 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
1401 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
1402 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
1403 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
1404 static_cast<T>(v30_),
static_cast<T>(v31_)};
1445template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1446 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1447 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1448 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1449 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1450 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
1451 typename T31,
typename T32>
1454 ValueArray32(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1455 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1456 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1457 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) : v1_(v1),
1458 v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
1459 v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
1460 v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
1461 v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
1462 v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32) {}
1464 template <
typename T>
1466 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
1467 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
1468 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
1469 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
1470 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
1471 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
1472 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
1473 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
1474 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
1475 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
1476 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_)};
1518template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1519 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1520 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1521 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1522 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1523 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
1524 typename T31,
typename T32,
typename T33>
1527 ValueArray33(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1528 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1529 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1530 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32,
1531 T33 v33) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
1532 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
1533 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
1534 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
1535 v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
1538 template <
typename T>
1540 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
1541 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
1542 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
1543 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
1544 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
1545 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
1546 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
1547 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
1548 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
1549 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
1550 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
1551 static_cast<T>(v33_)};
1594template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1595 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1596 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1597 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1598 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1599 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
1600 typename T31,
typename T32,
typename T33,
typename T34>
1603 ValueArray34(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1604 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1605 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1606 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
1607 T34 v34) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
1608 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
1609 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
1610 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
1611 v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
1612 v33_(v33), v34_(v34) {}
1614 template <
typename T>
1616 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
1617 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
1618 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
1619 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
1620 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
1621 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
1622 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
1623 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
1624 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
1625 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
1626 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
1627 static_cast<T>(v33_),
static_cast<T>(v34_)};
1671template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1672 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1673 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1674 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1675 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1676 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
1677 typename T31,
typename T32,
typename T33,
typename T34,
typename T35>
1680 ValueArray35(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1681 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1682 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1683 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
1684 T34 v34, T35 v35) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
1685 v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
1686 v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
1687 v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
1688 v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31),
1689 v32_(v32), v33_(v33), v34_(v34), v35_(v35) {}
1691 template <
typename T>
1693 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
1694 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
1695 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
1696 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
1697 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
1698 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
1699 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
1700 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
1701 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
1702 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
1703 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
1704 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_)};
1749template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1750 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1751 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1752 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1753 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1754 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
1755 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
1759 ValueArray36(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1760 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1761 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1762 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
1763 T34 v34, T35 v35, T36 v36) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
1764 v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
1765 v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
1766 v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
1767 v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30),
1768 v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36) {}
1770 template <
typename T>
1772 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
1773 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
1774 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
1775 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
1776 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
1777 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
1778 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
1779 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
1780 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
1781 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
1782 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
1783 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
1784 static_cast<T>(v36_)};
1830template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1831 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1832 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1833 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1834 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1835 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
1836 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
1837 typename T36,
typename T37>
1840 ValueArray37(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1841 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1842 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1843 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
1844 T34 v34, T35 v35, T36 v36, T37 v37) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
1845 v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
1846 v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
1847 v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
1848 v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29),
1849 v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35),
1850 v36_(v36), v37_(v37) {}
1852 template <
typename T>
1854 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
1855 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
1856 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
1857 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
1858 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
1859 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
1860 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
1861 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
1862 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
1863 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
1864 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
1865 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
1866 static_cast<T>(v36_),
static_cast<T>(v37_)};
1913template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1914 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1915 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
1916 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
1917 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
1918 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
1919 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
1920 typename T36,
typename T37,
typename T38>
1923 ValueArray38(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1924 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1925 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1926 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
1927 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) : v1_(v1), v2_(v2), v3_(v3),
1928 v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
1929 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
1930 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
1931 v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
1932 v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
1933 v35_(v35), v36_(v36), v37_(v37), v38_(v38) {}
1935 template <
typename T>
1937 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
1938 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
1939 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
1940 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
1941 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
1942 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
1943 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
1944 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
1945 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
1946 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
1947 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
1948 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
1949 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_)};
1997template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1998 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
1999 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
2000 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
2001 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
2002 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
2003 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
2004 typename T36,
typename T37,
typename T38,
typename T39>
2007 ValueArray39(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2008 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2009 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2010 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2011 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) : v1_(v1), v2_(v2),
2012 v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
2013 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
2014 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
2015 v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
2016 v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
2017 v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39) {}
2019 template <
typename T>
2021 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
2022 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
2023 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
2024 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
2025 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
2026 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
2027 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
2028 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
2029 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
2030 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
2031 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
2032 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
2033 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
2034 static_cast<T>(v39_)};
2083template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
2084 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
2085 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
2086 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
2087 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
2088 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
2089 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
2090 typename T36,
typename T37,
typename T38,
typename T39,
typename T40>
2093 ValueArray40(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2094 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2095 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2096 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2097 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) : v1_(v1),
2098 v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
2099 v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
2100 v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
2101 v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
2102 v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33),
2103 v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39),
2106 template <
typename T>
2108 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
2109 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
2110 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
2111 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
2112 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
2113 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
2114 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
2115 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
2116 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
2117 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
2118 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
2119 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
2120 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
2121 static_cast<T>(v39_),
static_cast<T>(v40_)};
2171template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
2172 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
2173 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
2174 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
2175 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
2176 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
2177 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
2178 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
2182 ValueArray41(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2183 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2184 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2185 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2186 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40,
2187 T41 v41) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
2188 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
2189 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
2190 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
2191 v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
2192 v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
2193 v39_(v39), v40_(v40), v41_(v41) {}
2195 template <
typename T>
2197 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
2198 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
2199 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
2200 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
2201 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
2202 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
2203 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
2204 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
2205 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
2206 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
2207 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
2208 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
2209 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
2210 static_cast<T>(v39_),
static_cast<T>(v40_),
static_cast<T>(v41_)};
2261template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
2262 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
2263 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
2264 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
2265 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
2266 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
2267 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
2268 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
2269 typename T41,
typename T42>
2272 ValueArray42(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2273 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2274 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2275 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2276 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
2277 T42 v42) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
2278 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
2279 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
2280 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
2281 v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
2282 v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
2283 v39_(v39), v40_(v40), v41_(v41), v42_(v42) {}
2285 template <
typename T>
2287 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
2288 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
2289 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
2290 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
2291 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
2292 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
2293 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
2294 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
2295 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
2296 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
2297 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
2298 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
2299 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
2300 static_cast<T>(v39_),
static_cast<T>(v40_),
static_cast<T>(v41_),
2301 static_cast<T>(v42_)};
2353template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
2354 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
2355 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
2356 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
2357 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
2358 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
2359 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
2360 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
2361 typename T41,
typename T42,
typename T43>
2364 ValueArray43(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2365 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2366 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2367 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2368 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
2369 T42 v42, T43 v43) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
2370 v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
2371 v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
2372 v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
2373 v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31),
2374 v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37),
2375 v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43) {}
2377 template <
typename T>
2379 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
2380 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
2381 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
2382 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
2383 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
2384 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
2385 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
2386 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
2387 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
2388 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
2389 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
2390 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
2391 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
2392 static_cast<T>(v39_),
static_cast<T>(v40_),
static_cast<T>(v41_),
2393 static_cast<T>(v42_),
static_cast<T>(v43_)};
2446template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
2447 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
2448 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
2449 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
2450 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
2451 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
2452 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
2453 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
2454 typename T41,
typename T42,
typename T43,
typename T44>
2457 ValueArray44(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2458 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2459 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2460 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2461 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
2462 T42 v42, T43 v43, T44 v44) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
2463 v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
2464 v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
2465 v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
2466 v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30),
2467 v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36),
2468 v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42),
2469 v43_(v43), v44_(v44) {}
2471 template <
typename T>
2473 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
2474 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
2475 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
2476 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
2477 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
2478 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
2479 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
2480 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
2481 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
2482 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
2483 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
2484 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
2485 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
2486 static_cast<T>(v39_),
static_cast<T>(v40_),
static_cast<T>(v41_),
2487 static_cast<T>(v42_),
static_cast<T>(v43_),
static_cast<T>(v44_)};
2541template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
2542 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
2543 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
2544 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
2545 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
2546 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
2547 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
2548 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
2549 typename T41,
typename T42,
typename T43,
typename T44,
typename T45>
2552 ValueArray45(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2553 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2554 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2555 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2556 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
2557 T42 v42, T43 v43, T44 v44, T45 v45) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
2558 v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
2559 v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
2560 v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
2561 v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29),
2562 v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35),
2563 v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41),
2564 v42_(v42), v43_(v43), v44_(v44), v45_(v45) {}
2566 template <
typename T>
2568 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
2569 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
2570 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
2571 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
2572 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
2573 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
2574 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
2575 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
2576 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
2577 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
2578 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
2579 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
2580 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
2581 static_cast<T>(v39_),
static_cast<T>(v40_),
static_cast<T>(v41_),
2582 static_cast<T>(v42_),
static_cast<T>(v43_),
static_cast<T>(v44_),
2583 static_cast<T>(v45_)};
2638template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
2639 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
2640 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
2641 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
2642 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
2643 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
2644 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
2645 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
2646 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
2650 ValueArray46(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2651 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2652 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2653 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2654 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
2655 T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) : v1_(v1), v2_(v2), v3_(v3),
2656 v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
2657 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
2658 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
2659 v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
2660 v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
2661 v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40),
2662 v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46) {}
2664 template <
typename T>
2666 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
2667 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
2668 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
2669 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
2670 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
2671 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
2672 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
2673 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
2674 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
2675 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
2676 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
2677 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
2678 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
2679 static_cast<T>(v39_),
static_cast<T>(v40_),
static_cast<T>(v41_),
2680 static_cast<T>(v42_),
static_cast<T>(v43_),
static_cast<T>(v44_),
2681 static_cast<T>(v45_),
static_cast<T>(v46_)};
2737template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
2738 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
2739 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
2740 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
2741 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
2742 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
2743 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
2744 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
2745 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
2746 typename T46,
typename T47>
2749 ValueArray47(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2750 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2751 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2752 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2753 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
2754 T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) : v1_(v1), v2_(v2),
2755 v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
2756 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
2757 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
2758 v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
2759 v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
2760 v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40),
2761 v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46),
2764 template <
typename T>
2766 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
2767 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
2768 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
2769 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
2770 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
2771 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
2772 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
2773 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
2774 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
2775 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
2776 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
2777 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
2778 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
2779 static_cast<T>(v39_),
static_cast<T>(v40_),
static_cast<T>(v41_),
2780 static_cast<T>(v42_),
static_cast<T>(v43_),
static_cast<T>(v44_),
2781 static_cast<T>(v45_),
static_cast<T>(v46_),
static_cast<T>(v47_)};
2838template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
2839 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
2840 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
2841 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
2842 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
2843 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
2844 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
2845 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
2846 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
2847 typename T46,
typename T47,
typename T48>
2850 ValueArray48(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2851 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2852 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2853 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2854 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
2855 T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) : v1_(v1),
2856 v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
2857 v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
2858 v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
2859 v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
2860 v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33),
2861 v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39),
2862 v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45),
2863 v46_(v46), v47_(v47), v48_(v48) {}
2865 template <
typename T>
2867 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
2868 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
2869 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
2870 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
2871 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
2872 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
2873 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
2874 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
2875 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
2876 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
2877 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
2878 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
2879 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
2880 static_cast<T>(v39_),
static_cast<T>(v40_),
static_cast<T>(v41_),
2881 static_cast<T>(v42_),
static_cast<T>(v43_),
static_cast<T>(v44_),
2882 static_cast<T>(v45_),
static_cast<T>(v46_),
static_cast<T>(v47_),
2883 static_cast<T>(v48_)};
2941template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
2942 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
2943 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
2944 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
2945 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
2946 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
2947 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
2948 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
2949 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
2950 typename T46,
typename T47,
typename T48,
typename T49>
2953 ValueArray49(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2954 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2955 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2956 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2957 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
2958 T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48,
2959 T49 v49) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
2960 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
2961 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
2962 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
2963 v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
2964 v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
2965 v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44),
2966 v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49) {}
2968 template <
typename T>
2970 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
2971 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
2972 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
2973 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
2974 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
2975 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
2976 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
2977 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
2978 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
2979 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
2980 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
2981 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
2982 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
2983 static_cast<T>(v39_),
static_cast<T>(v40_),
static_cast<T>(v41_),
2984 static_cast<T>(v42_),
static_cast<T>(v43_),
static_cast<T>(v44_),
2985 static_cast<T>(v45_),
static_cast<T>(v46_),
static_cast<T>(v47_),
2986 static_cast<T>(v48_),
static_cast<T>(v49_)};
3045template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
3046 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
3047 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
3048 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
3049 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
3050 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
3051 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
3052 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
3053 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
3054 typename T46,
typename T47,
typename T48,
typename T49,
typename T50>
3057 ValueArray50(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
3058 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
3059 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
3060 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
3061 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
3062 T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49,
3063 T50 v50) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
3064 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
3065 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
3066 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
3067 v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
3068 v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
3069 v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44),
3070 v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49), v50_(v50) {}
3072 template <
typename T>
3074 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
3075 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
3076 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
3077 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
3078 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
3079 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
3080 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
3081 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
3082 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
3083 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
3084 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
3085 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
3086 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
3087 static_cast<T>(v39_),
static_cast<T>(v40_),
static_cast<T>(v41_),
3088 static_cast<T>(v42_),
static_cast<T>(v43_),
static_cast<T>(v44_),
3089 static_cast<T>(v45_),
static_cast<T>(v46_),
static_cast<T>(v47_),
3090 static_cast<T>(v48_),
static_cast<T>(v49_),
static_cast<T>(v50_)};
3150# if GTEST_HAS_COMBINE
3156template <
typename T1,
typename T2>
3157class CartesianProductGenerator2
3158 :
public ParamGeneratorInterface< ::testing::tuple<T1, T2> > {
3160 typedef ::testing::tuple<T1, T2> ParamType;
3162 CartesianProductGenerator2(
const ParamGenerator<T1>& g1,
3163 const ParamGenerator<T2>& g2)
3164 : g1_(g1), g2_(g2) {}
3165 virtual ~CartesianProductGenerator2() {}
3167 virtual ParamIteratorInterface<ParamType>* Begin()
const {
3168 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin());
3170 virtual ParamIteratorInterface<ParamType>* End()
const {
3171 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end());
3175 class Iterator :
public ParamIteratorInterface<ParamType> {
3177 Iterator(
const ParamGeneratorInterface<ParamType>* base,
3178 const ParamGenerator<T1>& g1,
3179 const typename ParamGenerator<T1>::iterator& current1,
3180 const ParamGenerator<T2>& g2,
3181 const typename ParamGenerator<T2>::iterator& current2)
3183 begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
3184 begin2_(g2.begin()), end2_(g2.end()), current2_(current2) {
3185 ComputeCurrentValue();
3187 virtual ~Iterator() {}
3189 virtual const ParamGeneratorInterface<ParamType>* BaseGenerator()
const {
3194 virtual void Advance() {
3197 if (current2_ == end2_) {
3198 current2_ = begin2_;
3201 ComputeCurrentValue();
3203 virtual ParamIteratorInterface<ParamType>* Clone()
const {
3204 return new Iterator(*
this);
3206 virtual const ParamType* Current()
const {
return current_value_.get(); }
3207 virtual bool Equals(
const ParamIteratorInterface<ParamType>& other)
const {
3211 <<
"The program attempted to compare iterators "
3212 <<
"from different generators." << std::endl;
3213 const Iterator* typed_other =
3214 CheckedDowncastToActualType<const Iterator>(&other);
3218 return (AtEnd() && typed_other->AtEnd()) ||
3220 current1_ == typed_other->current1_ &&
3221 current2_ == typed_other->current2_);
3225 Iterator(
const Iterator& other)
3226 : base_(
other.base_),
3227 begin1_(
other.begin1_),
3229 current1_(
other.current1_),
3230 begin2_(
other.begin2_),
3232 current2_(
other.current2_) {
3233 ComputeCurrentValue();
3236 void ComputeCurrentValue() {
3238 current_value_.reset(
new ParamType(*current1_, *current2_));
3240 bool AtEnd()
const {
3244 current1_ == end1_ ||
3249 void operator=(
const Iterator& other);
3251 const ParamGeneratorInterface<ParamType>*
const base_;
3254 const typename ParamGenerator<T1>::iterator begin1_;
3255 const typename ParamGenerator<T1>::iterator end1_;
3256 typename ParamGenerator<T1>::iterator current1_;
3257 const typename ParamGenerator<T2>::iterator begin2_;
3258 const typename ParamGenerator<T2>::iterator end2_;
3259 typename ParamGenerator<T2>::iterator current2_;
3260 linked_ptr<ParamType> current_value_;
3264 void operator=(
const CartesianProductGenerator2& other);
3266 const ParamGenerator<T1> g1_;
3267 const ParamGenerator<T2> g2_;
3271template <
typename T1,
typename T2,
typename T3>
3272class CartesianProductGenerator3
3273 :
public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3> > {
3275 typedef ::testing::tuple<T1, T2, T3> ParamType;
3277 CartesianProductGenerator3(
const ParamGenerator<T1>& g1,
3278 const ParamGenerator<T2>& g2,
const ParamGenerator<T3>& g3)
3279 : g1_(g1), g2_(g2), g3_(g3) {}
3280 virtual ~CartesianProductGenerator3() {}
3282 virtual ParamIteratorInterface<ParamType>* Begin()
const {
3283 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
3286 virtual ParamIteratorInterface<ParamType>* End()
const {
3287 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end());
3291 class Iterator :
public ParamIteratorInterface<ParamType> {
3293 Iterator(
const ParamGeneratorInterface<ParamType>* base,
3294 const ParamGenerator<T1>& g1,
3295 const typename ParamGenerator<T1>::iterator& current1,
3296 const ParamGenerator<T2>& g2,
3297 const typename ParamGenerator<T2>::iterator& current2,
3298 const ParamGenerator<T3>& g3,
3299 const typename ParamGenerator<T3>::iterator& current3)
3301 begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
3302 begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
3303 begin3_(g3.begin()), end3_(g3.end()), current3_(current3) {
3304 ComputeCurrentValue();
3306 virtual ~Iterator() {}
3308 virtual const ParamGeneratorInterface<ParamType>* BaseGenerator()
const {
3313 virtual void Advance() {
3316 if (current3_ == end3_) {
3317 current3_ = begin3_;
3320 if (current2_ == end2_) {
3321 current2_ = begin2_;
3324 ComputeCurrentValue();
3326 virtual ParamIteratorInterface<ParamType>* Clone()
const {
3327 return new Iterator(*
this);
3329 virtual const ParamType* Current()
const {
return current_value_.get(); }
3330 virtual bool Equals(
const ParamIteratorInterface<ParamType>& other)
const {
3334 <<
"The program attempted to compare iterators "
3335 <<
"from different generators." << std::endl;
3336 const Iterator* typed_other =
3337 CheckedDowncastToActualType<const Iterator>(&other);
3341 return (AtEnd() && typed_other->AtEnd()) ||
3343 current1_ == typed_other->current1_ &&
3344 current2_ == typed_other->current2_ &&
3345 current3_ == typed_other->current3_);
3349 Iterator(
const Iterator& other)
3350 : base_(
other.base_),
3351 begin1_(
other.begin1_),
3353 current1_(
other.current1_),
3354 begin2_(
other.begin2_),
3356 current2_(
other.current2_),
3357 begin3_(
other.begin3_),
3359 current3_(
other.current3_) {
3360 ComputeCurrentValue();
3363 void ComputeCurrentValue() {
3365 current_value_.reset(
new ParamType(*current1_, *current2_, *current3_));
3367 bool AtEnd()
const {
3371 current1_ == end1_ ||
3372 current2_ == end2_ ||
3377 void operator=(
const Iterator& other);
3379 const ParamGeneratorInterface<ParamType>*
const base_;
3382 const typename ParamGenerator<T1>::iterator begin1_;
3383 const typename ParamGenerator<T1>::iterator end1_;
3384 typename ParamGenerator<T1>::iterator current1_;
3385 const typename ParamGenerator<T2>::iterator begin2_;
3386 const typename ParamGenerator<T2>::iterator end2_;
3387 typename ParamGenerator<T2>::iterator current2_;
3388 const typename ParamGenerator<T3>::iterator begin3_;
3389 const typename ParamGenerator<T3>::iterator end3_;
3390 typename ParamGenerator<T3>::iterator current3_;
3391 linked_ptr<ParamType> current_value_;
3395 void operator=(
const CartesianProductGenerator3& other);
3397 const ParamGenerator<T1> g1_;
3398 const ParamGenerator<T2> g2_;
3399 const ParamGenerator<T3> g3_;
3403template <
typename T1,
typename T2,
typename T3,
typename T4>
3404class CartesianProductGenerator4
3405 :
public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4> > {
3407 typedef ::testing::tuple<T1, T2, T3, T4> ParamType;
3409 CartesianProductGenerator4(
const ParamGenerator<T1>& g1,
3410 const ParamGenerator<T2>& g2,
const ParamGenerator<T3>& g3,
3411 const ParamGenerator<T4>& g4)
3412 : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {}
3413 virtual ~CartesianProductGenerator4() {}
3415 virtual ParamIteratorInterface<ParamType>* Begin()
const {
3416 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
3417 g3_.begin(), g4_, g4_.begin());
3419 virtual ParamIteratorInterface<ParamType>* End()
const {
3420 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
3425 class Iterator :
public ParamIteratorInterface<ParamType> {
3427 Iterator(
const ParamGeneratorInterface<ParamType>* base,
3428 const ParamGenerator<T1>& g1,
3429 const typename ParamGenerator<T1>::iterator& current1,
3430 const ParamGenerator<T2>& g2,
3431 const typename ParamGenerator<T2>::iterator& current2,
3432 const ParamGenerator<T3>& g3,
3433 const typename ParamGenerator<T3>::iterator& current3,
3434 const ParamGenerator<T4>& g4,
3435 const typename ParamGenerator<T4>::iterator& current4)
3437 begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
3438 begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
3439 begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
3440 begin4_(g4.begin()), end4_(g4.end()), current4_(current4) {
3441 ComputeCurrentValue();
3443 virtual ~Iterator() {}
3445 virtual const ParamGeneratorInterface<ParamType>* BaseGenerator()
const {
3450 virtual void Advance() {
3453 if (current4_ == end4_) {
3454 current4_ = begin4_;
3457 if (current3_ == end3_) {
3458 current3_ = begin3_;
3461 if (current2_ == end2_) {
3462 current2_ = begin2_;
3465 ComputeCurrentValue();
3467 virtual ParamIteratorInterface<ParamType>* Clone()
const {
3468 return new Iterator(*
this);
3470 virtual const ParamType* Current()
const {
return current_value_.get(); }
3471 virtual bool Equals(
const ParamIteratorInterface<ParamType>& other)
const {
3475 <<
"The program attempted to compare iterators "
3476 <<
"from different generators." << std::endl;
3477 const Iterator* typed_other =
3478 CheckedDowncastToActualType<const Iterator>(&other);
3482 return (AtEnd() && typed_other->AtEnd()) ||
3484 current1_ == typed_other->current1_ &&
3485 current2_ == typed_other->current2_ &&
3486 current3_ == typed_other->current3_ &&
3487 current4_ == typed_other->current4_);
3491 Iterator(
const Iterator& other)
3492 : base_(
other.base_),
3493 begin1_(
other.begin1_),
3495 current1_(
other.current1_),
3496 begin2_(
other.begin2_),
3498 current2_(
other.current2_),
3499 begin3_(
other.begin3_),
3501 current3_(
other.current3_),
3502 begin4_(
other.begin4_),
3504 current4_(
other.current4_) {
3505 ComputeCurrentValue();
3508 void ComputeCurrentValue() {
3510 current_value_.reset(
new ParamType(*current1_, *current2_, *current3_,
3513 bool AtEnd()
const {
3517 current1_ == end1_ ||
3518 current2_ == end2_ ||
3519 current3_ == end3_ ||
3524 void operator=(
const Iterator& other);
3526 const ParamGeneratorInterface<ParamType>*
const base_;
3529 const typename ParamGenerator<T1>::iterator begin1_;
3530 const typename ParamGenerator<T1>::iterator end1_;
3531 typename ParamGenerator<T1>::iterator current1_;
3532 const typename ParamGenerator<T2>::iterator begin2_;
3533 const typename ParamGenerator<T2>::iterator end2_;
3534 typename ParamGenerator<T2>::iterator current2_;
3535 const typename ParamGenerator<T3>::iterator begin3_;
3536 const typename ParamGenerator<T3>::iterator end3_;
3537 typename ParamGenerator<T3>::iterator current3_;
3538 const typename ParamGenerator<T4>::iterator begin4_;
3539 const typename ParamGenerator<T4>::iterator end4_;
3540 typename ParamGenerator<T4>::iterator current4_;
3541 linked_ptr<ParamType> current_value_;
3545 void operator=(
const CartesianProductGenerator4& other);
3547 const ParamGenerator<T1> g1_;
3548 const ParamGenerator<T2> g2_;
3549 const ParamGenerator<T3> g3_;
3550 const ParamGenerator<T4> g4_;
3554template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
3555class CartesianProductGenerator5
3556 :
public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5> > {
3558 typedef ::testing::tuple<T1, T2, T3, T4, T5> ParamType;
3560 CartesianProductGenerator5(
const ParamGenerator<T1>& g1,
3561 const ParamGenerator<T2>& g2,
const ParamGenerator<T3>& g3,
3562 const ParamGenerator<T4>& g4,
const ParamGenerator<T5>& g5)
3563 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {}
3564 virtual ~CartesianProductGenerator5() {}
3566 virtual ParamIteratorInterface<ParamType>* Begin()
const {
3567 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
3568 g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin());
3570 virtual ParamIteratorInterface<ParamType>* End()
const {
3571 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
3572 g4_, g4_.end(), g5_, g5_.end());
3576 class Iterator :
public ParamIteratorInterface<ParamType> {
3578 Iterator(
const ParamGeneratorInterface<ParamType>* base,
3579 const ParamGenerator<T1>& g1,
3580 const typename ParamGenerator<T1>::iterator& current1,
3581 const ParamGenerator<T2>& g2,
3582 const typename ParamGenerator<T2>::iterator& current2,
3583 const ParamGenerator<T3>& g3,
3584 const typename ParamGenerator<T3>::iterator& current3,
3585 const ParamGenerator<T4>& g4,
3586 const typename ParamGenerator<T4>::iterator& current4,
3587 const ParamGenerator<T5>& g5,
3588 const typename ParamGenerator<T5>::iterator& current5)
3590 begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
3591 begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
3592 begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
3593 begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
3594 begin5_(g5.begin()), end5_(g5.end()), current5_(current5) {
3595 ComputeCurrentValue();
3597 virtual ~Iterator() {}
3599 virtual const ParamGeneratorInterface<ParamType>* BaseGenerator()
const {
3604 virtual void Advance() {
3607 if (current5_ == end5_) {
3608 current5_ = begin5_;
3611 if (current4_ == end4_) {
3612 current4_ = begin4_;
3615 if (current3_ == end3_) {
3616 current3_ = begin3_;
3619 if (current2_ == end2_) {
3620 current2_ = begin2_;
3623 ComputeCurrentValue();
3625 virtual ParamIteratorInterface<ParamType>* Clone()
const {
3626 return new Iterator(*
this);
3628 virtual const ParamType* Current()
const {
return current_value_.get(); }
3629 virtual bool Equals(
const ParamIteratorInterface<ParamType>& other)
const {
3633 <<
"The program attempted to compare iterators "
3634 <<
"from different generators." << std::endl;
3635 const Iterator* typed_other =
3636 CheckedDowncastToActualType<const Iterator>(&other);
3640 return (AtEnd() && typed_other->AtEnd()) ||
3642 current1_ == typed_other->current1_ &&
3643 current2_ == typed_other->current2_ &&
3644 current3_ == typed_other->current3_ &&
3645 current4_ == typed_other->current4_ &&
3646 current5_ == typed_other->current5_);
3650 Iterator(
const Iterator& other)
3651 : base_(
other.base_),
3652 begin1_(
other.begin1_),
3654 current1_(
other.current1_),
3655 begin2_(
other.begin2_),
3657 current2_(
other.current2_),
3658 begin3_(
other.begin3_),
3660 current3_(
other.current3_),
3661 begin4_(
other.begin4_),
3663 current4_(
other.current4_),
3664 begin5_(
other.begin5_),
3666 current5_(
other.current5_) {
3667 ComputeCurrentValue();
3670 void ComputeCurrentValue() {
3672 current_value_.reset(
new ParamType(*current1_, *current2_, *current3_,
3673 *current4_, *current5_));
3675 bool AtEnd()
const {
3679 current1_ == end1_ ||
3680 current2_ == end2_ ||
3681 current3_ == end3_ ||
3682 current4_ == end4_ ||
3687 void operator=(
const Iterator& other);
3689 const ParamGeneratorInterface<ParamType>*
const base_;
3692 const typename ParamGenerator<T1>::iterator begin1_;
3693 const typename ParamGenerator<T1>::iterator end1_;
3694 typename ParamGenerator<T1>::iterator current1_;
3695 const typename ParamGenerator<T2>::iterator begin2_;
3696 const typename ParamGenerator<T2>::iterator end2_;
3697 typename ParamGenerator<T2>::iterator current2_;
3698 const typename ParamGenerator<T3>::iterator begin3_;
3699 const typename ParamGenerator<T3>::iterator end3_;
3700 typename ParamGenerator<T3>::iterator current3_;
3701 const typename ParamGenerator<T4>::iterator begin4_;
3702 const typename ParamGenerator<T4>::iterator end4_;
3703 typename ParamGenerator<T4>::iterator current4_;
3704 const typename ParamGenerator<T5>::iterator begin5_;
3705 const typename ParamGenerator<T5>::iterator end5_;
3706 typename ParamGenerator<T5>::iterator current5_;
3707 linked_ptr<ParamType> current_value_;
3711 void operator=(
const CartesianProductGenerator5& other);
3713 const ParamGenerator<T1> g1_;
3714 const ParamGenerator<T2> g2_;
3715 const ParamGenerator<T3> g3_;
3716 const ParamGenerator<T4> g4_;
3717 const ParamGenerator<T5> g5_;
3721template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
3723class CartesianProductGenerator6
3724 :
public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5,
3727 typedef ::testing::tuple<T1, T2, T3, T4, T5, T6> ParamType;
3729 CartesianProductGenerator6(
const ParamGenerator<T1>& g1,
3730 const ParamGenerator<T2>& g2,
const ParamGenerator<T3>& g3,
3731 const ParamGenerator<T4>& g4,
const ParamGenerator<T5>& g5,
3732 const ParamGenerator<T6>& g6)
3733 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {}
3734 virtual ~CartesianProductGenerator6() {}
3736 virtual ParamIteratorInterface<ParamType>* Begin()
const {
3737 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
3738 g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin());
3740 virtual ParamIteratorInterface<ParamType>* End()
const {
3741 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
3742 g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end());
3746 class Iterator :
public ParamIteratorInterface<ParamType> {
3748 Iterator(
const ParamGeneratorInterface<ParamType>* base,
3749 const ParamGenerator<T1>& g1,
3750 const typename ParamGenerator<T1>::iterator& current1,
3751 const ParamGenerator<T2>& g2,
3752 const typename ParamGenerator<T2>::iterator& current2,
3753 const ParamGenerator<T3>& g3,
3754 const typename ParamGenerator<T3>::iterator& current3,
3755 const ParamGenerator<T4>& g4,
3756 const typename ParamGenerator<T4>::iterator& current4,
3757 const ParamGenerator<T5>& g5,
3758 const typename ParamGenerator<T5>::iterator& current5,
3759 const ParamGenerator<T6>& g6,
3760 const typename ParamGenerator<T6>::iterator& current6)
3762 begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
3763 begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
3764 begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
3765 begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
3766 begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
3767 begin6_(g6.begin()), end6_(g6.end()), current6_(current6) {
3768 ComputeCurrentValue();
3770 virtual ~Iterator() {}
3772 virtual const ParamGeneratorInterface<ParamType>* BaseGenerator()
const {
3777 virtual void Advance() {
3780 if (current6_ == end6_) {
3781 current6_ = begin6_;
3784 if (current5_ == end5_) {
3785 current5_ = begin5_;
3788 if (current4_ == end4_) {
3789 current4_ = begin4_;
3792 if (current3_ == end3_) {
3793 current3_ = begin3_;
3796 if (current2_ == end2_) {
3797 current2_ = begin2_;
3800 ComputeCurrentValue();
3802 virtual ParamIteratorInterface<ParamType>* Clone()
const {
3803 return new Iterator(*
this);
3805 virtual const ParamType* Current()
const {
return current_value_.get(); }
3806 virtual bool Equals(
const ParamIteratorInterface<ParamType>& other)
const {
3810 <<
"The program attempted to compare iterators "
3811 <<
"from different generators." << std::endl;
3812 const Iterator* typed_other =
3813 CheckedDowncastToActualType<const Iterator>(&other);
3817 return (AtEnd() && typed_other->AtEnd()) ||
3819 current1_ == typed_other->current1_ &&
3820 current2_ == typed_other->current2_ &&
3821 current3_ == typed_other->current3_ &&
3822 current4_ == typed_other->current4_ &&
3823 current5_ == typed_other->current5_ &&
3824 current6_ == typed_other->current6_);
3828 Iterator(
const Iterator& other)
3829 : base_(
other.base_),
3830 begin1_(
other.begin1_),
3832 current1_(
other.current1_),
3833 begin2_(
other.begin2_),
3835 current2_(
other.current2_),
3836 begin3_(
other.begin3_),
3838 current3_(
other.current3_),
3839 begin4_(
other.begin4_),
3841 current4_(
other.current4_),
3842 begin5_(
other.begin5_),
3844 current5_(
other.current5_),
3845 begin6_(
other.begin6_),
3847 current6_(
other.current6_) {
3848 ComputeCurrentValue();
3851 void ComputeCurrentValue() {
3853 current_value_.reset(
new ParamType(*current1_, *current2_, *current3_,
3854 *current4_, *current5_, *current6_));
3856 bool AtEnd()
const {
3860 current1_ == end1_ ||
3861 current2_ == end2_ ||
3862 current3_ == end3_ ||
3863 current4_ == end4_ ||
3864 current5_ == end5_ ||
3869 void operator=(
const Iterator& other);
3871 const ParamGeneratorInterface<ParamType>*
const base_;
3874 const typename ParamGenerator<T1>::iterator begin1_;
3875 const typename ParamGenerator<T1>::iterator end1_;
3876 typename ParamGenerator<T1>::iterator current1_;
3877 const typename ParamGenerator<T2>::iterator begin2_;
3878 const typename ParamGenerator<T2>::iterator end2_;
3879 typename ParamGenerator<T2>::iterator current2_;
3880 const typename ParamGenerator<T3>::iterator begin3_;
3881 const typename ParamGenerator<T3>::iterator end3_;
3882 typename ParamGenerator<T3>::iterator current3_;
3883 const typename ParamGenerator<T4>::iterator begin4_;
3884 const typename ParamGenerator<T4>::iterator end4_;
3885 typename ParamGenerator<T4>::iterator current4_;
3886 const typename ParamGenerator<T5>::iterator begin5_;
3887 const typename ParamGenerator<T5>::iterator end5_;
3888 typename ParamGenerator<T5>::iterator current5_;
3889 const typename ParamGenerator<T6>::iterator begin6_;
3890 const typename ParamGenerator<T6>::iterator end6_;
3891 typename ParamGenerator<T6>::iterator current6_;
3892 linked_ptr<ParamType> current_value_;
3896 void operator=(
const CartesianProductGenerator6& other);
3898 const ParamGenerator<T1> g1_;
3899 const ParamGenerator<T2> g2_;
3900 const ParamGenerator<T3> g3_;
3901 const ParamGenerator<T4> g4_;
3902 const ParamGenerator<T5> g5_;
3903 const ParamGenerator<T6> g6_;
3907template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
3908 typename T6,
typename T7>
3909class CartesianProductGenerator7
3910 :
public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5, T6,
3913 typedef ::testing::tuple<T1, T2, T3, T4, T5, T6, T7> ParamType;
3915 CartesianProductGenerator7(
const ParamGenerator<T1>& g1,
3916 const ParamGenerator<T2>& g2,
const ParamGenerator<T3>& g3,
3917 const ParamGenerator<T4>& g4,
const ParamGenerator<T5>& g5,
3918 const ParamGenerator<T6>& g6,
const ParamGenerator<T7>& g7)
3919 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {}
3920 virtual ~CartesianProductGenerator7() {}
3922 virtual ParamIteratorInterface<ParamType>* Begin()
const {
3923 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
3924 g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
3927 virtual ParamIteratorInterface<ParamType>* End()
const {
3928 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
3929 g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end());
3933 class Iterator :
public ParamIteratorInterface<ParamType> {
3935 Iterator(
const ParamGeneratorInterface<ParamType>* base,
3936 const ParamGenerator<T1>& g1,
3937 const typename ParamGenerator<T1>::iterator& current1,
3938 const ParamGenerator<T2>& g2,
3939 const typename ParamGenerator<T2>::iterator& current2,
3940 const ParamGenerator<T3>& g3,
3941 const typename ParamGenerator<T3>::iterator& current3,
3942 const ParamGenerator<T4>& g4,
3943 const typename ParamGenerator<T4>::iterator& current4,
3944 const ParamGenerator<T5>& g5,
3945 const typename ParamGenerator<T5>::iterator& current5,
3946 const ParamGenerator<T6>& g6,
3947 const typename ParamGenerator<T6>::iterator& current6,
3948 const ParamGenerator<T7>& g7,
3949 const typename ParamGenerator<T7>::iterator& current7)
3951 begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
3952 begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
3953 begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
3954 begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
3955 begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
3956 begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
3957 begin7_(g7.begin()), end7_(g7.end()), current7_(current7) {
3958 ComputeCurrentValue();
3960 virtual ~Iterator() {}
3962 virtual const ParamGeneratorInterface<ParamType>* BaseGenerator()
const {
3967 virtual void Advance() {
3970 if (current7_ == end7_) {
3971 current7_ = begin7_;
3974 if (current6_ == end6_) {
3975 current6_ = begin6_;
3978 if (current5_ == end5_) {
3979 current5_ = begin5_;
3982 if (current4_ == end4_) {
3983 current4_ = begin4_;
3986 if (current3_ == end3_) {
3987 current3_ = begin3_;
3990 if (current2_ == end2_) {
3991 current2_ = begin2_;
3994 ComputeCurrentValue();
3996 virtual ParamIteratorInterface<ParamType>* Clone()
const {
3997 return new Iterator(*
this);
3999 virtual const ParamType* Current()
const {
return current_value_.get(); }
4000 virtual bool Equals(
const ParamIteratorInterface<ParamType>& other)
const {
4004 <<
"The program attempted to compare iterators "
4005 <<
"from different generators." << std::endl;
4006 const Iterator* typed_other =
4007 CheckedDowncastToActualType<const Iterator>(&other);
4011 return (AtEnd() && typed_other->AtEnd()) ||
4013 current1_ == typed_other->current1_ &&
4014 current2_ == typed_other->current2_ &&
4015 current3_ == typed_other->current3_ &&
4016 current4_ == typed_other->current4_ &&
4017 current5_ == typed_other->current5_ &&
4018 current6_ == typed_other->current6_ &&
4019 current7_ == typed_other->current7_);
4023 Iterator(
const Iterator& other)
4024 : base_(
other.base_),
4025 begin1_(
other.begin1_),
4027 current1_(
other.current1_),
4028 begin2_(
other.begin2_),
4030 current2_(
other.current2_),
4031 begin3_(
other.begin3_),
4033 current3_(
other.current3_),
4034 begin4_(
other.begin4_),
4036 current4_(
other.current4_),
4037 begin5_(
other.begin5_),
4039 current5_(
other.current5_),
4040 begin6_(
other.begin6_),
4042 current6_(
other.current6_),
4043 begin7_(
other.begin7_),
4045 current7_(
other.current7_) {
4046 ComputeCurrentValue();
4049 void ComputeCurrentValue() {
4051 current_value_.reset(
new ParamType(*current1_, *current2_, *current3_,
4052 *current4_, *current5_, *current6_, *current7_));
4054 bool AtEnd()
const {
4058 current1_ == end1_ ||
4059 current2_ == end2_ ||
4060 current3_ == end3_ ||
4061 current4_ == end4_ ||
4062 current5_ == end5_ ||
4063 current6_ == end6_ ||
4068 void operator=(
const Iterator& other);
4070 const ParamGeneratorInterface<ParamType>*
const base_;
4073 const typename ParamGenerator<T1>::iterator begin1_;
4074 const typename ParamGenerator<T1>::iterator end1_;
4075 typename ParamGenerator<T1>::iterator current1_;
4076 const typename ParamGenerator<T2>::iterator begin2_;
4077 const typename ParamGenerator<T2>::iterator end2_;
4078 typename ParamGenerator<T2>::iterator current2_;
4079 const typename ParamGenerator<T3>::iterator begin3_;
4080 const typename ParamGenerator<T3>::iterator end3_;
4081 typename ParamGenerator<T3>::iterator current3_;
4082 const typename ParamGenerator<T4>::iterator begin4_;
4083 const typename ParamGenerator<T4>::iterator end4_;
4084 typename ParamGenerator<T4>::iterator current4_;
4085 const typename ParamGenerator<T5>::iterator begin5_;
4086 const typename ParamGenerator<T5>::iterator end5_;
4087 typename ParamGenerator<T5>::iterator current5_;
4088 const typename ParamGenerator<T6>::iterator begin6_;
4089 const typename ParamGenerator<T6>::iterator end6_;
4090 typename ParamGenerator<T6>::iterator current6_;
4091 const typename ParamGenerator<T7>::iterator begin7_;
4092 const typename ParamGenerator<T7>::iterator end7_;
4093 typename ParamGenerator<T7>::iterator current7_;
4094 linked_ptr<ParamType> current_value_;
4098 void operator=(
const CartesianProductGenerator7& other);
4100 const ParamGenerator<T1> g1_;
4101 const ParamGenerator<T2> g2_;
4102 const ParamGenerator<T3> g3_;
4103 const ParamGenerator<T4> g4_;
4104 const ParamGenerator<T5> g5_;
4105 const ParamGenerator<T6> g6_;
4106 const ParamGenerator<T7> g7_;
4110template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4111 typename T6,
typename T7,
typename T8>
4112class CartesianProductGenerator8
4113 :
public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5, T6,
4116 typedef ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8> ParamType;
4118 CartesianProductGenerator8(
const ParamGenerator<T1>& g1,
4119 const ParamGenerator<T2>& g2,
const ParamGenerator<T3>& g3,
4120 const ParamGenerator<T4>& g4,
const ParamGenerator<T5>& g5,
4121 const ParamGenerator<T6>& g6,
const ParamGenerator<T7>& g7,
4122 const ParamGenerator<T8>& g8)
4123 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7),
4125 virtual ~CartesianProductGenerator8() {}
4127 virtual ParamIteratorInterface<ParamType>* Begin()
const {
4128 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
4129 g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
4130 g7_.begin(), g8_, g8_.begin());
4132 virtual ParamIteratorInterface<ParamType>* End()
const {
4133 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
4134 g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
4139 class Iterator :
public ParamIteratorInterface<ParamType> {
4141 Iterator(
const ParamGeneratorInterface<ParamType>* base,
4142 const ParamGenerator<T1>& g1,
4143 const typename ParamGenerator<T1>::iterator& current1,
4144 const ParamGenerator<T2>& g2,
4145 const typename ParamGenerator<T2>::iterator& current2,
4146 const ParamGenerator<T3>& g3,
4147 const typename ParamGenerator<T3>::iterator& current3,
4148 const ParamGenerator<T4>& g4,
4149 const typename ParamGenerator<T4>::iterator& current4,
4150 const ParamGenerator<T5>& g5,
4151 const typename ParamGenerator<T5>::iterator& current5,
4152 const ParamGenerator<T6>& g6,
4153 const typename ParamGenerator<T6>::iterator& current6,
4154 const ParamGenerator<T7>& g7,
4155 const typename ParamGenerator<T7>::iterator& current7,
4156 const ParamGenerator<T8>& g8,
4157 const typename ParamGenerator<T8>::iterator& current8)
4159 begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
4160 begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
4161 begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
4162 begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
4163 begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
4164 begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
4165 begin7_(g7.begin()), end7_(g7.end()), current7_(current7),
4166 begin8_(g8.begin()), end8_(g8.end()), current8_(current8) {
4167 ComputeCurrentValue();
4169 virtual ~Iterator() {}
4171 virtual const ParamGeneratorInterface<ParamType>* BaseGenerator()
const {
4176 virtual void Advance() {
4179 if (current8_ == end8_) {
4180 current8_ = begin8_;
4183 if (current7_ == end7_) {
4184 current7_ = begin7_;
4187 if (current6_ == end6_) {
4188 current6_ = begin6_;
4191 if (current5_ == end5_) {
4192 current5_ = begin5_;
4195 if (current4_ == end4_) {
4196 current4_ = begin4_;
4199 if (current3_ == end3_) {
4200 current3_ = begin3_;
4203 if (current2_ == end2_) {
4204 current2_ = begin2_;
4207 ComputeCurrentValue();
4209 virtual ParamIteratorInterface<ParamType>* Clone()
const {
4210 return new Iterator(*
this);
4212 virtual const ParamType* Current()
const {
return current_value_.get(); }
4213 virtual bool Equals(
const ParamIteratorInterface<ParamType>& other)
const {
4217 <<
"The program attempted to compare iterators "
4218 <<
"from different generators." << std::endl;
4219 const Iterator* typed_other =
4220 CheckedDowncastToActualType<const Iterator>(&other);
4224 return (AtEnd() && typed_other->AtEnd()) ||
4226 current1_ == typed_other->current1_ &&
4227 current2_ == typed_other->current2_ &&
4228 current3_ == typed_other->current3_ &&
4229 current4_ == typed_other->current4_ &&
4230 current5_ == typed_other->current5_ &&
4231 current6_ == typed_other->current6_ &&
4232 current7_ == typed_other->current7_ &&
4233 current8_ == typed_other->current8_);
4237 Iterator(
const Iterator& other)
4238 : base_(
other.base_),
4239 begin1_(
other.begin1_),
4241 current1_(
other.current1_),
4242 begin2_(
other.begin2_),
4244 current2_(
other.current2_),
4245 begin3_(
other.begin3_),
4247 current3_(
other.current3_),
4248 begin4_(
other.begin4_),
4250 current4_(
other.current4_),
4251 begin5_(
other.begin5_),
4253 current5_(
other.current5_),
4254 begin6_(
other.begin6_),
4256 current6_(
other.current6_),
4257 begin7_(
other.begin7_),
4259 current7_(
other.current7_),
4260 begin8_(
other.begin8_),
4262 current8_(
other.current8_) {
4263 ComputeCurrentValue();
4266 void ComputeCurrentValue() {
4268 current_value_.reset(
new ParamType(*current1_, *current2_, *current3_,
4269 *current4_, *current5_, *current6_, *current7_, *current8_));
4271 bool AtEnd()
const {
4275 current1_ == end1_ ||
4276 current2_ == end2_ ||
4277 current3_ == end3_ ||
4278 current4_ == end4_ ||
4279 current5_ == end5_ ||
4280 current6_ == end6_ ||
4281 current7_ == end7_ ||
4286 void operator=(
const Iterator& other);
4288 const ParamGeneratorInterface<ParamType>*
const base_;
4291 const typename ParamGenerator<T1>::iterator begin1_;
4292 const typename ParamGenerator<T1>::iterator end1_;
4293 typename ParamGenerator<T1>::iterator current1_;
4294 const typename ParamGenerator<T2>::iterator begin2_;
4295 const typename ParamGenerator<T2>::iterator end2_;
4296 typename ParamGenerator<T2>::iterator current2_;
4297 const typename ParamGenerator<T3>::iterator begin3_;
4298 const typename ParamGenerator<T3>::iterator end3_;
4299 typename ParamGenerator<T3>::iterator current3_;
4300 const typename ParamGenerator<T4>::iterator begin4_;
4301 const typename ParamGenerator<T4>::iterator end4_;
4302 typename ParamGenerator<T4>::iterator current4_;
4303 const typename ParamGenerator<T5>::iterator begin5_;
4304 const typename ParamGenerator<T5>::iterator end5_;
4305 typename ParamGenerator<T5>::iterator current5_;
4306 const typename ParamGenerator<T6>::iterator begin6_;
4307 const typename ParamGenerator<T6>::iterator end6_;
4308 typename ParamGenerator<T6>::iterator current6_;
4309 const typename ParamGenerator<T7>::iterator begin7_;
4310 const typename ParamGenerator<T7>::iterator end7_;
4311 typename ParamGenerator<T7>::iterator current7_;
4312 const typename ParamGenerator<T8>::iterator begin8_;
4313 const typename ParamGenerator<T8>::iterator end8_;
4314 typename ParamGenerator<T8>::iterator current8_;
4315 linked_ptr<ParamType> current_value_;
4319 void operator=(
const CartesianProductGenerator8& other);
4321 const ParamGenerator<T1> g1_;
4322 const ParamGenerator<T2> g2_;
4323 const ParamGenerator<T3> g3_;
4324 const ParamGenerator<T4> g4_;
4325 const ParamGenerator<T5> g5_;
4326 const ParamGenerator<T6> g6_;
4327 const ParamGenerator<T7> g7_;
4328 const ParamGenerator<T8> g8_;
4332template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4333 typename T6,
typename T7,
typename T8,
typename T9>
4334class CartesianProductGenerator9
4335 :
public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5, T6,
4338 typedef ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9> ParamType;
4340 CartesianProductGenerator9(
const ParamGenerator<T1>& g1,
4341 const ParamGenerator<T2>& g2,
const ParamGenerator<T3>& g3,
4342 const ParamGenerator<T4>& g4,
const ParamGenerator<T5>& g5,
4343 const ParamGenerator<T6>& g6,
const ParamGenerator<T7>& g7,
4344 const ParamGenerator<T8>& g8,
const ParamGenerator<T9>& g9)
4345 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
4347 virtual ~CartesianProductGenerator9() {}
4349 virtual ParamIteratorInterface<ParamType>* Begin()
const {
4350 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
4351 g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
4352 g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin());
4354 virtual ParamIteratorInterface<ParamType>* End()
const {
4355 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
4356 g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
4357 g8_.end(), g9_, g9_.end());
4361 class Iterator :
public ParamIteratorInterface<ParamType> {
4363 Iterator(
const ParamGeneratorInterface<ParamType>* base,
4364 const ParamGenerator<T1>& g1,
4365 const typename ParamGenerator<T1>::iterator& current1,
4366 const ParamGenerator<T2>& g2,
4367 const typename ParamGenerator<T2>::iterator& current2,
4368 const ParamGenerator<T3>& g3,
4369 const typename ParamGenerator<T3>::iterator& current3,
4370 const ParamGenerator<T4>& g4,
4371 const typename ParamGenerator<T4>::iterator& current4,
4372 const ParamGenerator<T5>& g5,
4373 const typename ParamGenerator<T5>::iterator& current5,
4374 const ParamGenerator<T6>& g6,
4375 const typename ParamGenerator<T6>::iterator& current6,
4376 const ParamGenerator<T7>& g7,
4377 const typename ParamGenerator<T7>::iterator& current7,
4378 const ParamGenerator<T8>& g8,
4379 const typename ParamGenerator<T8>::iterator& current8,
4380 const ParamGenerator<T9>& g9,
4381 const typename ParamGenerator<T9>::iterator& current9)
4383 begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
4384 begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
4385 begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
4386 begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
4387 begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
4388 begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
4389 begin7_(g7.begin()), end7_(g7.end()), current7_(current7),
4390 begin8_(g8.begin()), end8_(g8.end()), current8_(current8),
4391 begin9_(g9.begin()), end9_(g9.end()), current9_(current9) {
4392 ComputeCurrentValue();
4394 virtual ~Iterator() {}
4396 virtual const ParamGeneratorInterface<ParamType>* BaseGenerator()
const {
4401 virtual void Advance() {
4404 if (current9_ == end9_) {
4405 current9_ = begin9_;
4408 if (current8_ == end8_) {
4409 current8_ = begin8_;
4412 if (current7_ == end7_) {
4413 current7_ = begin7_;
4416 if (current6_ == end6_) {
4417 current6_ = begin6_;
4420 if (current5_ == end5_) {
4421 current5_ = begin5_;
4424 if (current4_ == end4_) {
4425 current4_ = begin4_;
4428 if (current3_ == end3_) {
4429 current3_ = begin3_;
4432 if (current2_ == end2_) {
4433 current2_ = begin2_;
4436 ComputeCurrentValue();
4438 virtual ParamIteratorInterface<ParamType>* Clone()
const {
4439 return new Iterator(*
this);
4441 virtual const ParamType* Current()
const {
return current_value_.get(); }
4442 virtual bool Equals(
const ParamIteratorInterface<ParamType>& other)
const {
4446 <<
"The program attempted to compare iterators "
4447 <<
"from different generators." << std::endl;
4448 const Iterator* typed_other =
4449 CheckedDowncastToActualType<const Iterator>(&other);
4453 return (AtEnd() && typed_other->AtEnd()) ||
4455 current1_ == typed_other->current1_ &&
4456 current2_ == typed_other->current2_ &&
4457 current3_ == typed_other->current3_ &&
4458 current4_ == typed_other->current4_ &&
4459 current5_ == typed_other->current5_ &&
4460 current6_ == typed_other->current6_ &&
4461 current7_ == typed_other->current7_ &&
4462 current8_ == typed_other->current8_ &&
4463 current9_ == typed_other->current9_);
4467 Iterator(
const Iterator& other)
4468 : base_(
other.base_),
4469 begin1_(
other.begin1_),
4471 current1_(
other.current1_),
4472 begin2_(
other.begin2_),
4474 current2_(
other.current2_),
4475 begin3_(
other.begin3_),
4477 current3_(
other.current3_),
4478 begin4_(
other.begin4_),
4480 current4_(
other.current4_),
4481 begin5_(
other.begin5_),
4483 current5_(
other.current5_),
4484 begin6_(
other.begin6_),
4486 current6_(
other.current6_),
4487 begin7_(
other.begin7_),
4489 current7_(
other.current7_),
4490 begin8_(
other.begin8_),
4492 current8_(
other.current8_),
4493 begin9_(
other.begin9_),
4495 current9_(
other.current9_) {
4496 ComputeCurrentValue();
4499 void ComputeCurrentValue() {
4501 current_value_.reset(
new ParamType(*current1_, *current2_, *current3_,
4502 *current4_, *current5_, *current6_, *current7_, *current8_,
4505 bool AtEnd()
const {
4509 current1_ == end1_ ||
4510 current2_ == end2_ ||
4511 current3_ == end3_ ||
4512 current4_ == end4_ ||
4513 current5_ == end5_ ||
4514 current6_ == end6_ ||
4515 current7_ == end7_ ||
4516 current8_ == end8_ ||
4521 void operator=(
const Iterator& other);
4523 const ParamGeneratorInterface<ParamType>*
const base_;
4526 const typename ParamGenerator<T1>::iterator begin1_;
4527 const typename ParamGenerator<T1>::iterator end1_;
4528 typename ParamGenerator<T1>::iterator current1_;
4529 const typename ParamGenerator<T2>::iterator begin2_;
4530 const typename ParamGenerator<T2>::iterator end2_;
4531 typename ParamGenerator<T2>::iterator current2_;
4532 const typename ParamGenerator<T3>::iterator begin3_;
4533 const typename ParamGenerator<T3>::iterator end3_;
4534 typename ParamGenerator<T3>::iterator current3_;
4535 const typename ParamGenerator<T4>::iterator begin4_;
4536 const typename ParamGenerator<T4>::iterator end4_;
4537 typename ParamGenerator<T4>::iterator current4_;
4538 const typename ParamGenerator<T5>::iterator begin5_;
4539 const typename ParamGenerator<T5>::iterator end5_;
4540 typename ParamGenerator<T5>::iterator current5_;
4541 const typename ParamGenerator<T6>::iterator begin6_;
4542 const typename ParamGenerator<T6>::iterator end6_;
4543 typename ParamGenerator<T6>::iterator current6_;
4544 const typename ParamGenerator<T7>::iterator begin7_;
4545 const typename ParamGenerator<T7>::iterator end7_;
4546 typename ParamGenerator<T7>::iterator current7_;
4547 const typename ParamGenerator<T8>::iterator begin8_;
4548 const typename ParamGenerator<T8>::iterator end8_;
4549 typename ParamGenerator<T8>::iterator current8_;
4550 const typename ParamGenerator<T9>::iterator begin9_;
4551 const typename ParamGenerator<T9>::iterator end9_;
4552 typename ParamGenerator<T9>::iterator current9_;
4553 linked_ptr<ParamType> current_value_;
4557 void operator=(
const CartesianProductGenerator9& other);
4559 const ParamGenerator<T1> g1_;
4560 const ParamGenerator<T2> g2_;
4561 const ParamGenerator<T3> g3_;
4562 const ParamGenerator<T4> g4_;
4563 const ParamGenerator<T5> g5_;
4564 const ParamGenerator<T6> g6_;
4565 const ParamGenerator<T7> g7_;
4566 const ParamGenerator<T8> g8_;
4567 const ParamGenerator<T9> g9_;
4571template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4572 typename T6,
typename T7,
typename T8,
typename T9,
typename T10>
4573class CartesianProductGenerator10
4574 :
public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5, T6,
4575 T7, T8, T9, T10> > {
4577 typedef ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> ParamType;
4579 CartesianProductGenerator10(
const ParamGenerator<T1>& g1,
4580 const ParamGenerator<T2>& g2,
const ParamGenerator<T3>& g3,
4581 const ParamGenerator<T4>& g4,
const ParamGenerator<T5>& g5,
4582 const ParamGenerator<T6>& g6,
const ParamGenerator<T7>& g7,
4583 const ParamGenerator<T8>& g8,
const ParamGenerator<T9>& g9,
4584 const ParamGenerator<T10>& g10)
4585 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
4586 g9_(g9), g10_(g10) {}
4587 virtual ~CartesianProductGenerator10() {}
4589 virtual ParamIteratorInterface<ParamType>* Begin()
const {
4590 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
4591 g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
4592 g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin(), g10_, g10_.begin());
4594 virtual ParamIteratorInterface<ParamType>* End()
const {
4595 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
4596 g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
4597 g8_.end(), g9_, g9_.end(), g10_, g10_.end());
4601 class Iterator :
public ParamIteratorInterface<ParamType> {
4603 Iterator(
const ParamGeneratorInterface<ParamType>* base,
4604 const ParamGenerator<T1>& g1,
4605 const typename ParamGenerator<T1>::iterator& current1,
4606 const ParamGenerator<T2>& g2,
4607 const typename ParamGenerator<T2>::iterator& current2,
4608 const ParamGenerator<T3>& g3,
4609 const typename ParamGenerator<T3>::iterator& current3,
4610 const ParamGenerator<T4>& g4,
4611 const typename ParamGenerator<T4>::iterator& current4,
4612 const ParamGenerator<T5>& g5,
4613 const typename ParamGenerator<T5>::iterator& current5,
4614 const ParamGenerator<T6>& g6,
4615 const typename ParamGenerator<T6>::iterator& current6,
4616 const ParamGenerator<T7>& g7,
4617 const typename ParamGenerator<T7>::iterator& current7,
4618 const ParamGenerator<T8>& g8,
4619 const typename ParamGenerator<T8>::iterator& current8,
4620 const ParamGenerator<T9>& g9,
4621 const typename ParamGenerator<T9>::iterator& current9,
4622 const ParamGenerator<T10>& g10,
4623 const typename ParamGenerator<T10>::iterator& current10)
4625 begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
4626 begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
4627 begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
4628 begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
4629 begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
4630 begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
4631 begin7_(g7.begin()), end7_(g7.end()), current7_(current7),
4632 begin8_(g8.begin()), end8_(g8.end()), current8_(current8),
4633 begin9_(g9.begin()), end9_(g9.end()), current9_(current9),
4634 begin10_(g10.begin()), end10_(g10.end()), current10_(current10) {
4635 ComputeCurrentValue();
4637 virtual ~Iterator() {}
4639 virtual const ParamGeneratorInterface<ParamType>* BaseGenerator()
const {
4644 virtual void Advance() {
4647 if (current10_ == end10_) {
4648 current10_ = begin10_;
4651 if (current9_ == end9_) {
4652 current9_ = begin9_;
4655 if (current8_ == end8_) {
4656 current8_ = begin8_;
4659 if (current7_ == end7_) {
4660 current7_ = begin7_;
4663 if (current6_ == end6_) {
4664 current6_ = begin6_;
4667 if (current5_ == end5_) {
4668 current5_ = begin5_;
4671 if (current4_ == end4_) {
4672 current4_ = begin4_;
4675 if (current3_ == end3_) {
4676 current3_ = begin3_;
4679 if (current2_ == end2_) {
4680 current2_ = begin2_;
4683 ComputeCurrentValue();
4685 virtual ParamIteratorInterface<ParamType>* Clone()
const {
4686 return new Iterator(*
this);
4688 virtual const ParamType* Current()
const {
return current_value_.get(); }
4689 virtual bool Equals(
const ParamIteratorInterface<ParamType>& other)
const {
4693 <<
"The program attempted to compare iterators "
4694 <<
"from different generators." << std::endl;
4695 const Iterator* typed_other =
4696 CheckedDowncastToActualType<const Iterator>(&other);
4700 return (AtEnd() && typed_other->AtEnd()) ||
4702 current1_ == typed_other->current1_ &&
4703 current2_ == typed_other->current2_ &&
4704 current3_ == typed_other->current3_ &&
4705 current4_ == typed_other->current4_ &&
4706 current5_ == typed_other->current5_ &&
4707 current6_ == typed_other->current6_ &&
4708 current7_ == typed_other->current7_ &&
4709 current8_ == typed_other->current8_ &&
4710 current9_ == typed_other->current9_ &&
4711 current10_ == typed_other->current10_);
4715 Iterator(
const Iterator& other)
4716 : base_(
other.base_),
4717 begin1_(
other.begin1_),
4719 current1_(
other.current1_),
4720 begin2_(
other.begin2_),
4722 current2_(
other.current2_),
4723 begin3_(
other.begin3_),
4725 current3_(
other.current3_),
4726 begin4_(
other.begin4_),
4728 current4_(
other.current4_),
4729 begin5_(
other.begin5_),
4731 current5_(
other.current5_),
4732 begin6_(
other.begin6_),
4734 current6_(
other.current6_),
4735 begin7_(
other.begin7_),
4737 current7_(
other.current7_),
4738 begin8_(
other.begin8_),
4740 current8_(
other.current8_),
4741 begin9_(
other.begin9_),
4743 current9_(
other.current9_),
4744 begin10_(
other.begin10_),
4745 end10_(
other.end10_),
4746 current10_(
other.current10_) {
4747 ComputeCurrentValue();
4750 void ComputeCurrentValue() {
4752 current_value_.reset(
new ParamType(*current1_, *current2_, *current3_,
4753 *current4_, *current5_, *current6_, *current7_, *current8_,
4754 *current9_, *current10_));
4756 bool AtEnd()
const {
4760 current1_ == end1_ ||
4761 current2_ == end2_ ||
4762 current3_ == end3_ ||
4763 current4_ == end4_ ||
4764 current5_ == end5_ ||
4765 current6_ == end6_ ||
4766 current7_ == end7_ ||
4767 current8_ == end8_ ||
4768 current9_ == end9_ ||
4769 current10_ == end10_;
4773 void operator=(
const Iterator& other);
4775 const ParamGeneratorInterface<ParamType>*
const base_;
4778 const typename ParamGenerator<T1>::iterator begin1_;
4779 const typename ParamGenerator<T1>::iterator end1_;
4780 typename ParamGenerator<T1>::iterator current1_;
4781 const typename ParamGenerator<T2>::iterator begin2_;
4782 const typename ParamGenerator<T2>::iterator end2_;
4783 typename ParamGenerator<T2>::iterator current2_;
4784 const typename ParamGenerator<T3>::iterator begin3_;
4785 const typename ParamGenerator<T3>::iterator end3_;
4786 typename ParamGenerator<T3>::iterator current3_;
4787 const typename ParamGenerator<T4>::iterator begin4_;
4788 const typename ParamGenerator<T4>::iterator end4_;
4789 typename ParamGenerator<T4>::iterator current4_;
4790 const typename ParamGenerator<T5>::iterator begin5_;
4791 const typename ParamGenerator<T5>::iterator end5_;
4792 typename ParamGenerator<T5>::iterator current5_;
4793 const typename ParamGenerator<T6>::iterator begin6_;
4794 const typename ParamGenerator<T6>::iterator end6_;
4795 typename ParamGenerator<T6>::iterator current6_;
4796 const typename ParamGenerator<T7>::iterator begin7_;
4797 const typename ParamGenerator<T7>::iterator end7_;
4798 typename ParamGenerator<T7>::iterator current7_;
4799 const typename ParamGenerator<T8>::iterator begin8_;
4800 const typename ParamGenerator<T8>::iterator end8_;
4801 typename ParamGenerator<T8>::iterator current8_;
4802 const typename ParamGenerator<T9>::iterator begin9_;
4803 const typename ParamGenerator<T9>::iterator end9_;
4804 typename ParamGenerator<T9>::iterator current9_;
4805 const typename ParamGenerator<T10>::iterator begin10_;
4806 const typename ParamGenerator<T10>::iterator end10_;
4807 typename ParamGenerator<T10>::iterator current10_;
4808 linked_ptr<ParamType> current_value_;
4812 void operator=(
const CartesianProductGenerator10& other);
4814 const ParamGenerator<T1> g1_;
4815 const ParamGenerator<T2> g2_;
4816 const ParamGenerator<T3> g3_;
4817 const ParamGenerator<T4> g4_;
4818 const ParamGenerator<T5> g5_;
4819 const ParamGenerator<T6> g6_;
4820 const ParamGenerator<T7> g7_;
4821 const ParamGenerator<T8> g8_;
4822 const ParamGenerator<T9> g9_;
4823 const ParamGenerator<T10> g10_;
4833template <
class Generator1,
class Generator2>
4834class CartesianProductHolder2 {
4836CartesianProductHolder2(
const Generator1& g1,
const Generator2& g2)
4837 : g1_(g1), g2_(g2) {}
4838 template <
typename T1,
typename T2>
4839 operator ParamGenerator< ::testing::tuple<T1, T2> >()
const {
4840 return ParamGenerator< ::testing::tuple<T1, T2> >(
4841 new CartesianProductGenerator2<T1, T2>(
4842 static_cast<ParamGenerator<T1>
>(g1_),
4843 static_cast<ParamGenerator<T2>
>(g2_)));
4848 void operator=(
const CartesianProductHolder2& other);
4850 const Generator1 g1_;
4851 const Generator2 g2_;
4854template <
class Generator1,
class Generator2,
class Generator3>
4855class CartesianProductHolder3 {
4857CartesianProductHolder3(
const Generator1& g1,
const Generator2& g2,
4858 const Generator3& g3)
4859 : g1_(g1), g2_(g2), g3_(g3) {}
4860 template <
typename T1,
typename T2,
typename T3>
4861 operator ParamGenerator< ::testing::tuple<T1, T2, T3> >()
const {
4862 return ParamGenerator< ::testing::tuple<T1, T2, T3> >(
4863 new CartesianProductGenerator3<T1, T2, T3>(
4864 static_cast<ParamGenerator<T1>
>(g1_),
4865 static_cast<ParamGenerator<T2>
>(g2_),
4866 static_cast<ParamGenerator<T3>
>(g3_)));
4871 void operator=(
const CartesianProductHolder3& other);
4873 const Generator1 g1_;
4874 const Generator2 g2_;
4875 const Generator3 g3_;
4878template <
class Generator1,
class Generator2,
class Generator3,
4880class CartesianProductHolder4 {
4882CartesianProductHolder4(
const Generator1& g1,
const Generator2& g2,
4883 const Generator3& g3,
const Generator4& g4)
4884 : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {}
4885 template <
typename T1,
typename T2,
typename T3,
typename T4>
4886 operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4> >()
const {
4887 return ParamGenerator< ::testing::tuple<T1, T2, T3, T4> >(
4888 new CartesianProductGenerator4<T1, T2, T3, T4>(
4889 static_cast<ParamGenerator<T1>
>(g1_),
4890 static_cast<ParamGenerator<T2>
>(g2_),
4891 static_cast<ParamGenerator<T3>
>(g3_),
4892 static_cast<ParamGenerator<T4>
>(g4_)));
4897 void operator=(
const CartesianProductHolder4& other);
4899 const Generator1 g1_;
4900 const Generator2 g2_;
4901 const Generator3 g3_;
4902 const Generator4 g4_;
4905template <
class Generator1,
class Generator2,
class Generator3,
4906 class Generator4,
class Generator5>
4907class CartesianProductHolder5 {
4909CartesianProductHolder5(
const Generator1& g1,
const Generator2& g2,
4910 const Generator3& g3,
const Generator4& g4,
const Generator5& g5)
4911 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {}
4912 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
4913 operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5> >()
const {
4914 return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5> >(
4915 new CartesianProductGenerator5<T1, T2, T3, T4, T5>(
4916 static_cast<ParamGenerator<T1>
>(g1_),
4917 static_cast<ParamGenerator<T2>
>(g2_),
4918 static_cast<ParamGenerator<T3>
>(g3_),
4919 static_cast<ParamGenerator<T4>
>(g4_),
4920 static_cast<ParamGenerator<T5>
>(g5_)));
4925 void operator=(
const CartesianProductHolder5& other);
4927 const Generator1 g1_;
4928 const Generator2 g2_;
4929 const Generator3 g3_;
4930 const Generator4 g4_;
4931 const Generator5 g5_;
4934template <
class Generator1,
class Generator2,
class Generator3,
4935 class Generator4,
class Generator5,
class Generator6>
4936class CartesianProductHolder6 {
4938CartesianProductHolder6(
const Generator1& g1,
const Generator2& g2,
4939 const Generator3& g3,
const Generator4& g4,
const Generator5& g5,
4940 const Generator6& g6)
4941 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {}
4942 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4944 operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6> >()
const {
4945 return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6> >(
4946 new CartesianProductGenerator6<T1, T2, T3, T4, T5, T6>(
4947 static_cast<ParamGenerator<T1>
>(g1_),
4948 static_cast<ParamGenerator<T2>
>(g2_),
4949 static_cast<ParamGenerator<T3>
>(g3_),
4950 static_cast<ParamGenerator<T4>
>(g4_),
4951 static_cast<ParamGenerator<T5>
>(g5_),
4952 static_cast<ParamGenerator<T6>
>(g6_)));
4957 void operator=(
const CartesianProductHolder6& other);
4959 const Generator1 g1_;
4960 const Generator2 g2_;
4961 const Generator3 g3_;
4962 const Generator4 g4_;
4963 const Generator5 g5_;
4964 const Generator6 g6_;
4967template <
class Generator1,
class Generator2,
class Generator3,
4968 class Generator4,
class Generator5,
class Generator6,
class Generator7>
4969class CartesianProductHolder7 {
4971CartesianProductHolder7(
const Generator1& g1,
const Generator2& g2,
4972 const Generator3& g3,
const Generator4& g4,
const Generator5& g5,
4973 const Generator6& g6,
const Generator7& g7)
4974 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {}
4975 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4976 typename T6,
typename T7>
4977 operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6,
4979 return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7> >(
4980 new CartesianProductGenerator7<T1, T2, T3, T4, T5, T6, T7>(
4981 static_cast<ParamGenerator<T1>
>(g1_),
4982 static_cast<ParamGenerator<T2>
>(g2_),
4983 static_cast<ParamGenerator<T3>
>(g3_),
4984 static_cast<ParamGenerator<T4>
>(g4_),
4985 static_cast<ParamGenerator<T5>
>(g5_),
4986 static_cast<ParamGenerator<T6>
>(g6_),
4987 static_cast<ParamGenerator<T7>
>(g7_)));
4992 void operator=(
const CartesianProductHolder7& other);
4994 const Generator1 g1_;
4995 const Generator2 g2_;
4996 const Generator3 g3_;
4997 const Generator4 g4_;
4998 const Generator5 g5_;
4999 const Generator6 g6_;
5000 const Generator7 g7_;
5003template <
class Generator1,
class Generator2,
class Generator3,
5004 class Generator4,
class Generator5,
class Generator6,
class Generator7,
5006class CartesianProductHolder8 {
5008CartesianProductHolder8(
const Generator1& g1,
const Generator2& g2,
5009 const Generator3& g3,
const Generator4& g4,
const Generator5& g5,
5010 const Generator6& g6,
const Generator7& g7,
const Generator8& g8)
5011 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7),
5013 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5014 typename T6,
typename T7,
typename T8>
5015 operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7,
5017 return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8> >(
5018 new CartesianProductGenerator8<T1, T2, T3, T4, T5, T6, T7, T8>(
5019 static_cast<ParamGenerator<T1>
>(g1_),
5020 static_cast<ParamGenerator<T2>
>(g2_),
5021 static_cast<ParamGenerator<T3>
>(g3_),
5022 static_cast<ParamGenerator<T4>
>(g4_),
5023 static_cast<ParamGenerator<T5>
>(g5_),
5024 static_cast<ParamGenerator<T6>
>(g6_),
5025 static_cast<ParamGenerator<T7>
>(g7_),
5026 static_cast<ParamGenerator<T8>
>(g8_)));
5031 void operator=(
const CartesianProductHolder8& other);
5033 const Generator1 g1_;
5034 const Generator2 g2_;
5035 const Generator3 g3_;
5036 const Generator4 g4_;
5037 const Generator5 g5_;
5038 const Generator6 g6_;
5039 const Generator7 g7_;
5040 const Generator8 g8_;
5043template <
class Generator1,
class Generator2,
class Generator3,
5044 class Generator4,
class Generator5,
class Generator6,
class Generator7,
5045 class Generator8,
class Generator9>
5046class CartesianProductHolder9 {
5048CartesianProductHolder9(
const Generator1& g1,
const Generator2& g2,
5049 const Generator3& g3,
const Generator4& g4,
const Generator5& g5,
5050 const Generator6& g6,
const Generator7& g7,
const Generator8& g8,
5051 const Generator9& g9)
5052 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
5054 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5055 typename T6,
typename T7,
typename T8,
typename T9>
5056 operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
5058 return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
5060 new CartesianProductGenerator9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(
5061 static_cast<ParamGenerator<T1>
>(g1_),
5062 static_cast<ParamGenerator<T2>
>(g2_),
5063 static_cast<ParamGenerator<T3>
>(g3_),
5064 static_cast<ParamGenerator<T4>
>(g4_),
5065 static_cast<ParamGenerator<T5>
>(g5_),
5066 static_cast<ParamGenerator<T6>
>(g6_),
5067 static_cast<ParamGenerator<T7>
>(g7_),
5068 static_cast<ParamGenerator<T8>
>(g8_),
5069 static_cast<ParamGenerator<T9>
>(g9_)));
5074 void operator=(
const CartesianProductHolder9& other);
5076 const Generator1 g1_;
5077 const Generator2 g2_;
5078 const Generator3 g3_;
5079 const Generator4 g4_;
5080 const Generator5 g5_;
5081 const Generator6 g6_;
5082 const Generator7 g7_;
5083 const Generator8 g8_;
5084 const Generator9 g9_;
5087template <
class Generator1,
class Generator2,
class Generator3,
5088 class Generator4,
class Generator5,
class Generator6,
class Generator7,
5089 class Generator8,
class Generator9,
class Generator10>
5090class CartesianProductHolder10 {
5092CartesianProductHolder10(
const Generator1& g1,
const Generator2& g2,
5093 const Generator3& g3,
const Generator4& g4,
const Generator5& g5,
5094 const Generator6& g6,
const Generator7& g7,
const Generator8& g8,
5095 const Generator9& g9,
const Generator10& g10)
5096 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
5097 g9_(g9), g10_(g10) {}
5098 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5099 typename T6,
typename T7,
typename T8,
typename T9,
typename T10>
5100 operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9,
5102 return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9,
5104 new CartesianProductGenerator10<T1, T2, T3, T4, T5, T6, T7, T8, T9,
5106 static_cast<ParamGenerator<T1>
>(g1_),
5107 static_cast<ParamGenerator<T2>
>(g2_),
5108 static_cast<ParamGenerator<T3>
>(g3_),
5109 static_cast<ParamGenerator<T4>
>(g4_),
5110 static_cast<ParamGenerator<T5>
>(g5_),
5111 static_cast<ParamGenerator<T6>
>(g6_),
5112 static_cast<ParamGenerator<T7>
>(g7_),
5113 static_cast<ParamGenerator<T8>
>(g8_),
5114 static_cast<ParamGenerator<T9>
>(g9_),
5115 static_cast<ParamGenerator<T10>
>(g10_)));
5120 void operator=(
const CartesianProductHolder10& other);
5122 const Generator1 g1_;
5123 const Generator2 g2_;
5124 const Generator3 g3_;
5125 const Generator4 g4_;
5126 const Generator5 g5_;
5127 const Generator6 g6_;
5128 const Generator7 g7_;
5129 const Generator8 g8_;
5130 const Generator9 g9_;
5131 const Generator10 g10_;
ValueArray10(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10)
ValueArray11(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11)
ValueArray12(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12)
ValueArray13(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13)
ValueArray14(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14)
ValueArray15(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15)
ValueArray16(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16)
ValueArray17(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17)
ValueArray18(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18)
ValueArray19(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19)
ValueArray20(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20)
ValueArray21(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21)
ValueArray22(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22)
ValueArray23(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23)
ValueArray24(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24)
ValueArray25(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25)
ValueArray26(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26)
ValueArray27(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27)
ValueArray28(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28)
ValueArray29(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29)
ValueArray2(T1 v1, T2 v2)
ValueArray30(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30)
ValueArray31(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31)
ValueArray32(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32)
ValueArray33(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33)
ValueArray34(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34)
ValueArray35(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35)
ValueArray36(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36)
ValueArray37(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37)
ValueArray38(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38)
ValueArray39(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39)
ValueArray3(T1 v1, T2 v2, T3 v3)
ValueArray40(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40)
ValueArray41(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41)
ValueArray42(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42)
ValueArray43(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43)
ValueArray44(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44)
ValueArray45(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45)
ValueArray46(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46)
ValueArray47(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47)
ValueArray48(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48)
ValueArray49(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49)
ValueArray4(T1 v1, T2 v2, T3 v3, T4 v4)
ValueArray50(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49, T50 v50)
ValueArray5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5)
ValueArray6(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6)
ValueArray7(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7)
ValueArray8(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8)
ValueArray9(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9)
#define GTEST_CHECK_(condition)
StdString::EqualsMatcher Equals(std::string const &str, CaseSensitive::Choice caseSensitivity)
internal::ParamGenerator< typename ::testing::internal::IteratorTraits< ForwardIterator >::value_type > ValuesIn(ForwardIterator begin, ForwardIterator end)
#define T(meth, val, expected)