1// This file was GENERATED by command:
2//     pump.py gtest-param-util-generated.h.pump
3// DO NOT EDIT BY HAND!!!
4
5// Copyright 2008 Google Inc.
6// All Rights Reserved.
7//
8// Redistribution and use in source and binary forms, with or without
9// modification, are permitted provided that the following conditions are
10// met:
11//
12//     * Redistributions of source code must retain the above copyright
13// notice, this list of conditions and the following disclaimer.
14//     * Redistributions in binary form must reproduce the above
15// copyright notice, this list of conditions and the following disclaimer
16// in the documentation and/or other materials provided with the
17// distribution.
18//     * Neither the name of Google Inc. nor the names of its
19// contributors may be used to endorse or promote products derived from
20// this software without specific prior written permission.
21//
22// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33//
34// Author: vladl@google.com (Vlad Losev)
35
36// Type and function utilities for implementing parameterized tests.
37// This file is generated by a SCRIPT.  DO NOT EDIT BY HAND!
38//
39// Currently Google Test supports at most 50 arguments in Values,
40// and at most 10 arguments in Combine. Please contact
41// googletestframework@googlegroups.com if you need more.
42// Please note that the number of arguments to Combine is limited
43// by the maximum arity of the implementation of tr1::tuple which is
44// currently set at 10.
45
46#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
47#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
48
49// scripts/fuse_gtest.py depends on gtest's own header being #included
50// *unconditionally*.  Therefore these #includes cannot be moved
51// inside #if GTEST_HAS_PARAM_TEST.
52#include "gtest/internal/gtest-param-util.h"
53#include "gtest/internal/gtest-port.h"
54
55#if GTEST_HAS_PARAM_TEST
56
57namespace testing {
58
59// Forward declarations of ValuesIn(), which is implemented in
60// include/gtest/gtest-param-test.h.
61template <typename ForwardIterator>
62internal::ParamGenerator<
63  typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
64ValuesIn(ForwardIterator begin, ForwardIterator end);
65
66template <typename T, size_t N>
67internal::ParamGenerator<T> ValuesIn(const T (&array)[N]);
68
69template <class Container>
70internal::ParamGenerator<typename Container::value_type> ValuesIn(
71    const Container& container);
72
73namespace internal {
74
75// Used in the Values() function to provide polymorphic capabilities.
76template <typename T1>
77class ValueArray1 {
78 public:
79  explicit ValueArray1(T1 v1) : v1_(v1) {}
80
81  template <typename T>
82  operator ParamGenerator<T>() const { return ValuesIn(&v1_, &v1_ + 1); }
83
84 private:
85  // No implementation - assignment is unsupported.
86  void operator=(const ValueArray1& other);
87
88  const T1 v1_;
89};
90
91template <typename T1, typename T2>
92class ValueArray2 {
93 public:
94  ValueArray2(T1 v1, T2 v2) : v1_(v1), v2_(v2) {}
95
96  template <typename T>
97  operator ParamGenerator<T>() const {
98    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_)};
99    return ValuesIn(array);
100  }
101
102 private:
103  // No implementation - assignment is unsupported.
104  void operator=(const ValueArray2& other);
105
106  const T1 v1_;
107  const T2 v2_;
108};
109
110template <typename T1, typename T2, typename T3>
111class ValueArray3 {
112 public:
113  ValueArray3(T1 v1, T2 v2, T3 v3) : v1_(v1), v2_(v2), v3_(v3) {}
114
115  template <typename T>
116  operator ParamGenerator<T>() const {
117    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
118        static_cast<T>(v3_)};
119    return ValuesIn(array);
120  }
121
122 private:
123  // No implementation - assignment is unsupported.
124  void operator=(const ValueArray3& other);
125
126  const T1 v1_;
127  const T2 v2_;
128  const T3 v3_;
129};
130
131template <typename T1, typename T2, typename T3, typename T4>
132class ValueArray4 {
133 public:
134  ValueArray4(T1 v1, T2 v2, T3 v3, T4 v4) : v1_(v1), v2_(v2), v3_(v3),
135      v4_(v4) {}
136
137  template <typename T>
138  operator ParamGenerator<T>() const {
139    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
140        static_cast<T>(v3_), static_cast<T>(v4_)};
141    return ValuesIn(array);
142  }
143
144 private:
145  // No implementation - assignment is unsupported.
146  void operator=(const ValueArray4& other);
147
148  const T1 v1_;
149  const T2 v2_;
150  const T3 v3_;
151  const T4 v4_;
152};
153
154template <typename T1, typename T2, typename T3, typename T4, typename T5>
155class ValueArray5 {
156 public:
157  ValueArray5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) : v1_(v1), v2_(v2), v3_(v3),
158      v4_(v4), v5_(v5) {}
159
160  template <typename T>
161  operator ParamGenerator<T>() const {
162    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
163        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_)};
164    return ValuesIn(array);
165  }
166
167 private:
168  // No implementation - assignment is unsupported.
169  void operator=(const ValueArray5& other);
170
171  const T1 v1_;
172  const T2 v2_;
173  const T3 v3_;
174  const T4 v4_;
175  const T5 v5_;
176};
177
178template <typename T1, typename T2, typename T3, typename T4, typename T5,
179    typename T6>
180class ValueArray6 {
181 public:
182  ValueArray6(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) : v1_(v1), v2_(v2),
183      v3_(v3), v4_(v4), v5_(v5), v6_(v6) {}
184
185  template <typename T>
186  operator ParamGenerator<T>() const {
187    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
188        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
189        static_cast<T>(v6_)};
190    return ValuesIn(array);
191  }
192
193 private:
194  // No implementation - assignment is unsupported.
195  void operator=(const ValueArray6& other);
196
197  const T1 v1_;
198  const T2 v2_;
199  const T3 v3_;
200  const T4 v4_;
201  const T5 v5_;
202  const T6 v6_;
203};
204
205template <typename T1, typename T2, typename T3, typename T4, typename T5,
206    typename T6, typename T7>
207class ValueArray7 {
208 public:
209  ValueArray7(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) : v1_(v1),
210      v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7) {}
211
212  template <typename T>
213  operator ParamGenerator<T>() const {
214    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
215        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
216        static_cast<T>(v6_), static_cast<T>(v7_)};
217    return ValuesIn(array);
218  }
219
220 private:
221  // No implementation - assignment is unsupported.
222  void operator=(const ValueArray7& other);
223
224  const T1 v1_;
225  const T2 v2_;
226  const T3 v3_;
227  const T4 v4_;
228  const T5 v5_;
229  const T6 v6_;
230  const T7 v7_;
231};
232
233template <typename T1, typename T2, typename T3, typename T4, typename T5,
234    typename T6, typename T7, typename T8>
235class ValueArray8 {
236 public:
237  ValueArray8(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
238      T8 v8) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
239      v8_(v8) {}
240
241  template <typename T>
242  operator ParamGenerator<T>() const {
243    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
244        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
245        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_)};
246    return ValuesIn(array);
247  }
248
249 private:
250  // No implementation - assignment is unsupported.
251  void operator=(const ValueArray8& other);
252
253  const T1 v1_;
254  const T2 v2_;
255  const T3 v3_;
256  const T4 v4_;
257  const T5 v5_;
258  const T6 v6_;
259  const T7 v7_;
260  const T8 v8_;
261};
262
263template <typename T1, typename T2, typename T3, typename T4, typename T5,
264    typename T6, typename T7, typename T8, typename T9>
265class ValueArray9 {
266 public:
267  ValueArray9(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
268      T9 v9) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
269      v8_(v8), v9_(v9) {}
270
271  template <typename T>
272  operator ParamGenerator<T>() const {
273    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
274        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
275        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
276        static_cast<T>(v9_)};
277    return ValuesIn(array);
278  }
279
280 private:
281  // No implementation - assignment is unsupported.
282  void operator=(const ValueArray9& other);
283
284  const T1 v1_;
285  const T2 v2_;
286  const T3 v3_;
287  const T4 v4_;
288  const T5 v5_;
289  const T6 v6_;
290  const T7 v7_;
291  const T8 v8_;
292  const T9 v9_;
293};
294
295template <typename T1, typename T2, typename T3, typename T4, typename T5,
296    typename T6, typename T7, typename T8, typename T9, typename T10>
297class ValueArray10 {
298 public:
299  ValueArray10(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
300      T10 v10) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
301      v8_(v8), v9_(v9), v10_(v10) {}
302
303  template <typename T>
304  operator ParamGenerator<T>() const {
305    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
306        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
307        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
308        static_cast<T>(v9_), static_cast<T>(v10_)};
309    return ValuesIn(array);
310  }
311
312 private:
313  // No implementation - assignment is unsupported.
314  void operator=(const ValueArray10& other);
315
316  const T1 v1_;
317  const T2 v2_;
318  const T3 v3_;
319  const T4 v4_;
320  const T5 v5_;
321  const T6 v6_;
322  const T7 v7_;
323  const T8 v8_;
324  const T9 v9_;
325  const T10 v10_;
326};
327
328template <typename T1, typename T2, typename T3, typename T4, typename T5,
329    typename T6, typename T7, typename T8, typename T9, typename T10,
330    typename T11>
331class ValueArray11 {
332 public:
333  ValueArray11(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
334      T10 v10, T11 v11) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
335      v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11) {}
336
337  template <typename T>
338  operator ParamGenerator<T>() const {
339    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
340        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
341        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
342        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_)};
343    return ValuesIn(array);
344  }
345
346 private:
347  // No implementation - assignment is unsupported.
348  void operator=(const ValueArray11& other);
349
350  const T1 v1_;
351  const T2 v2_;
352  const T3 v3_;
353  const T4 v4_;
354  const T5 v5_;
355  const T6 v6_;
356  const T7 v7_;
357  const T8 v8_;
358  const T9 v9_;
359  const T10 v10_;
360  const T11 v11_;
361};
362
363template <typename T1, typename T2, typename T3, typename T4, typename T5,
364    typename T6, typename T7, typename T8, typename T9, typename T10,
365    typename T11, typename T12>
366class ValueArray12 {
367 public:
368  ValueArray12(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
369      T10 v10, T11 v11, T12 v12) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
370      v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12) {}
371
372  template <typename T>
373  operator ParamGenerator<T>() const {
374    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
375        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
376        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
377        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
378        static_cast<T>(v12_)};
379    return ValuesIn(array);
380  }
381
382 private:
383  // No implementation - assignment is unsupported.
384  void operator=(const ValueArray12& other);
385
386  const T1 v1_;
387  const T2 v2_;
388  const T3 v3_;
389  const T4 v4_;
390  const T5 v5_;
391  const T6 v6_;
392  const T7 v7_;
393  const T8 v8_;
394  const T9 v9_;
395  const T10 v10_;
396  const T11 v11_;
397  const T12 v12_;
398};
399
400template <typename T1, typename T2, typename T3, typename T4, typename T5,
401    typename T6, typename T7, typename T8, typename T9, typename T10,
402    typename T11, typename T12, typename T13>
403class ValueArray13 {
404 public:
405  ValueArray13(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
406      T10 v10, T11 v11, T12 v12, T13 v13) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
407      v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
408      v12_(v12), v13_(v13) {}
409
410  template <typename T>
411  operator ParamGenerator<T>() const {
412    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
413        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
414        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
415        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
416        static_cast<T>(v12_), static_cast<T>(v13_)};
417    return ValuesIn(array);
418  }
419
420 private:
421  // No implementation - assignment is unsupported.
422  void operator=(const ValueArray13& other);
423
424  const T1 v1_;
425  const T2 v2_;
426  const T3 v3_;
427  const T4 v4_;
428  const T5 v5_;
429  const T6 v6_;
430  const T7 v7_;
431  const T8 v8_;
432  const T9 v9_;
433  const T10 v10_;
434  const T11 v11_;
435  const T12 v12_;
436  const T13 v13_;
437};
438
439template <typename T1, typename T2, typename T3, typename T4, typename T5,
440    typename T6, typename T7, typename T8, typename T9, typename T10,
441    typename T11, typename T12, typename T13, typename T14>
442class ValueArray14 {
443 public:
444  ValueArray14(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
445      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) : v1_(v1), v2_(v2), v3_(v3),
446      v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
447      v11_(v11), v12_(v12), v13_(v13), v14_(v14) {}
448
449  template <typename T>
450  operator ParamGenerator<T>() const {
451    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
452        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
453        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
454        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
455        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_)};
456    return ValuesIn(array);
457  }
458
459 private:
460  // No implementation - assignment is unsupported.
461  void operator=(const ValueArray14& other);
462
463  const T1 v1_;
464  const T2 v2_;
465  const T3 v3_;
466  const T4 v4_;
467  const T5 v5_;
468  const T6 v6_;
469  const T7 v7_;
470  const T8 v8_;
471  const T9 v9_;
472  const T10 v10_;
473  const T11 v11_;
474  const T12 v12_;
475  const T13 v13_;
476  const T14 v14_;
477};
478
479template <typename T1, typename T2, typename T3, typename T4, typename T5,
480    typename T6, typename T7, typename T8, typename T9, typename T10,
481    typename T11, typename T12, typename T13, typename T14, typename T15>
482class ValueArray15 {
483 public:
484  ValueArray15(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
485      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) : v1_(v1), v2_(v2),
486      v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
487      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15) {}
488
489  template <typename T>
490  operator ParamGenerator<T>() const {
491    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
492        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
493        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
494        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
495        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
496        static_cast<T>(v15_)};
497    return ValuesIn(array);
498  }
499
500 private:
501  // No implementation - assignment is unsupported.
502  void operator=(const ValueArray15& other);
503
504  const T1 v1_;
505  const T2 v2_;
506  const T3 v3_;
507  const T4 v4_;
508  const T5 v5_;
509  const T6 v6_;
510  const T7 v7_;
511  const T8 v8_;
512  const T9 v9_;
513  const T10 v10_;
514  const T11 v11_;
515  const T12 v12_;
516  const T13 v13_;
517  const T14 v14_;
518  const T15 v15_;
519};
520
521template <typename T1, typename T2, typename T3, typename T4, typename T5,
522    typename T6, typename T7, typename T8, typename T9, typename T10,
523    typename T11, typename T12, typename T13, typename T14, typename T15,
524    typename T16>
525class ValueArray16 {
526 public:
527  ValueArray16(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
528      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16) : v1_(v1),
529      v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
530      v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
531      v16_(v16) {}
532
533  template <typename T>
534  operator ParamGenerator<T>() const {
535    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
536        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
537        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
538        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
539        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
540        static_cast<T>(v15_), static_cast<T>(v16_)};
541    return ValuesIn(array);
542  }
543
544 private:
545  // No implementation - assignment is unsupported.
546  void operator=(const ValueArray16& other);
547
548  const T1 v1_;
549  const T2 v2_;
550  const T3 v3_;
551  const T4 v4_;
552  const T5 v5_;
553  const T6 v6_;
554  const T7 v7_;
555  const T8 v8_;
556  const T9 v9_;
557  const T10 v10_;
558  const T11 v11_;
559  const T12 v12_;
560  const T13 v13_;
561  const T14 v14_;
562  const T15 v15_;
563  const T16 v16_;
564};
565
566template <typename T1, typename T2, typename T3, typename T4, typename T5,
567    typename T6, typename T7, typename T8, typename T9, typename T10,
568    typename T11, typename T12, typename T13, typename T14, typename T15,
569    typename T16, typename T17>
570class ValueArray17 {
571 public:
572  ValueArray17(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
573      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
574      T17 v17) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
575      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
576      v15_(v15), v16_(v16), v17_(v17) {}
577
578  template <typename T>
579  operator ParamGenerator<T>() const {
580    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
581        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
582        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
583        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
584        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
585        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_)};
586    return ValuesIn(array);
587  }
588
589 private:
590  // No implementation - assignment is unsupported.
591  void operator=(const ValueArray17& other);
592
593  const T1 v1_;
594  const T2 v2_;
595  const T3 v3_;
596  const T4 v4_;
597  const T5 v5_;
598  const T6 v6_;
599  const T7 v7_;
600  const T8 v8_;
601  const T9 v9_;
602  const T10 v10_;
603  const T11 v11_;
604  const T12 v12_;
605  const T13 v13_;
606  const T14 v14_;
607  const T15 v15_;
608  const T16 v16_;
609  const T17 v17_;
610};
611
612template <typename T1, typename T2, typename T3, typename T4, typename T5,
613    typename T6, typename T7, typename T8, typename T9, typename T10,
614    typename T11, typename T12, typename T13, typename T14, typename T15,
615    typename T16, typename T17, typename T18>
616class ValueArray18 {
617 public:
618  ValueArray18(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
619      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
620      T18 v18) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
621      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
622      v15_(v15), v16_(v16), v17_(v17), v18_(v18) {}
623
624  template <typename T>
625  operator ParamGenerator<T>() const {
626    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
627        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
628        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
629        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
630        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
631        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
632        static_cast<T>(v18_)};
633    return ValuesIn(array);
634  }
635
636 private:
637  // No implementation - assignment is unsupported.
638  void operator=(const ValueArray18& other);
639
640  const T1 v1_;
641  const T2 v2_;
642  const T3 v3_;
643  const T4 v4_;
644  const T5 v5_;
645  const T6 v6_;
646  const T7 v7_;
647  const T8 v8_;
648  const T9 v9_;
649  const T10 v10_;
650  const T11 v11_;
651  const T12 v12_;
652  const T13 v13_;
653  const T14 v14_;
654  const T15 v15_;
655  const T16 v16_;
656  const T17 v17_;
657  const T18 v18_;
658};
659
660template <typename T1, typename T2, typename T3, typename T4, typename T5,
661    typename T6, typename T7, typename T8, typename T9, typename T10,
662    typename T11, typename T12, typename T13, typename T14, typename T15,
663    typename T16, typename T17, typename T18, typename T19>
664class ValueArray19 {
665 public:
666  ValueArray19(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
667      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
668      T18 v18, T19 v19) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
669      v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
670      v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19) {}
671
672  template <typename T>
673  operator ParamGenerator<T>() const {
674    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
675        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
676        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
677        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
678        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
679        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
680        static_cast<T>(v18_), static_cast<T>(v19_)};
681    return ValuesIn(array);
682  }
683
684 private:
685  // No implementation - assignment is unsupported.
686  void operator=(const ValueArray19& other);
687
688  const T1 v1_;
689  const T2 v2_;
690  const T3 v3_;
691  const T4 v4_;
692  const T5 v5_;
693  const T6 v6_;
694  const T7 v7_;
695  const T8 v8_;
696  const T9 v9_;
697  const T10 v10_;
698  const T11 v11_;
699  const T12 v12_;
700  const T13 v13_;
701  const T14 v14_;
702  const T15 v15_;
703  const T16 v16_;
704  const T17 v17_;
705  const T18 v18_;
706  const T19 v19_;
707};
708
709template <typename T1, typename T2, typename T3, typename T4, typename T5,
710    typename T6, typename T7, typename T8, typename T9, typename T10,
711    typename T11, typename T12, typename T13, typename T14, typename T15,
712    typename T16, typename T17, typename T18, typename T19, typename T20>
713class ValueArray20 {
714 public:
715  ValueArray20(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
716      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
717      T18 v18, T19 v19, T20 v20) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
718      v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
719      v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
720      v19_(v19), v20_(v20) {}
721
722  template <typename T>
723  operator ParamGenerator<T>() const {
724    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
725        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
726        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
727        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
728        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
729        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
730        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_)};
731    return ValuesIn(array);
732  }
733
734 private:
735  // No implementation - assignment is unsupported.
736  void operator=(const ValueArray20& other);
737
738  const T1 v1_;
739  const T2 v2_;
740  const T3 v3_;
741  const T4 v4_;
742  const T5 v5_;
743  const T6 v6_;
744  const T7 v7_;
745  const T8 v8_;
746  const T9 v9_;
747  const T10 v10_;
748  const T11 v11_;
749  const T12 v12_;
750  const T13 v13_;
751  const T14 v14_;
752  const T15 v15_;
753  const T16 v16_;
754  const T17 v17_;
755  const T18 v18_;
756  const T19 v19_;
757  const T20 v20_;
758};
759
760template <typename T1, typename T2, typename T3, typename T4, typename T5,
761    typename T6, typename T7, typename T8, typename T9, typename T10,
762    typename T11, typename T12, typename T13, typename T14, typename T15,
763    typename T16, typename T17, typename T18, typename T19, typename T20,
764    typename T21>
765class ValueArray21 {
766 public:
767  ValueArray21(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
768      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
769      T18 v18, T19 v19, T20 v20, T21 v21) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
770      v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
771      v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
772      v18_(v18), v19_(v19), v20_(v20), v21_(v21) {}
773
774  template <typename T>
775  operator ParamGenerator<T>() const {
776    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
777        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
778        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
779        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
780        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
781        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
782        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
783        static_cast<T>(v21_)};
784    return ValuesIn(array);
785  }
786
787 private:
788  // No implementation - assignment is unsupported.
789  void operator=(const ValueArray21& other);
790
791  const T1 v1_;
792  const T2 v2_;
793  const T3 v3_;
794  const T4 v4_;
795  const T5 v5_;
796  const T6 v6_;
797  const T7 v7_;
798  const T8 v8_;
799  const T9 v9_;
800  const T10 v10_;
801  const T11 v11_;
802  const T12 v12_;
803  const T13 v13_;
804  const T14 v14_;
805  const T15 v15_;
806  const T16 v16_;
807  const T17 v17_;
808  const T18 v18_;
809  const T19 v19_;
810  const T20 v20_;
811  const T21 v21_;
812};
813
814template <typename T1, typename T2, typename T3, typename T4, typename T5,
815    typename T6, typename T7, typename T8, typename T9, typename T10,
816    typename T11, typename T12, typename T13, typename T14, typename T15,
817    typename T16, typename T17, typename T18, typename T19, typename T20,
818    typename T21, typename T22>
819class ValueArray22 {
820 public:
821  ValueArray22(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
822      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
823      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) : v1_(v1), v2_(v2), v3_(v3),
824      v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
825      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
826      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22) {}
827
828  template <typename T>
829  operator ParamGenerator<T>() const {
830    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
831        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
832        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
833        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
834        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
835        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
836        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
837        static_cast<T>(v21_), static_cast<T>(v22_)};
838    return ValuesIn(array);
839  }
840
841 private:
842  // No implementation - assignment is unsupported.
843  void operator=(const ValueArray22& other);
844
845  const T1 v1_;
846  const T2 v2_;
847  const T3 v3_;
848  const T4 v4_;
849  const T5 v5_;
850  const T6 v6_;
851  const T7 v7_;
852  const T8 v8_;
853  const T9 v9_;
854  const T10 v10_;
855  const T11 v11_;
856  const T12 v12_;
857  const T13 v13_;
858  const T14 v14_;
859  const T15 v15_;
860  const T16 v16_;
861  const T17 v17_;
862  const T18 v18_;
863  const T19 v19_;
864  const T20 v20_;
865  const T21 v21_;
866  const T22 v22_;
867};
868
869template <typename T1, typename T2, typename T3, typename T4, typename T5,
870    typename T6, typename T7, typename T8, typename T9, typename T10,
871    typename T11, typename T12, typename T13, typename T14, typename T15,
872    typename T16, typename T17, typename T18, typename T19, typename T20,
873    typename T21, typename T22, typename T23>
874class ValueArray23 {
875 public:
876  ValueArray23(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
877      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
878      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) : v1_(v1), v2_(v2),
879      v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
880      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
881      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
882      v23_(v23) {}
883
884  template <typename T>
885  operator ParamGenerator<T>() const {
886    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
887        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
888        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
889        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
890        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
891        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
892        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
893        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_)};
894    return ValuesIn(array);
895  }
896
897 private:
898  // No implementation - assignment is unsupported.
899  void operator=(const ValueArray23& other);
900
901  const T1 v1_;
902  const T2 v2_;
903  const T3 v3_;
904  const T4 v4_;
905  const T5 v5_;
906  const T6 v6_;
907  const T7 v7_;
908  const T8 v8_;
909  const T9 v9_;
910  const T10 v10_;
911  const T11 v11_;
912  const T12 v12_;
913  const T13 v13_;
914  const T14 v14_;
915  const T15 v15_;
916  const T16 v16_;
917  const T17 v17_;
918  const T18 v18_;
919  const T19 v19_;
920  const T20 v20_;
921  const T21 v21_;
922  const T22 v22_;
923  const T23 v23_;
924};
925
926template <typename T1, typename T2, typename T3, typename T4, typename T5,
927    typename T6, typename T7, typename T8, typename T9, typename T10,
928    typename T11, typename T12, typename T13, typename T14, typename T15,
929    typename T16, typename T17, typename T18, typename T19, typename T20,
930    typename T21, typename T22, typename T23, typename T24>
931class ValueArray24 {
932 public:
933  ValueArray24(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
934      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
935      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) : v1_(v1),
936      v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
937      v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
938      v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
939      v22_(v22), v23_(v23), v24_(v24) {}
940
941  template <typename T>
942  operator ParamGenerator<T>() const {
943    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
944        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
945        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
946        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
947        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
948        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
949        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
950        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
951        static_cast<T>(v24_)};
952    return ValuesIn(array);
953  }
954
955 private:
956  // No implementation - assignment is unsupported.
957  void operator=(const ValueArray24& other);
958
959  const T1 v1_;
960  const T2 v2_;
961  const T3 v3_;
962  const T4 v4_;
963  const T5 v5_;
964  const T6 v6_;
965  const T7 v7_;
966  const T8 v8_;
967  const T9 v9_;
968  const T10 v10_;
969  const T11 v11_;
970  const T12 v12_;
971  const T13 v13_;
972  const T14 v14_;
973  const T15 v15_;
974  const T16 v16_;
975  const T17 v17_;
976  const T18 v18_;
977  const T19 v19_;
978  const T20 v20_;
979  const T21 v21_;
980  const T22 v22_;
981  const T23 v23_;
982  const T24 v24_;
983};
984
985template <typename T1, typename T2, typename T3, typename T4, typename T5,
986    typename T6, typename T7, typename T8, typename T9, typename T10,
987    typename T11, typename T12, typename T13, typename T14, typename T15,
988    typename T16, typename T17, typename T18, typename T19, typename T20,
989    typename T21, typename T22, typename T23, typename T24, typename T25>
990class ValueArray25 {
991 public:
992  ValueArray25(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
993      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
994      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
995      T25 v25) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
996      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
997      v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
998      v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25) {}
999
1000  template <typename T>
1001  operator ParamGenerator<T>() const {
1002    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
1003        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
1004        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
1005        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
1006        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
1007        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
1008        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
1009        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
1010        static_cast<T>(v24_), static_cast<T>(v25_)};
1011    return ValuesIn(array);
1012  }
1013
1014 private:
1015  // No implementation - assignment is unsupported.
1016  void operator=(const ValueArray25& other);
1017
1018  const T1 v1_;
1019  const T2 v2_;
1020  const T3 v3_;
1021  const T4 v4_;
1022  const T5 v5_;
1023  const T6 v6_;
1024  const T7 v7_;
1025  const T8 v8_;
1026  const T9 v9_;
1027  const T10 v10_;
1028  const T11 v11_;
1029  const T12 v12_;
1030  const T13 v13_;
1031  const T14 v14_;
1032  const T15 v15_;
1033  const T16 v16_;
1034  const T17 v17_;
1035  const T18 v18_;
1036  const T19 v19_;
1037  const T20 v20_;
1038  const T21 v21_;
1039  const T22 v22_;
1040  const T23 v23_;
1041  const T24 v24_;
1042  const T25 v25_;
1043};
1044
1045template <typename T1, typename T2, typename T3, typename T4, typename T5,
1046    typename T6, typename T7, typename T8, typename T9, typename T10,
1047    typename T11, typename T12, typename T13, typename T14, typename T15,
1048    typename T16, typename T17, typename T18, typename T19, typename T20,
1049    typename T21, typename T22, typename T23, typename T24, typename T25,
1050    typename T26>
1051class ValueArray26 {
1052 public:
1053  ValueArray26(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1054      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1055      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1056      T26 v26) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
1057      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
1058      v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
1059      v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26) {}
1060
1061  template <typename T>
1062  operator ParamGenerator<T>() const {
1063    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
1064        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
1065        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
1066        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
1067        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
1068        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
1069        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
1070        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
1071        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_)};
1072    return ValuesIn(array);
1073  }
1074
1075 private:
1076  // No implementation - assignment is unsupported.
1077  void operator=(const ValueArray26& other);
1078
1079  const T1 v1_;
1080  const T2 v2_;
1081  const T3 v3_;
1082  const T4 v4_;
1083  const T5 v5_;
1084  const T6 v6_;
1085  const T7 v7_;
1086  const T8 v8_;
1087  const T9 v9_;
1088  const T10 v10_;
1089  const T11 v11_;
1090  const T12 v12_;
1091  const T13 v13_;
1092  const T14 v14_;
1093  const T15 v15_;
1094  const T16 v16_;
1095  const T17 v17_;
1096  const T18 v18_;
1097  const T19 v19_;
1098  const T20 v20_;
1099  const T21 v21_;
1100  const T22 v22_;
1101  const T23 v23_;
1102  const T24 v24_;
1103  const T25 v25_;
1104  const T26 v26_;
1105};
1106
1107template <typename T1, typename T2, typename T3, typename T4, typename T5,
1108    typename T6, typename T7, typename T8, typename T9, typename T10,
1109    typename T11, typename T12, typename T13, typename T14, typename T15,
1110    typename T16, typename T17, typename T18, typename T19, typename T20,
1111    typename T21, typename T22, typename T23, typename T24, typename T25,
1112    typename T26, typename T27>
1113class ValueArray27 {
1114 public:
1115  ValueArray27(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1116      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1117      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1118      T26 v26, T27 v27) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
1119      v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
1120      v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
1121      v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
1122      v26_(v26), v27_(v27) {}
1123
1124  template <typename T>
1125  operator ParamGenerator<T>() const {
1126    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
1127        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
1128        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
1129        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
1130        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
1131        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
1132        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
1133        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
1134        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
1135        static_cast<T>(v27_)};
1136    return ValuesIn(array);
1137  }
1138
1139 private:
1140  // No implementation - assignment is unsupported.
1141  void operator=(const ValueArray27& other);
1142
1143  const T1 v1_;
1144  const T2 v2_;
1145  const T3 v3_;
1146  const T4 v4_;
1147  const T5 v5_;
1148  const T6 v6_;
1149  const T7 v7_;
1150  const T8 v8_;
1151  const T9 v9_;
1152  const T10 v10_;
1153  const T11 v11_;
1154  const T12 v12_;
1155  const T13 v13_;
1156  const T14 v14_;
1157  const T15 v15_;
1158  const T16 v16_;
1159  const T17 v17_;
1160  const T18 v18_;
1161  const T19 v19_;
1162  const T20 v20_;
1163  const T21 v21_;
1164  const T22 v22_;
1165  const T23 v23_;
1166  const T24 v24_;
1167  const T25 v25_;
1168  const T26 v26_;
1169  const T27 v27_;
1170};
1171
1172template <typename T1, typename T2, typename T3, typename T4, typename T5,
1173    typename T6, typename T7, typename T8, typename T9, typename T10,
1174    typename T11, typename T12, typename T13, typename T14, typename T15,
1175    typename T16, typename T17, typename T18, typename T19, typename T20,
1176    typename T21, typename T22, typename T23, typename T24, typename T25,
1177    typename T26, typename T27, typename T28>
1178class ValueArray28 {
1179 public:
1180  ValueArray28(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1181      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1182      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1183      T26 v26, T27 v27, T28 v28) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
1184      v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
1185      v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
1186      v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
1187      v25_(v25), v26_(v26), v27_(v27), v28_(v28) {}
1188
1189  template <typename T>
1190  operator ParamGenerator<T>() const {
1191    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
1192        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
1193        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
1194        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
1195        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
1196        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
1197        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
1198        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
1199        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
1200        static_cast<T>(v27_), static_cast<T>(v28_)};
1201    return ValuesIn(array);
1202  }
1203
1204 private:
1205  // No implementation - assignment is unsupported.
1206  void operator=(const ValueArray28& other);
1207
1208  const T1 v1_;
1209  const T2 v2_;
1210  const T3 v3_;
1211  const T4 v4_;
1212  const T5 v5_;
1213  const T6 v6_;
1214  const T7 v7_;
1215  const T8 v8_;
1216  const T9 v9_;
1217  const T10 v10_;
1218  const T11 v11_;
1219  const T12 v12_;
1220  const T13 v13_;
1221  const T14 v14_;
1222  const T15 v15_;
1223  const T16 v16_;
1224  const T17 v17_;
1225  const T18 v18_;
1226  const T19 v19_;
1227  const T20 v20_;
1228  const T21 v21_;
1229  const T22 v22_;
1230  const T23 v23_;
1231  const T24 v24_;
1232  const T25 v25_;
1233  const T26 v26_;
1234  const T27 v27_;
1235  const T28 v28_;
1236};
1237
1238template <typename T1, typename T2, typename T3, typename T4, typename T5,
1239    typename T6, typename T7, typename T8, typename T9, typename T10,
1240    typename T11, typename T12, typename T13, typename T14, typename T15,
1241    typename T16, typename T17, typename T18, typename T19, typename T20,
1242    typename T21, typename T22, typename T23, typename T24, typename T25,
1243    typename T26, typename T27, typename T28, typename T29>
1244class ValueArray29 {
1245 public:
1246  ValueArray29(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1247      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1248      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1249      T26 v26, T27 v27, T28 v28, T29 v29) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
1250      v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
1251      v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
1252      v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
1253      v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29) {}
1254
1255  template <typename T>
1256  operator ParamGenerator<T>() const {
1257    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
1258        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
1259        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
1260        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
1261        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
1262        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
1263        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
1264        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
1265        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
1266        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_)};
1267    return ValuesIn(array);
1268  }
1269
1270 private:
1271  // No implementation - assignment is unsupported.
1272  void operator=(const ValueArray29& other);
1273
1274  const T1 v1_;
1275  const T2 v2_;
1276  const T3 v3_;
1277  const T4 v4_;
1278  const T5 v5_;
1279  const T6 v6_;
1280  const T7 v7_;
1281  const T8 v8_;
1282  const T9 v9_;
1283  const T10 v10_;
1284  const T11 v11_;
1285  const T12 v12_;
1286  const T13 v13_;
1287  const T14 v14_;
1288  const T15 v15_;
1289  const T16 v16_;
1290  const T17 v17_;
1291  const T18 v18_;
1292  const T19 v19_;
1293  const T20 v20_;
1294  const T21 v21_;
1295  const T22 v22_;
1296  const T23 v23_;
1297  const T24 v24_;
1298  const T25 v25_;
1299  const T26 v26_;
1300  const T27 v27_;
1301  const T28 v28_;
1302  const T29 v29_;
1303};
1304
1305template <typename T1, typename T2, typename T3, typename T4, typename T5,
1306    typename T6, typename T7, typename T8, typename T9, typename T10,
1307    typename T11, typename T12, typename T13, typename T14, typename T15,
1308    typename T16, typename T17, typename T18, typename T19, typename T20,
1309    typename T21, typename T22, typename T23, typename T24, typename T25,
1310    typename T26, typename T27, typename T28, typename T29, typename T30>
1311class ValueArray30 {
1312 public:
1313  ValueArray30(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1314      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1315      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1316      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) : v1_(v1), v2_(v2), v3_(v3),
1317      v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
1318      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
1319      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
1320      v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
1321      v29_(v29), v30_(v30) {}
1322
1323  template <typename T>
1324  operator ParamGenerator<T>() const {
1325    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
1326        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
1327        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
1328        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
1329        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
1330        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
1331        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
1332        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
1333        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
1334        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
1335        static_cast<T>(v30_)};
1336    return ValuesIn(array);
1337  }
1338
1339 private:
1340  // No implementation - assignment is unsupported.
1341  void operator=(const ValueArray30& other);
1342
1343  const T1 v1_;
1344  const T2 v2_;
1345  const T3 v3_;
1346  const T4 v4_;
1347  const T5 v5_;
1348  const T6 v6_;
1349  const T7 v7_;
1350  const T8 v8_;
1351  const T9 v9_;
1352  const T10 v10_;
1353  const T11 v11_;
1354  const T12 v12_;
1355  const T13 v13_;
1356  const T14 v14_;
1357  const T15 v15_;
1358  const T16 v16_;
1359  const T17 v17_;
1360  const T18 v18_;
1361  const T19 v19_;
1362  const T20 v20_;
1363  const T21 v21_;
1364  const T22 v22_;
1365  const T23 v23_;
1366  const T24 v24_;
1367  const T25 v25_;
1368  const T26 v26_;
1369  const T27 v27_;
1370  const T28 v28_;
1371  const T29 v29_;
1372  const T30 v30_;
1373};
1374
1375template <typename T1, typename T2, typename T3, typename T4, typename T5,
1376    typename T6, typename T7, typename T8, typename T9, typename T10,
1377    typename T11, typename T12, typename T13, typename T14, typename T15,
1378    typename T16, typename T17, typename T18, typename T19, typename T20,
1379    typename T21, typename T22, typename T23, typename T24, typename T25,
1380    typename T26, typename T27, typename T28, typename T29, typename T30,
1381    typename T31>
1382class ValueArray31 {
1383 public:
1384  ValueArray31(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1385      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1386      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1387      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) : v1_(v1), v2_(v2),
1388      v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
1389      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
1390      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
1391      v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
1392      v29_(v29), v30_(v30), v31_(v31) {}
1393
1394  template <typename T>
1395  operator ParamGenerator<T>() const {
1396    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
1397        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
1398        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
1399        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
1400        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
1401        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
1402        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
1403        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
1404        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
1405        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
1406        static_cast<T>(v30_), static_cast<T>(v31_)};
1407    return ValuesIn(array);
1408  }
1409
1410 private:
1411  // No implementation - assignment is unsupported.
1412  void operator=(const ValueArray31& other);
1413
1414  const T1 v1_;
1415  const T2 v2_;
1416  const T3 v3_;
1417  const T4 v4_;
1418  const T5 v5_;
1419  const T6 v6_;
1420  const T7 v7_;
1421  const T8 v8_;
1422  const T9 v9_;
1423  const T10 v10_;
1424  const T11 v11_;
1425  const T12 v12_;
1426  const T13 v13_;
1427  const T14 v14_;
1428  const T15 v15_;
1429  const T16 v16_;
1430  const T17 v17_;
1431  const T18 v18_;
1432  const T19 v19_;
1433  const T20 v20_;
1434  const T21 v21_;
1435  const T22 v22_;
1436  const T23 v23_;
1437  const T24 v24_;
1438  const T25 v25_;
1439  const T26 v26_;
1440  const T27 v27_;
1441  const T28 v28_;
1442  const T29 v29_;
1443  const T30 v30_;
1444  const T31 v31_;
1445};
1446
1447template <typename T1, typename T2, typename T3, typename T4, typename T5,
1448    typename T6, typename T7, typename T8, typename T9, typename T10,
1449    typename T11, typename T12, typename T13, typename T14, typename T15,
1450    typename T16, typename T17, typename T18, typename T19, typename T20,
1451    typename T21, typename T22, typename T23, typename T24, typename T25,
1452    typename T26, typename T27, typename T28, typename T29, typename T30,
1453    typename T31, typename T32>
1454class ValueArray32 {
1455 public:
1456  ValueArray32(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1457      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1458      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1459      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) : v1_(v1),
1460      v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
1461      v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
1462      v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
1463      v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
1464      v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32) {}
1465
1466  template <typename T>
1467  operator ParamGenerator<T>() const {
1468    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
1469        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
1470        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
1471        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
1472        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
1473        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
1474        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
1475        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
1476        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
1477        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
1478        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_)};
1479    return ValuesIn(array);
1480  }
1481
1482 private:
1483  // No implementation - assignment is unsupported.
1484  void operator=(const ValueArray32& other);
1485
1486  const T1 v1_;
1487  const T2 v2_;
1488  const T3 v3_;
1489  const T4 v4_;
1490  const T5 v5_;
1491  const T6 v6_;
1492  const T7 v7_;
1493  const T8 v8_;
1494  const T9 v9_;
1495  const T10 v10_;
1496  const T11 v11_;
1497  const T12 v12_;
1498  const T13 v13_;
1499  const T14 v14_;
1500  const T15 v15_;
1501  const T16 v16_;
1502  const T17 v17_;
1503  const T18 v18_;
1504  const T19 v19_;
1505  const T20 v20_;
1506  const T21 v21_;
1507  const T22 v22_;
1508  const T23 v23_;
1509  const T24 v24_;
1510  const T25 v25_;
1511  const T26 v26_;
1512  const T27 v27_;
1513  const T28 v28_;
1514  const T29 v29_;
1515  const T30 v30_;
1516  const T31 v31_;
1517  const T32 v32_;
1518};
1519
1520template <typename T1, typename T2, typename T3, typename T4, typename T5,
1521    typename T6, typename T7, typename T8, typename T9, typename T10,
1522    typename T11, typename T12, typename T13, typename T14, typename T15,
1523    typename T16, typename T17, typename T18, typename T19, typename T20,
1524    typename T21, typename T22, typename T23, typename T24, typename T25,
1525    typename T26, typename T27, typename T28, typename T29, typename T30,
1526    typename T31, typename T32, typename T33>
1527class ValueArray33 {
1528 public:
1529  ValueArray33(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1530      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1531      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1532      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32,
1533      T33 v33) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
1534      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
1535      v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
1536      v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
1537      v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
1538      v33_(v33) {}
1539
1540  template <typename T>
1541  operator ParamGenerator<T>() const {
1542    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
1543        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
1544        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
1545        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
1546        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
1547        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
1548        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
1549        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
1550        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
1551        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
1552        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
1553        static_cast<T>(v33_)};
1554    return ValuesIn(array);
1555  }
1556
1557 private:
1558  // No implementation - assignment is unsupported.
1559  void operator=(const ValueArray33& other);
1560
1561  const T1 v1_;
1562  const T2 v2_;
1563  const T3 v3_;
1564  const T4 v4_;
1565  const T5 v5_;
1566  const T6 v6_;
1567  const T7 v7_;
1568  const T8 v8_;
1569  const T9 v9_;
1570  const T10 v10_;
1571  const T11 v11_;
1572  const T12 v12_;
1573  const T13 v13_;
1574  const T14 v14_;
1575  const T15 v15_;
1576  const T16 v16_;
1577  const T17 v17_;
1578  const T18 v18_;
1579  const T19 v19_;
1580  const T20 v20_;
1581  const T21 v21_;
1582  const T22 v22_;
1583  const T23 v23_;
1584  const T24 v24_;
1585  const T25 v25_;
1586  const T26 v26_;
1587  const T27 v27_;
1588  const T28 v28_;
1589  const T29 v29_;
1590  const T30 v30_;
1591  const T31 v31_;
1592  const T32 v32_;
1593  const T33 v33_;
1594};
1595
1596template <typename T1, typename T2, typename T3, typename T4, typename T5,
1597    typename T6, typename T7, typename T8, typename T9, typename T10,
1598    typename T11, typename T12, typename T13, typename T14, typename T15,
1599    typename T16, typename T17, typename T18, typename T19, typename T20,
1600    typename T21, typename T22, typename T23, typename T24, typename T25,
1601    typename T26, typename T27, typename T28, typename T29, typename T30,
1602    typename T31, typename T32, typename T33, typename T34>
1603class ValueArray34 {
1604 public:
1605  ValueArray34(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1606      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1607      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1608      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
1609      T34 v34) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
1610      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
1611      v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
1612      v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
1613      v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
1614      v33_(v33), v34_(v34) {}
1615
1616  template <typename T>
1617  operator ParamGenerator<T>() const {
1618    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
1619        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
1620        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
1621        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
1622        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
1623        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
1624        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
1625        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
1626        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
1627        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
1628        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
1629        static_cast<T>(v33_), static_cast<T>(v34_)};
1630    return ValuesIn(array);
1631  }
1632
1633 private:
1634  // No implementation - assignment is unsupported.
1635  void operator=(const ValueArray34& other);
1636
1637  const T1 v1_;
1638  const T2 v2_;
1639  const T3 v3_;
1640  const T4 v4_;
1641  const T5 v5_;
1642  const T6 v6_;
1643  const T7 v7_;
1644  const T8 v8_;
1645  const T9 v9_;
1646  const T10 v10_;
1647  const T11 v11_;
1648  const T12 v12_;
1649  const T13 v13_;
1650  const T14 v14_;
1651  const T15 v15_;
1652  const T16 v16_;
1653  const T17 v17_;
1654  const T18 v18_;
1655  const T19 v19_;
1656  const T20 v20_;
1657  const T21 v21_;
1658  const T22 v22_;
1659  const T23 v23_;
1660  const T24 v24_;
1661  const T25 v25_;
1662  const T26 v26_;
1663  const T27 v27_;
1664  const T28 v28_;
1665  const T29 v29_;
1666  const T30 v30_;
1667  const T31 v31_;
1668  const T32 v32_;
1669  const T33 v33_;
1670  const T34 v34_;
1671};
1672
1673template <typename T1, typename T2, typename T3, typename T4, typename T5,
1674    typename T6, typename T7, typename T8, typename T9, typename T10,
1675    typename T11, typename T12, typename T13, typename T14, typename T15,
1676    typename T16, typename T17, typename T18, typename T19, typename T20,
1677    typename T21, typename T22, typename T23, typename T24, typename T25,
1678    typename T26, typename T27, typename T28, typename T29, typename T30,
1679    typename T31, typename T32, typename T33, typename T34, typename T35>
1680class ValueArray35 {
1681 public:
1682  ValueArray35(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1683      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1684      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1685      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
1686      T34 v34, T35 v35) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
1687      v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
1688      v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
1689      v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
1690      v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31),
1691      v32_(v32), v33_(v33), v34_(v34), v35_(v35) {}
1692
1693  template <typename T>
1694  operator ParamGenerator<T>() const {
1695    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
1696        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
1697        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
1698        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
1699        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
1700        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
1701        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
1702        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
1703        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
1704        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
1705        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
1706        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_)};
1707    return ValuesIn(array);
1708  }
1709
1710 private:
1711  // No implementation - assignment is unsupported.
1712  void operator=(const ValueArray35& other);
1713
1714  const T1 v1_;
1715  const T2 v2_;
1716  const T3 v3_;
1717  const T4 v4_;
1718  const T5 v5_;
1719  const T6 v6_;
1720  const T7 v7_;
1721  const T8 v8_;
1722  const T9 v9_;
1723  const T10 v10_;
1724  const T11 v11_;
1725  const T12 v12_;
1726  const T13 v13_;
1727  const T14 v14_;
1728  const T15 v15_;
1729  const T16 v16_;
1730  const T17 v17_;
1731  const T18 v18_;
1732  const T19 v19_;
1733  const T20 v20_;
1734  const T21 v21_;
1735  const T22 v22_;
1736  const T23 v23_;
1737  const T24 v24_;
1738  const T25 v25_;
1739  const T26 v26_;
1740  const T27 v27_;
1741  const T28 v28_;
1742  const T29 v29_;
1743  const T30 v30_;
1744  const T31 v31_;
1745  const T32 v32_;
1746  const T33 v33_;
1747  const T34 v34_;
1748  const T35 v35_;
1749};
1750
1751template <typename T1, typename T2, typename T3, typename T4, typename T5,
1752    typename T6, typename T7, typename T8, typename T9, typename T10,
1753    typename T11, typename T12, typename T13, typename T14, typename T15,
1754    typename T16, typename T17, typename T18, typename T19, typename T20,
1755    typename T21, typename T22, typename T23, typename T24, typename T25,
1756    typename T26, typename T27, typename T28, typename T29, typename T30,
1757    typename T31, typename T32, typename T33, typename T34, typename T35,
1758    typename T36>
1759class ValueArray36 {
1760 public:
1761  ValueArray36(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1762      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1763      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1764      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
1765      T34 v34, T35 v35, T36 v36) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
1766      v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
1767      v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
1768      v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
1769      v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30),
1770      v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36) {}
1771
1772  template <typename T>
1773  operator ParamGenerator<T>() const {
1774    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
1775        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
1776        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
1777        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
1778        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
1779        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
1780        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
1781        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
1782        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
1783        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
1784        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
1785        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
1786        static_cast<T>(v36_)};
1787    return ValuesIn(array);
1788  }
1789
1790 private:
1791  // No implementation - assignment is unsupported.
1792  void operator=(const ValueArray36& other);
1793
1794  const T1 v1_;
1795  const T2 v2_;
1796  const T3 v3_;
1797  const T4 v4_;
1798  const T5 v5_;
1799  const T6 v6_;
1800  const T7 v7_;
1801  const T8 v8_;
1802  const T9 v9_;
1803  const T10 v10_;
1804  const T11 v11_;
1805  const T12 v12_;
1806  const T13 v13_;
1807  const T14 v14_;
1808  const T15 v15_;
1809  const T16 v16_;
1810  const T17 v17_;
1811  const T18 v18_;
1812  const T19 v19_;
1813  const T20 v20_;
1814  const T21 v21_;
1815  const T22 v22_;
1816  const T23 v23_;
1817  const T24 v24_;
1818  const T25 v25_;
1819  const T26 v26_;
1820  const T27 v27_;
1821  const T28 v28_;
1822  const T29 v29_;
1823  const T30 v30_;
1824  const T31 v31_;
1825  const T32 v32_;
1826  const T33 v33_;
1827  const T34 v34_;
1828  const T35 v35_;
1829  const T36 v36_;
1830};
1831
1832template <typename T1, typename T2, typename T3, typename T4, typename T5,
1833    typename T6, typename T7, typename T8, typename T9, typename T10,
1834    typename T11, typename T12, typename T13, typename T14, typename T15,
1835    typename T16, typename T17, typename T18, typename T19, typename T20,
1836    typename T21, typename T22, typename T23, typename T24, typename T25,
1837    typename T26, typename T27, typename T28, typename T29, typename T30,
1838    typename T31, typename T32, typename T33, typename T34, typename T35,
1839    typename T36, typename T37>
1840class ValueArray37 {
1841 public:
1842  ValueArray37(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1843      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1844      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1845      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
1846      T34 v34, T35 v35, T36 v36, T37 v37) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
1847      v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
1848      v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
1849      v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
1850      v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29),
1851      v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35),
1852      v36_(v36), v37_(v37) {}
1853
1854  template <typename T>
1855  operator ParamGenerator<T>() const {
1856    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
1857        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
1858        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
1859        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
1860        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
1861        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
1862        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
1863        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
1864        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
1865        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
1866        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
1867        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
1868        static_cast<T>(v36_), static_cast<T>(v37_)};
1869    return ValuesIn(array);
1870  }
1871
1872 private:
1873  // No implementation - assignment is unsupported.
1874  void operator=(const ValueArray37& other);
1875
1876  const T1 v1_;
1877  const T2 v2_;
1878  const T3 v3_;
1879  const T4 v4_;
1880  const T5 v5_;
1881  const T6 v6_;
1882  const T7 v7_;
1883  const T8 v8_;
1884  const T9 v9_;
1885  const T10 v10_;
1886  const T11 v11_;
1887  const T12 v12_;
1888  const T13 v13_;
1889  const T14 v14_;
1890  const T15 v15_;
1891  const T16 v16_;
1892  const T17 v17_;
1893  const T18 v18_;
1894  const T19 v19_;
1895  const T20 v20_;
1896  const T21 v21_;
1897  const T22 v22_;
1898  const T23 v23_;
1899  const T24 v24_;
1900  const T25 v25_;
1901  const T26 v26_;
1902  const T27 v27_;
1903  const T28 v28_;
1904  const T29 v29_;
1905  const T30 v30_;
1906  const T31 v31_;
1907  const T32 v32_;
1908  const T33 v33_;
1909  const T34 v34_;
1910  const T35 v35_;
1911  const T36 v36_;
1912  const T37 v37_;
1913};
1914
1915template <typename T1, typename T2, typename T3, typename T4, typename T5,
1916    typename T6, typename T7, typename T8, typename T9, typename T10,
1917    typename T11, typename T12, typename T13, typename T14, typename T15,
1918    typename T16, typename T17, typename T18, typename T19, typename T20,
1919    typename T21, typename T22, typename T23, typename T24, typename T25,
1920    typename T26, typename T27, typename T28, typename T29, typename T30,
1921    typename T31, typename T32, typename T33, typename T34, typename T35,
1922    typename T36, typename T37, typename T38>
1923class ValueArray38 {
1924 public:
1925  ValueArray38(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
1926      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
1927      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
1928      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
1929      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) : v1_(v1), v2_(v2), v3_(v3),
1930      v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
1931      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
1932      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
1933      v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
1934      v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
1935      v35_(v35), v36_(v36), v37_(v37), v38_(v38) {}
1936
1937  template <typename T>
1938  operator ParamGenerator<T>() const {
1939    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
1940        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
1941        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
1942        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
1943        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
1944        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
1945        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
1946        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
1947        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
1948        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
1949        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
1950        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
1951        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_)};
1952    return ValuesIn(array);
1953  }
1954
1955 private:
1956  // No implementation - assignment is unsupported.
1957  void operator=(const ValueArray38& other);
1958
1959  const T1 v1_;
1960  const T2 v2_;
1961  const T3 v3_;
1962  const T4 v4_;
1963  const T5 v5_;
1964  const T6 v6_;
1965  const T7 v7_;
1966  const T8 v8_;
1967  const T9 v9_;
1968  const T10 v10_;
1969  const T11 v11_;
1970  const T12 v12_;
1971  const T13 v13_;
1972  const T14 v14_;
1973  const T15 v15_;
1974  const T16 v16_;
1975  const T17 v17_;
1976  const T18 v18_;
1977  const T19 v19_;
1978  const T20 v20_;
1979  const T21 v21_;
1980  const T22 v22_;
1981  const T23 v23_;
1982  const T24 v24_;
1983  const T25 v25_;
1984  const T26 v26_;
1985  const T27 v27_;
1986  const T28 v28_;
1987  const T29 v29_;
1988  const T30 v30_;
1989  const T31 v31_;
1990  const T32 v32_;
1991  const T33 v33_;
1992  const T34 v34_;
1993  const T35 v35_;
1994  const T36 v36_;
1995  const T37 v37_;
1996  const T38 v38_;
1997};
1998
1999template <typename T1, typename T2, typename T3, typename T4, typename T5,
2000    typename T6, typename T7, typename T8, typename T9, typename T10,
2001    typename T11, typename T12, typename T13, typename T14, typename T15,
2002    typename T16, typename T17, typename T18, typename T19, typename T20,
2003    typename T21, typename T22, typename T23, typename T24, typename T25,
2004    typename T26, typename T27, typename T28, typename T29, typename T30,
2005    typename T31, typename T32, typename T33, typename T34, typename T35,
2006    typename T36, typename T37, typename T38, typename T39>
2007class ValueArray39 {
2008 public:
2009  ValueArray39(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2010      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2011      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2012      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2013      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) : v1_(v1), v2_(v2),
2014      v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
2015      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
2016      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
2017      v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
2018      v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
2019      v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39) {}
2020
2021  template <typename T>
2022  operator ParamGenerator<T>() const {
2023    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
2024        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
2025        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
2026        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
2027        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
2028        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
2029        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
2030        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
2031        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
2032        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
2033        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
2034        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
2035        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
2036        static_cast<T>(v39_)};
2037    return ValuesIn(array);
2038  }
2039
2040 private:
2041  // No implementation - assignment is unsupported.
2042  void operator=(const ValueArray39& other);
2043
2044  const T1 v1_;
2045  const T2 v2_;
2046  const T3 v3_;
2047  const T4 v4_;
2048  const T5 v5_;
2049  const T6 v6_;
2050  const T7 v7_;
2051  const T8 v8_;
2052  const T9 v9_;
2053  const T10 v10_;
2054  const T11 v11_;
2055  const T12 v12_;
2056  const T13 v13_;
2057  const T14 v14_;
2058  const T15 v15_;
2059  const T16 v16_;
2060  const T17 v17_;
2061  const T18 v18_;
2062  const T19 v19_;
2063  const T20 v20_;
2064  const T21 v21_;
2065  const T22 v22_;
2066  const T23 v23_;
2067  const T24 v24_;
2068  const T25 v25_;
2069  const T26 v26_;
2070  const T27 v27_;
2071  const T28 v28_;
2072  const T29 v29_;
2073  const T30 v30_;
2074  const T31 v31_;
2075  const T32 v32_;
2076  const T33 v33_;
2077  const T34 v34_;
2078  const T35 v35_;
2079  const T36 v36_;
2080  const T37 v37_;
2081  const T38 v38_;
2082  const T39 v39_;
2083};
2084
2085template <typename T1, typename T2, typename T3, typename T4, typename T5,
2086    typename T6, typename T7, typename T8, typename T9, typename T10,
2087    typename T11, typename T12, typename T13, typename T14, typename T15,
2088    typename T16, typename T17, typename T18, typename T19, typename T20,
2089    typename T21, typename T22, typename T23, typename T24, typename T25,
2090    typename T26, typename T27, typename T28, typename T29, typename T30,
2091    typename T31, typename T32, typename T33, typename T34, typename T35,
2092    typename T36, typename T37, typename T38, typename T39, typename T40>
2093class ValueArray40 {
2094 public:
2095  ValueArray40(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2096      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2097      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2098      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2099      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) : v1_(v1),
2100      v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
2101      v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
2102      v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
2103      v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
2104      v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33),
2105      v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39),
2106      v40_(v40) {}
2107
2108  template <typename T>
2109  operator ParamGenerator<T>() const {
2110    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
2111        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
2112        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
2113        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
2114        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
2115        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
2116        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
2117        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
2118        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
2119        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
2120        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
2121        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
2122        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
2123        static_cast<T>(v39_), static_cast<T>(v40_)};
2124    return ValuesIn(array);
2125  }
2126
2127 private:
2128  // No implementation - assignment is unsupported.
2129  void operator=(const ValueArray40& other);
2130
2131  const T1 v1_;
2132  const T2 v2_;
2133  const T3 v3_;
2134  const T4 v4_;
2135  const T5 v5_;
2136  const T6 v6_;
2137  const T7 v7_;
2138  const T8 v8_;
2139  const T9 v9_;
2140  const T10 v10_;
2141  const T11 v11_;
2142  const T12 v12_;
2143  const T13 v13_;
2144  const T14 v14_;
2145  const T15 v15_;
2146  const T16 v16_;
2147  const T17 v17_;
2148  const T18 v18_;
2149  const T19 v19_;
2150  const T20 v20_;
2151  const T21 v21_;
2152  const T22 v22_;
2153  const T23 v23_;
2154  const T24 v24_;
2155  const T25 v25_;
2156  const T26 v26_;
2157  const T27 v27_;
2158  const T28 v28_;
2159  const T29 v29_;
2160  const T30 v30_;
2161  const T31 v31_;
2162  const T32 v32_;
2163  const T33 v33_;
2164  const T34 v34_;
2165  const T35 v35_;
2166  const T36 v36_;
2167  const T37 v37_;
2168  const T38 v38_;
2169  const T39 v39_;
2170  const T40 v40_;
2171};
2172
2173template <typename T1, typename T2, typename T3, typename T4, typename T5,
2174    typename T6, typename T7, typename T8, typename T9, typename T10,
2175    typename T11, typename T12, typename T13, typename T14, typename T15,
2176    typename T16, typename T17, typename T18, typename T19, typename T20,
2177    typename T21, typename T22, typename T23, typename T24, typename T25,
2178    typename T26, typename T27, typename T28, typename T29, typename T30,
2179    typename T31, typename T32, typename T33, typename T34, typename T35,
2180    typename T36, typename T37, typename T38, typename T39, typename T40,
2181    typename T41>
2182class ValueArray41 {
2183 public:
2184  ValueArray41(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2185      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2186      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2187      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2188      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40,
2189      T41 v41) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
2190      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
2191      v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
2192      v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
2193      v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
2194      v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
2195      v39_(v39), v40_(v40), v41_(v41) {}
2196
2197  template <typename T>
2198  operator ParamGenerator<T>() const {
2199    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
2200        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
2201        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
2202        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
2203        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
2204        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
2205        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
2206        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
2207        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
2208        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
2209        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
2210        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
2211        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
2212        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_)};
2213    return ValuesIn(array);
2214  }
2215
2216 private:
2217  // No implementation - assignment is unsupported.
2218  void operator=(const ValueArray41& other);
2219
2220  const T1 v1_;
2221  const T2 v2_;
2222  const T3 v3_;
2223  const T4 v4_;
2224  const T5 v5_;
2225  const T6 v6_;
2226  const T7 v7_;
2227  const T8 v8_;
2228  const T9 v9_;
2229  const T10 v10_;
2230  const T11 v11_;
2231  const T12 v12_;
2232  const T13 v13_;
2233  const T14 v14_;
2234  const T15 v15_;
2235  const T16 v16_;
2236  const T17 v17_;
2237  const T18 v18_;
2238  const T19 v19_;
2239  const T20 v20_;
2240  const T21 v21_;
2241  const T22 v22_;
2242  const T23 v23_;
2243  const T24 v24_;
2244  const T25 v25_;
2245  const T26 v26_;
2246  const T27 v27_;
2247  const T28 v28_;
2248  const T29 v29_;
2249  const T30 v30_;
2250  const T31 v31_;
2251  const T32 v32_;
2252  const T33 v33_;
2253  const T34 v34_;
2254  const T35 v35_;
2255  const T36 v36_;
2256  const T37 v37_;
2257  const T38 v38_;
2258  const T39 v39_;
2259  const T40 v40_;
2260  const T41 v41_;
2261};
2262
2263template <typename T1, typename T2, typename T3, typename T4, typename T5,
2264    typename T6, typename T7, typename T8, typename T9, typename T10,
2265    typename T11, typename T12, typename T13, typename T14, typename T15,
2266    typename T16, typename T17, typename T18, typename T19, typename T20,
2267    typename T21, typename T22, typename T23, typename T24, typename T25,
2268    typename T26, typename T27, typename T28, typename T29, typename T30,
2269    typename T31, typename T32, typename T33, typename T34, typename T35,
2270    typename T36, typename T37, typename T38, typename T39, typename T40,
2271    typename T41, typename T42>
2272class ValueArray42 {
2273 public:
2274  ValueArray42(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2275      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2276      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2277      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2278      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
2279      T42 v42) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
2280      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
2281      v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
2282      v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
2283      v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
2284      v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
2285      v39_(v39), v40_(v40), v41_(v41), v42_(v42) {}
2286
2287  template <typename T>
2288  operator ParamGenerator<T>() const {
2289    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
2290        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
2291        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
2292        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
2293        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
2294        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
2295        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
2296        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
2297        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
2298        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
2299        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
2300        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
2301        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
2302        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
2303        static_cast<T>(v42_)};
2304    return ValuesIn(array);
2305  }
2306
2307 private:
2308  // No implementation - assignment is unsupported.
2309  void operator=(const ValueArray42& other);
2310
2311  const T1 v1_;
2312  const T2 v2_;
2313  const T3 v3_;
2314  const T4 v4_;
2315  const T5 v5_;
2316  const T6 v6_;
2317  const T7 v7_;
2318  const T8 v8_;
2319  const T9 v9_;
2320  const T10 v10_;
2321  const T11 v11_;
2322  const T12 v12_;
2323  const T13 v13_;
2324  const T14 v14_;
2325  const T15 v15_;
2326  const T16 v16_;
2327  const T17 v17_;
2328  const T18 v18_;
2329  const T19 v19_;
2330  const T20 v20_;
2331  const T21 v21_;
2332  const T22 v22_;
2333  const T23 v23_;
2334  const T24 v24_;
2335  const T25 v25_;
2336  const T26 v26_;
2337  const T27 v27_;
2338  const T28 v28_;
2339  const T29 v29_;
2340  const T30 v30_;
2341  const T31 v31_;
2342  const T32 v32_;
2343  const T33 v33_;
2344  const T34 v34_;
2345  const T35 v35_;
2346  const T36 v36_;
2347  const T37 v37_;
2348  const T38 v38_;
2349  const T39 v39_;
2350  const T40 v40_;
2351  const T41 v41_;
2352  const T42 v42_;
2353};
2354
2355template <typename T1, typename T2, typename T3, typename T4, typename T5,
2356    typename T6, typename T7, typename T8, typename T9, typename T10,
2357    typename T11, typename T12, typename T13, typename T14, typename T15,
2358    typename T16, typename T17, typename T18, typename T19, typename T20,
2359    typename T21, typename T22, typename T23, typename T24, typename T25,
2360    typename T26, typename T27, typename T28, typename T29, typename T30,
2361    typename T31, typename T32, typename T33, typename T34, typename T35,
2362    typename T36, typename T37, typename T38, typename T39, typename T40,
2363    typename T41, typename T42, typename T43>
2364class ValueArray43 {
2365 public:
2366  ValueArray43(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2367      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2368      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2369      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2370      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
2371      T42 v42, T43 v43) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
2372      v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
2373      v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
2374      v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
2375      v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31),
2376      v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37),
2377      v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43) {}
2378
2379  template <typename T>
2380  operator ParamGenerator<T>() const {
2381    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
2382        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
2383        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
2384        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
2385        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
2386        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
2387        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
2388        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
2389        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
2390        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
2391        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
2392        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
2393        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
2394        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
2395        static_cast<T>(v42_), static_cast<T>(v43_)};
2396    return ValuesIn(array);
2397  }
2398
2399 private:
2400  // No implementation - assignment is unsupported.
2401  void operator=(const ValueArray43& other);
2402
2403  const T1 v1_;
2404  const T2 v2_;
2405  const T3 v3_;
2406  const T4 v4_;
2407  const T5 v5_;
2408  const T6 v6_;
2409  const T7 v7_;
2410  const T8 v8_;
2411  const T9 v9_;
2412  const T10 v10_;
2413  const T11 v11_;
2414  const T12 v12_;
2415  const T13 v13_;
2416  const T14 v14_;
2417  const T15 v15_;
2418  const T16 v16_;
2419  const T17 v17_;
2420  const T18 v18_;
2421  const T19 v19_;
2422  const T20 v20_;
2423  const T21 v21_;
2424  const T22 v22_;
2425  const T23 v23_;
2426  const T24 v24_;
2427  const T25 v25_;
2428  const T26 v26_;
2429  const T27 v27_;
2430  const T28 v28_;
2431  const T29 v29_;
2432  const T30 v30_;
2433  const T31 v31_;
2434  const T32 v32_;
2435  const T33 v33_;
2436  const T34 v34_;
2437  const T35 v35_;
2438  const T36 v36_;
2439  const T37 v37_;
2440  const T38 v38_;
2441  const T39 v39_;
2442  const T40 v40_;
2443  const T41 v41_;
2444  const T42 v42_;
2445  const T43 v43_;
2446};
2447
2448template <typename T1, typename T2, typename T3, typename T4, typename T5,
2449    typename T6, typename T7, typename T8, typename T9, typename T10,
2450    typename T11, typename T12, typename T13, typename T14, typename T15,
2451    typename T16, typename T17, typename T18, typename T19, typename T20,
2452    typename T21, typename T22, typename T23, typename T24, typename T25,
2453    typename T26, typename T27, typename T28, typename T29, typename T30,
2454    typename T31, typename T32, typename T33, typename T34, typename T35,
2455    typename T36, typename T37, typename T38, typename T39, typename T40,
2456    typename T41, typename T42, typename T43, typename T44>
2457class ValueArray44 {
2458 public:
2459  ValueArray44(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2460      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2461      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2462      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2463      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
2464      T42 v42, T43 v43, T44 v44) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
2465      v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
2466      v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
2467      v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
2468      v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30),
2469      v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36),
2470      v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42),
2471      v43_(v43), v44_(v44) {}
2472
2473  template <typename T>
2474  operator ParamGenerator<T>() const {
2475    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
2476        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
2477        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
2478        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
2479        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
2480        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
2481        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
2482        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
2483        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
2484        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
2485        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
2486        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
2487        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
2488        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
2489        static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_)};
2490    return ValuesIn(array);
2491  }
2492
2493 private:
2494  // No implementation - assignment is unsupported.
2495  void operator=(const ValueArray44& other);
2496
2497  const T1 v1_;
2498  const T2 v2_;
2499  const T3 v3_;
2500  const T4 v4_;
2501  const T5 v5_;
2502  const T6 v6_;
2503  const T7 v7_;
2504  const T8 v8_;
2505  const T9 v9_;
2506  const T10 v10_;
2507  const T11 v11_;
2508  const T12 v12_;
2509  const T13 v13_;
2510  const T14 v14_;
2511  const T15 v15_;
2512  const T16 v16_;
2513  const T17 v17_;
2514  const T18 v18_;
2515  const T19 v19_;
2516  const T20 v20_;
2517  const T21 v21_;
2518  const T22 v22_;
2519  const T23 v23_;
2520  const T24 v24_;
2521  const T25 v25_;
2522  const T26 v26_;
2523  const T27 v27_;
2524  const T28 v28_;
2525  const T29 v29_;
2526  const T30 v30_;
2527  const T31 v31_;
2528  const T32 v32_;
2529  const T33 v33_;
2530  const T34 v34_;
2531  const T35 v35_;
2532  const T36 v36_;
2533  const T37 v37_;
2534  const T38 v38_;
2535  const T39 v39_;
2536  const T40 v40_;
2537  const T41 v41_;
2538  const T42 v42_;
2539  const T43 v43_;
2540  const T44 v44_;
2541};
2542
2543template <typename T1, typename T2, typename T3, typename T4, typename T5,
2544    typename T6, typename T7, typename T8, typename T9, typename T10,
2545    typename T11, typename T12, typename T13, typename T14, typename T15,
2546    typename T16, typename T17, typename T18, typename T19, typename T20,
2547    typename T21, typename T22, typename T23, typename T24, typename T25,
2548    typename T26, typename T27, typename T28, typename T29, typename T30,
2549    typename T31, typename T32, typename T33, typename T34, typename T35,
2550    typename T36, typename T37, typename T38, typename T39, typename T40,
2551    typename T41, typename T42, typename T43, typename T44, typename T45>
2552class ValueArray45 {
2553 public:
2554  ValueArray45(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2555      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2556      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2557      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2558      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
2559      T42 v42, T43 v43, T44 v44, T45 v45) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
2560      v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
2561      v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
2562      v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
2563      v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29),
2564      v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35),
2565      v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41),
2566      v42_(v42), v43_(v43), v44_(v44), v45_(v45) {}
2567
2568  template <typename T>
2569  operator ParamGenerator<T>() const {
2570    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
2571        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
2572        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
2573        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
2574        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
2575        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
2576        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
2577        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
2578        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
2579        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
2580        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
2581        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
2582        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
2583        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
2584        static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
2585        static_cast<T>(v45_)};
2586    return ValuesIn(array);
2587  }
2588
2589 private:
2590  // No implementation - assignment is unsupported.
2591  void operator=(const ValueArray45& other);
2592
2593  const T1 v1_;
2594  const T2 v2_;
2595  const T3 v3_;
2596  const T4 v4_;
2597  const T5 v5_;
2598  const T6 v6_;
2599  const T7 v7_;
2600  const T8 v8_;
2601  const T9 v9_;
2602  const T10 v10_;
2603  const T11 v11_;
2604  const T12 v12_;
2605  const T13 v13_;
2606  const T14 v14_;
2607  const T15 v15_;
2608  const T16 v16_;
2609  const T17 v17_;
2610  const T18 v18_;
2611  const T19 v19_;
2612  const T20 v20_;
2613  const T21 v21_;
2614  const T22 v22_;
2615  const T23 v23_;
2616  const T24 v24_;
2617  const T25 v25_;
2618  const T26 v26_;
2619  const T27 v27_;
2620  const T28 v28_;
2621  const T29 v29_;
2622  const T30 v30_;
2623  const T31 v31_;
2624  const T32 v32_;
2625  const T33 v33_;
2626  const T34 v34_;
2627  const T35 v35_;
2628  const T36 v36_;
2629  const T37 v37_;
2630  const T38 v38_;
2631  const T39 v39_;
2632  const T40 v40_;
2633  const T41 v41_;
2634  const T42 v42_;
2635  const T43 v43_;
2636  const T44 v44_;
2637  const T45 v45_;
2638};
2639
2640template <typename T1, typename T2, typename T3, typename T4, typename T5,
2641    typename T6, typename T7, typename T8, typename T9, typename T10,
2642    typename T11, typename T12, typename T13, typename T14, typename T15,
2643    typename T16, typename T17, typename T18, typename T19, typename T20,
2644    typename T21, typename T22, typename T23, typename T24, typename T25,
2645    typename T26, typename T27, typename T28, typename T29, typename T30,
2646    typename T31, typename T32, typename T33, typename T34, typename T35,
2647    typename T36, typename T37, typename T38, typename T39, typename T40,
2648    typename T41, typename T42, typename T43, typename T44, typename T45,
2649    typename T46>
2650class ValueArray46 {
2651 public:
2652  ValueArray46(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2653      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2654      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2655      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2656      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
2657      T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) : v1_(v1), v2_(v2), v3_(v3),
2658      v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
2659      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
2660      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
2661      v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
2662      v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
2663      v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40),
2664      v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46) {}
2665
2666  template <typename T>
2667  operator ParamGenerator<T>() const {
2668    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
2669        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
2670        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
2671        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
2672        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
2673        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
2674        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
2675        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
2676        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
2677        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
2678        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
2679        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
2680        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
2681        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
2682        static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
2683        static_cast<T>(v45_), static_cast<T>(v46_)};
2684    return ValuesIn(array);
2685  }
2686
2687 private:
2688  // No implementation - assignment is unsupported.
2689  void operator=(const ValueArray46& other);
2690
2691  const T1 v1_;
2692  const T2 v2_;
2693  const T3 v3_;
2694  const T4 v4_;
2695  const T5 v5_;
2696  const T6 v6_;
2697  const T7 v7_;
2698  const T8 v8_;
2699  const T9 v9_;
2700  const T10 v10_;
2701  const T11 v11_;
2702  const T12 v12_;
2703  const T13 v13_;
2704  const T14 v14_;
2705  const T15 v15_;
2706  const T16 v16_;
2707  const T17 v17_;
2708  const T18 v18_;
2709  const T19 v19_;
2710  const T20 v20_;
2711  const T21 v21_;
2712  const T22 v22_;
2713  const T23 v23_;
2714  const T24 v24_;
2715  const T25 v25_;
2716  const T26 v26_;
2717  const T27 v27_;
2718  const T28 v28_;
2719  const T29 v29_;
2720  const T30 v30_;
2721  const T31 v31_;
2722  const T32 v32_;
2723  const T33 v33_;
2724  const T34 v34_;
2725  const T35 v35_;
2726  const T36 v36_;
2727  const T37 v37_;
2728  const T38 v38_;
2729  const T39 v39_;
2730  const T40 v40_;
2731  const T41 v41_;
2732  const T42 v42_;
2733  const T43 v43_;
2734  const T44 v44_;
2735  const T45 v45_;
2736  const T46 v46_;
2737};
2738
2739template <typename T1, typename T2, typename T3, typename T4, typename T5,
2740    typename T6, typename T7, typename T8, typename T9, typename T10,
2741    typename T11, typename T12, typename T13, typename T14, typename T15,
2742    typename T16, typename T17, typename T18, typename T19, typename T20,
2743    typename T21, typename T22, typename T23, typename T24, typename T25,
2744    typename T26, typename T27, typename T28, typename T29, typename T30,
2745    typename T31, typename T32, typename T33, typename T34, typename T35,
2746    typename T36, typename T37, typename T38, typename T39, typename T40,
2747    typename T41, typename T42, typename T43, typename T44, typename T45,
2748    typename T46, typename T47>
2749class ValueArray47 {
2750 public:
2751  ValueArray47(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2752      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2753      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2754      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2755      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
2756      T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) : v1_(v1), v2_(v2),
2757      v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
2758      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
2759      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
2760      v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
2761      v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
2762      v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40),
2763      v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46),
2764      v47_(v47) {}
2765
2766  template <typename T>
2767  operator ParamGenerator<T>() const {
2768    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
2769        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
2770        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
2771        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
2772        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
2773        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
2774        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
2775        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
2776        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
2777        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
2778        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
2779        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
2780        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
2781        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
2782        static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
2783        static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_)};
2784    return ValuesIn(array);
2785  }
2786
2787 private:
2788  // No implementation - assignment is unsupported.
2789  void operator=(const ValueArray47& other);
2790
2791  const T1 v1_;
2792  const T2 v2_;
2793  const T3 v3_;
2794  const T4 v4_;
2795  const T5 v5_;
2796  const T6 v6_;
2797  const T7 v7_;
2798  const T8 v8_;
2799  const T9 v9_;
2800  const T10 v10_;
2801  const T11 v11_;
2802  const T12 v12_;
2803  const T13 v13_;
2804  const T14 v14_;
2805  const T15 v15_;
2806  const T16 v16_;
2807  const T17 v17_;
2808  const T18 v18_;
2809  const T19 v19_;
2810  const T20 v20_;
2811  const T21 v21_;
2812  const T22 v22_;
2813  const T23 v23_;
2814  const T24 v24_;
2815  const T25 v25_;
2816  const T26 v26_;
2817  const T27 v27_;
2818  const T28 v28_;
2819  const T29 v29_;
2820  const T30 v30_;
2821  const T31 v31_;
2822  const T32 v32_;
2823  const T33 v33_;
2824  const T34 v34_;
2825  const T35 v35_;
2826  const T36 v36_;
2827  const T37 v37_;
2828  const T38 v38_;
2829  const T39 v39_;
2830  const T40 v40_;
2831  const T41 v41_;
2832  const T42 v42_;
2833  const T43 v43_;
2834  const T44 v44_;
2835  const T45 v45_;
2836  const T46 v46_;
2837  const T47 v47_;
2838};
2839
2840template <typename T1, typename T2, typename T3, typename T4, typename T5,
2841    typename T6, typename T7, typename T8, typename T9, typename T10,
2842    typename T11, typename T12, typename T13, typename T14, typename T15,
2843    typename T16, typename T17, typename T18, typename T19, typename T20,
2844    typename T21, typename T22, typename T23, typename T24, typename T25,
2845    typename T26, typename T27, typename T28, typename T29, typename T30,
2846    typename T31, typename T32, typename T33, typename T34, typename T35,
2847    typename T36, typename T37, typename T38, typename T39, typename T40,
2848    typename T41, typename T42, typename T43, typename T44, typename T45,
2849    typename T46, typename T47, typename T48>
2850class ValueArray48 {
2851 public:
2852  ValueArray48(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2853      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2854      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2855      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
2856      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
2857      T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) : v1_(v1),
2858      v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
2859      v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
2860      v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
2861      v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
2862      v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33),
2863      v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39),
2864      v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45),
2865      v46_(v46), v47_(v47), v48_(v48) {}
2866
2867  template <typename T>
2868  operator ParamGenerator<T>() const {
2869    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
2870        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
2871        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
2872        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
2873        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
2874        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
2875        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
2876