VTK-m  2.2
Tuple.h
Go to the documentation of this file.
1 //============================================================================
2 // Copyright (c) Kitware, Inc.
3 // All rights reserved.
4 // See LICENSE.txt for details.
5 //
6 // This software is distributed WITHOUT ANY WARRANTY; without even
7 // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
8 // PURPOSE. See the above copyright notice for more information.
9 //============================================================================
10 // **** DO NOT EDIT THIS FILE!!! ****
11 // This file is automatically generated by Tuple.h.in
12 
13 #ifndef vtk_m_Tuple_h
14 #define vtk_m_Tuple_h
15 
16 #include <vtkm/Types.h>
17 
19 #include <vtkm/internal/IndexTag.h>
20 
21 
22 
23 namespace vtkm
24 {
25 
34 template <typename... Ts>
35 class Tuple;
36 
41 template <typename TupleType>
42 using TupleSize = std::integral_constant<vtkm::IdComponent, TupleType::Size>;
43 
46 template <typename TupleType>
47 using tuple_size = std::integral_constant<std::size_t, static_cast<std::size_t>(TupleType::Size)>;
48 
49 namespace detail
50 {
51 
52 template <vtkm::IdComponent Index, typename TupleType>
53 struct TupleElementImpl
54 {
55  using type = decltype(TupleType::ElementTypeI(vtkm::internal::IndexTag<Index>{}));
56 };
57 
58 } // namespace detail
59 
62 template <vtkm::IdComponent Index, typename TupleType>
63 using TupleElement = typename detail::TupleElementImpl<Index, TupleType>::type;
64 
67 template <std::size_t Index, typename TupleType>
69 {
71 };
72 
75 template <std::size_t Index, typename TupleType>
77 
80 template <vtkm::IdComponent Index, typename... Ts>
82 #ifndef VTKM_DOXYGEN_ONLY
83  // Breathe (for Sphinx) has problems parsing this declarator id.
84  -> decltype(tuple.template Get<Index>())
85 #endif
86 {
87  return tuple.template Get<Index>();
88 }
89 
92 template <vtkm::IdComponent Index, typename... Ts>
94 #ifndef VTKM_DOXYGEN_ONLY
95  // Breathe (for Sphinx) has problems parsing this declarator id.
96  -> decltype(tuple.template Get<Index>())
97 #endif
98 {
99  return tuple.template Get<Index>();
100 }
101 
104 template <std::size_t Index, typename... Ts>
106  -> decltype(vtkm::Get<static_cast<vtkm::IdComponent>(Index)>(tuple))
107 {
108  return vtkm::Get<static_cast<vtkm::IdComponent>(Index)>(tuple);
109 }
110 
113 template <std::size_t Index, typename... Ts>
115  -> decltype(vtkm::Get<static_cast<vtkm::IdComponent>(Index)>(tuple))
116 {
117  return vtkm::Get<static_cast<vtkm::IdComponent>(Index)>(tuple);
118 }
119 
123 template <typename... Ts>
125 {
126  return vtkm::Tuple<typename std::decay<Ts>::type...>(std::forward<Ts>(args)...);
127 }
128 
132 template <typename... Ts>
133 VTKM_EXEC_CONT auto make_tuple(Ts&&... args) -> decltype(vtkm::MakeTuple(std::forward<Ts>(args)...))
134 {
135  return vtkm::MakeTuple(std::forward<Ts>(args)...);
136 }
137 
139 namespace detail
140 {
141 struct TupleTransformFunctor
142 {
144  template <typename Function, typename... Ts>
145  VTKM_EXEC_CONT auto operator()(Function&& f, Ts&&... args)
146  -> decltype(vtkm::MakeTuple(f(std::forward<Ts>(args))...))
147  {
148  return vtkm::MakeTuple(f(std::forward<Ts>(args))...);
149  }
150 };
151 
152 struct TupleForEachFunctor
153 {
155  template <typename Function, typename... Ts>
156  VTKM_EXEC_CONT void operator()(Function&& f, Ts&&... args)
157  {
158  (void)std::initializer_list<bool>{ (f(std::forward<Ts>(args)), false)... };
159  }
160 };
161 
162 } // namespace detail
164 
174 template <typename... Ts, typename Function, typename... Args>
175 VTKM_EXEC_CONT auto Apply(const vtkm::Tuple<Ts...>& tuple, Function&& f, Args&&... args)
176  -> decltype(tuple.Apply(std::forward<Function>(f), std::forward<Args>(args)...))
177 {
178  return tuple.Apply(std::forward<Function>(f), std::forward<Args>(args)...);
179 }
180 
182 template <typename... Ts, typename Function, typename... Args>
183 VTKM_EXEC_CONT auto Apply(vtkm::Tuple<Ts...>& tuple, Function&& f, Args&&... args)
184  -> decltype(tuple.Apply(std::forward<Function>(f), std::forward<Args>(args)...))
185 {
186  return tuple.Apply(std::forward<Function>(f), std::forward<Args>(args)...);
187 }
188 
192 template <typename... Ts, typename Function>
193 VTKM_EXEC_CONT void ForEach(const vtkm::Tuple<Ts...>& tuple, Function&& f)
194 {
195  return vtkm::Apply(tuple, detail::TupleForEachFunctor{}, std::forward<Function>(f));
196 }
197 
199 template <typename... Ts, typename Function>
200 VTKM_EXEC_CONT void ForEach(vtkm::Tuple<Ts...>& tuple, Function&& f)
201 {
202  return vtkm::Apply(tuple, detail::TupleForEachFunctor{}, std::forward<Function>(f));
203 }
204 
212 template <typename TupleType, typename Function>
213 VTKM_EXEC_CONT auto Transform(const TupleType&& tuple, Function&& f)
214  -> decltype(Apply(tuple, detail::TupleTransformFunctor(), std::forward<Function>(f)))
215 {
216  return Apply(tuple, detail::TupleTransformFunctor(), std::forward<Function>(f));
217 }
218 
219 template <typename TupleType, typename Function>
220 VTKM_EXEC_CONT auto Transform(TupleType&& tuple, Function&& f)
221  -> decltype(Apply(tuple, detail::TupleTransformFunctor(), std::forward<Function>(f)))
222 {
223  return Apply(tuple, detail::TupleTransformFunctor(), std::forward<Function>(f));
224 }
226 
227 template <>
228 class Tuple<>
229 {
230 public:
231  static constexpr vtkm::IdComponent Size = 0;
232 
234  template <typename Function, typename... Args>
235  VTKM_EXEC_CONT auto Apply(Function&& f, Args&&... args)
236  -> decltype(f(std::forward<Args>(args)...))
237  {
238  return f(std::forward<Args>(args)...);
239  }
241  template <typename Function, typename... Args>
242  VTKM_EXEC_CONT auto Apply(Function&& f, Args&&... args) const
243  -> decltype(f(std::forward<Args>(args)...))
244  {
245  return f(std::forward<Args>(args)...);
246  }
247 
249  template <typename Function>
250  VTKM_EXEC_CONT void ForEach(Function&&) const
251  {
252  }
253 
255  template <typename Function>
257  {
258  return vtkm::Tuple<>{};
259  }
260 };
261 
262 // clang-format off
263 
264 template<typename T0>
265 class Tuple<T0>
266 {
267  T0 Value0;
268  static T0 ElementTypeI(vtkm::internal::IndexTag<0>);
269  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>)
270  {
271  return this->Value0;
272  }
273  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>) const
274  {
275  return this->Value0;
276  }
277 
278 
279  // Invalid indices
280  template <vtkm::IdComponent Index>
281  static vtkm::internal::NullType ElementTypeI(vtkm::internal::IndexTag<Index>);
282 
283  template <vtkm::IdComponent, typename>
284  friend struct detail::TupleElementImpl;
285 
286 public:
287  static constexpr vtkm::IdComponent Size = 1;
288  template <vtkm::IdComponent Index>
290 
291  Tuple() = default;
292  Tuple(Tuple&&) = default;
293  Tuple(const Tuple&) = default;
294  ~Tuple() = default;
295  Tuple& operator=(Tuple&&) = default;
296  Tuple& operator=(const Tuple&) = default;
297 
299  template <typename A0>
301  : Value0(std::forward<A0>(a0))
302  {
303  }
304 
305  template <vtkm::IdComponent Index>
306  VTKM_EXEC_CONT auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
307  {
308  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
309  }
310 
311  template <vtkm::IdComponent Index>
312  VTKM_EXEC_CONT auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
313  {
314  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
315  }
316 
318  template <typename Function, typename... Args>
320  auto Apply(Function&& f, Args&&... args)
321  -> decltype(f(std::forward<Args>(args)..., Value0))
322  {
323  return f(std::forward<Args>(args)..., Value0);
324  }
326  template <typename Function, typename... Args>
328  auto Apply(Function&& f, Args&&... args) const
329  -> decltype(f(std::forward<Args>(args)..., Value0))
330  {
331  return f(std::forward<Args>(args)..., Value0);
332  }
333 
335  template <typename Function>
336  VTKM_EXEC_CONT void ForEach(Function&& f)
337  {
338  vtkm::ForEach(*this, std::forward<Function>(f));
339  }
341  template <typename Function>
342  VTKM_EXEC_CONT void ForEach(Function&& f) const
343  {
344  vtkm::ForEach(*this, std::forward<Function>(f));
345  }
346 
348  template <typename Function>
349  VTKM_EXEC_CONT auto Transform(Function&& f)
350  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
351  {
352  return vtkm::Transform(*this, std::forward<Function>(f));
353  }
355  template <typename Function>
356  VTKM_EXEC_CONT auto Transform(Function&& f) const
357  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
358  {
359  return vtkm::Transform(*this, std::forward<Function>(f));
360  }
361 };
362 
363 template<typename T0, typename T1>
364 class Tuple<T0, T1>
365 {
366  T0 Value0;
367  static T0 ElementTypeI(vtkm::internal::IndexTag<0>);
368  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>)
369  {
370  return this->Value0;
371  }
372  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>) const
373  {
374  return this->Value0;
375  }
376 
377  T1 Value1;
378  static T1 ElementTypeI(vtkm::internal::IndexTag<1>);
379  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>)
380  {
381  return this->Value1;
382  }
383  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>) const
384  {
385  return this->Value1;
386  }
387 
388 
389  // Invalid indices
390  template <vtkm::IdComponent Index>
391  static vtkm::internal::NullType ElementTypeI(vtkm::internal::IndexTag<Index>);
392 
393  template <vtkm::IdComponent, typename>
394  friend struct detail::TupleElementImpl;
395 
396 public:
397  static constexpr vtkm::IdComponent Size = 2;
398  template <vtkm::IdComponent Index>
400 
401  Tuple() = default;
402  Tuple(Tuple&&) = default;
403  Tuple(const Tuple&) = default;
404  ~Tuple() = default;
405  Tuple& operator=(Tuple&&) = default;
406  Tuple& operator=(const Tuple&) = default;
407 
409  template <typename A0, typename A1>
410  VTKM_EXEC_CONT Tuple(A0&& a0, A1&& a1)
411  : Value0(std::forward<A0>(a0))
412  , Value1(std::forward<A1>(a1))
413  {
414  }
415 
416  template <vtkm::IdComponent Index>
417  VTKM_EXEC_CONT auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
418  {
419  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
420  }
421 
422  template <vtkm::IdComponent Index>
423  VTKM_EXEC_CONT auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
424  {
425  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
426  }
427 
429  template <typename Function, typename... Args>
431  auto Apply(Function&& f, Args&&... args)
432  -> decltype(f(std::forward<Args>(args)..., Value0, Value1))
433  {
434  return f(std::forward<Args>(args)..., Value0, Value1);
435  }
437  template <typename Function, typename... Args>
439  auto Apply(Function&& f, Args&&... args) const
440  -> decltype(f(std::forward<Args>(args)..., Value0, Value1))
441  {
442  return f(std::forward<Args>(args)..., Value0, Value1);
443  }
444 
446  template <typename Function>
447  VTKM_EXEC_CONT void ForEach(Function&& f)
448  {
449  vtkm::ForEach(*this, std::forward<Function>(f));
450  }
452  template <typename Function>
453  VTKM_EXEC_CONT void ForEach(Function&& f) const
454  {
455  vtkm::ForEach(*this, std::forward<Function>(f));
456  }
457 
459  template <typename Function>
460  VTKM_EXEC_CONT auto Transform(Function&& f)
461  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
462  {
463  return vtkm::Transform(*this, std::forward<Function>(f));
464  }
466  template <typename Function>
467  VTKM_EXEC_CONT auto Transform(Function&& f) const
468  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
469  {
470  return vtkm::Transform(*this, std::forward<Function>(f));
471  }
472 };
473 
474 template<typename T0, typename T1, typename T2>
475 class Tuple<T0, T1, T2>
476 {
477  T0 Value0;
478  static T0 ElementTypeI(vtkm::internal::IndexTag<0>);
479  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>)
480  {
481  return this->Value0;
482  }
483  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>) const
484  {
485  return this->Value0;
486  }
487 
488  T1 Value1;
489  static T1 ElementTypeI(vtkm::internal::IndexTag<1>);
490  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>)
491  {
492  return this->Value1;
493  }
494  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>) const
495  {
496  return this->Value1;
497  }
498 
499  T2 Value2;
500  static T2 ElementTypeI(vtkm::internal::IndexTag<2>);
501  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>)
502  {
503  return this->Value2;
504  }
505  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>) const
506  {
507  return this->Value2;
508  }
509 
510 
511  // Invalid indices
512  template <vtkm::IdComponent Index>
513  static vtkm::internal::NullType ElementTypeI(vtkm::internal::IndexTag<Index>);
514 
515  template <vtkm::IdComponent, typename>
516  friend struct detail::TupleElementImpl;
517 
518 public:
519  static constexpr vtkm::IdComponent Size = 3;
520  template <vtkm::IdComponent Index>
522 
523  Tuple() = default;
524  Tuple(Tuple&&) = default;
525  Tuple(const Tuple&) = default;
526  ~Tuple() = default;
527  Tuple& operator=(Tuple&&) = default;
528  Tuple& operator=(const Tuple&) = default;
529 
531  template <typename A0, typename A1, typename A2>
532  VTKM_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2)
533  : Value0(std::forward<A0>(a0))
534  , Value1(std::forward<A1>(a1))
535  , Value2(std::forward<A2>(a2))
536  {
537  }
538 
539  template <vtkm::IdComponent Index>
540  VTKM_EXEC_CONT auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
541  {
542  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
543  }
544 
545  template <vtkm::IdComponent Index>
546  VTKM_EXEC_CONT auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
547  {
548  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
549  }
550 
552  template <typename Function, typename... Args>
554  auto Apply(Function&& f, Args&&... args)
555  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2))
556  {
557  return f(std::forward<Args>(args)..., Value0, Value1, Value2);
558  }
560  template <typename Function, typename... Args>
562  auto Apply(Function&& f, Args&&... args) const
563  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2))
564  {
565  return f(std::forward<Args>(args)..., Value0, Value1, Value2);
566  }
567 
569  template <typename Function>
570  VTKM_EXEC_CONT void ForEach(Function&& f)
571  {
572  vtkm::ForEach(*this, std::forward<Function>(f));
573  }
575  template <typename Function>
576  VTKM_EXEC_CONT void ForEach(Function&& f) const
577  {
578  vtkm::ForEach(*this, std::forward<Function>(f));
579  }
580 
582  template <typename Function>
583  VTKM_EXEC_CONT auto Transform(Function&& f)
584  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
585  {
586  return vtkm::Transform(*this, std::forward<Function>(f));
587  }
589  template <typename Function>
590  VTKM_EXEC_CONT auto Transform(Function&& f) const
591  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
592  {
593  return vtkm::Transform(*this, std::forward<Function>(f));
594  }
595 };
596 
597 template<typename T0, typename T1, typename T2, typename T3>
598 class Tuple<T0, T1, T2, T3>
599 {
600  T0 Value0;
601  static T0 ElementTypeI(vtkm::internal::IndexTag<0>);
602  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>)
603  {
604  return this->Value0;
605  }
606  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>) const
607  {
608  return this->Value0;
609  }
610 
611  T1 Value1;
612  static T1 ElementTypeI(vtkm::internal::IndexTag<1>);
613  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>)
614  {
615  return this->Value1;
616  }
617  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>) const
618  {
619  return this->Value1;
620  }
621 
622  T2 Value2;
623  static T2 ElementTypeI(vtkm::internal::IndexTag<2>);
624  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>)
625  {
626  return this->Value2;
627  }
628  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>) const
629  {
630  return this->Value2;
631  }
632 
633  T3 Value3;
634  static T3 ElementTypeI(vtkm::internal::IndexTag<3>);
635  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>)
636  {
637  return this->Value3;
638  }
639  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>) const
640  {
641  return this->Value3;
642  }
643 
644 
645  // Invalid indices
646  template <vtkm::IdComponent Index>
647  static vtkm::internal::NullType ElementTypeI(vtkm::internal::IndexTag<Index>);
648 
649  template <vtkm::IdComponent, typename>
650  friend struct detail::TupleElementImpl;
651 
652 public:
653  static constexpr vtkm::IdComponent Size = 4;
654  template <vtkm::IdComponent Index>
656 
657  Tuple() = default;
658  Tuple(Tuple&&) = default;
659  Tuple(const Tuple&) = default;
660  ~Tuple() = default;
661  Tuple& operator=(Tuple&&) = default;
662  Tuple& operator=(const Tuple&) = default;
663 
665  template <typename A0, typename A1, typename A2, typename A3>
666  VTKM_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3)
667  : Value0(std::forward<A0>(a0))
668  , Value1(std::forward<A1>(a1))
669  , Value2(std::forward<A2>(a2))
670  , Value3(std::forward<A3>(a3))
671  {
672  }
673 
674  template <vtkm::IdComponent Index>
675  VTKM_EXEC_CONT auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
676  {
677  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
678  }
679 
680  template <vtkm::IdComponent Index>
681  VTKM_EXEC_CONT auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
682  {
683  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
684  }
685 
687  template <typename Function, typename... Args>
689  auto Apply(Function&& f, Args&&... args)
690  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3))
691  {
692  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3);
693  }
695  template <typename Function, typename... Args>
697  auto Apply(Function&& f, Args&&... args) const
698  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3))
699  {
700  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3);
701  }
702 
704  template <typename Function>
705  VTKM_EXEC_CONT void ForEach(Function&& f)
706  {
707  vtkm::ForEach(*this, std::forward<Function>(f));
708  }
710  template <typename Function>
711  VTKM_EXEC_CONT void ForEach(Function&& f) const
712  {
713  vtkm::ForEach(*this, std::forward<Function>(f));
714  }
715 
717  template <typename Function>
718  VTKM_EXEC_CONT auto Transform(Function&& f)
719  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
720  {
721  return vtkm::Transform(*this, std::forward<Function>(f));
722  }
724  template <typename Function>
725  VTKM_EXEC_CONT auto Transform(Function&& f) const
726  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
727  {
728  return vtkm::Transform(*this, std::forward<Function>(f));
729  }
730 };
731 
732 template<typename T0, typename T1, typename T2, typename T3, typename T4>
733 class Tuple<T0, T1, T2, T3, T4>
734 {
735  T0 Value0;
736  static T0 ElementTypeI(vtkm::internal::IndexTag<0>);
737  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>)
738  {
739  return this->Value0;
740  }
741  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>) const
742  {
743  return this->Value0;
744  }
745 
746  T1 Value1;
747  static T1 ElementTypeI(vtkm::internal::IndexTag<1>);
748  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>)
749  {
750  return this->Value1;
751  }
752  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>) const
753  {
754  return this->Value1;
755  }
756 
757  T2 Value2;
758  static T2 ElementTypeI(vtkm::internal::IndexTag<2>);
759  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>)
760  {
761  return this->Value2;
762  }
763  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>) const
764  {
765  return this->Value2;
766  }
767 
768  T3 Value3;
769  static T3 ElementTypeI(vtkm::internal::IndexTag<3>);
770  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>)
771  {
772  return this->Value3;
773  }
774  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>) const
775  {
776  return this->Value3;
777  }
778 
779  T4 Value4;
780  static T4 ElementTypeI(vtkm::internal::IndexTag<4>);
781  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>)
782  {
783  return this->Value4;
784  }
785  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>) const
786  {
787  return this->Value4;
788  }
789 
790 
791  // Invalid indices
792  template <vtkm::IdComponent Index>
793  static vtkm::internal::NullType ElementTypeI(vtkm::internal::IndexTag<Index>);
794 
795  template <vtkm::IdComponent, typename>
796  friend struct detail::TupleElementImpl;
797 
798 public:
799  static constexpr vtkm::IdComponent Size = 5;
800  template <vtkm::IdComponent Index>
802 
803  Tuple() = default;
804  Tuple(Tuple&&) = default;
805  Tuple(const Tuple&) = default;
806  ~Tuple() = default;
807  Tuple& operator=(Tuple&&) = default;
808  Tuple& operator=(const Tuple&) = default;
809 
811  template <typename A0, typename A1, typename A2, typename A3, typename A4>
812  VTKM_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3, A4&& a4)
813  : Value0(std::forward<A0>(a0))
814  , Value1(std::forward<A1>(a1))
815  , Value2(std::forward<A2>(a2))
816  , Value3(std::forward<A3>(a3))
817  , Value4(std::forward<A4>(a4))
818  {
819  }
820 
821  template <vtkm::IdComponent Index>
822  VTKM_EXEC_CONT auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
823  {
824  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
825  }
826 
827  template <vtkm::IdComponent Index>
828  VTKM_EXEC_CONT auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
829  {
830  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
831  }
832 
834  template <typename Function, typename... Args>
836  auto Apply(Function&& f, Args&&... args)
837  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4))
838  {
839  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4);
840  }
842  template <typename Function, typename... Args>
844  auto Apply(Function&& f, Args&&... args) const
845  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4))
846  {
847  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4);
848  }
849 
851  template <typename Function>
852  VTKM_EXEC_CONT void ForEach(Function&& f)
853  {
854  vtkm::ForEach(*this, std::forward<Function>(f));
855  }
857  template <typename Function>
858  VTKM_EXEC_CONT void ForEach(Function&& f) const
859  {
860  vtkm::ForEach(*this, std::forward<Function>(f));
861  }
862 
864  template <typename Function>
865  VTKM_EXEC_CONT auto Transform(Function&& f)
866  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
867  {
868  return vtkm::Transform(*this, std::forward<Function>(f));
869  }
871  template <typename Function>
872  VTKM_EXEC_CONT auto Transform(Function&& f) const
873  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
874  {
875  return vtkm::Transform(*this, std::forward<Function>(f));
876  }
877 };
878 
879 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
880 class Tuple<T0, T1, T2, T3, T4, T5>
881 {
882  T0 Value0;
883  static T0 ElementTypeI(vtkm::internal::IndexTag<0>);
884  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>)
885  {
886  return this->Value0;
887  }
888  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>) const
889  {
890  return this->Value0;
891  }
892 
893  T1 Value1;
894  static T1 ElementTypeI(vtkm::internal::IndexTag<1>);
895  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>)
896  {
897  return this->Value1;
898  }
899  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>) const
900  {
901  return this->Value1;
902  }
903 
904  T2 Value2;
905  static T2 ElementTypeI(vtkm::internal::IndexTag<2>);
906  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>)
907  {
908  return this->Value2;
909  }
910  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>) const
911  {
912  return this->Value2;
913  }
914 
915  T3 Value3;
916  static T3 ElementTypeI(vtkm::internal::IndexTag<3>);
917  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>)
918  {
919  return this->Value3;
920  }
921  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>) const
922  {
923  return this->Value3;
924  }
925 
926  T4 Value4;
927  static T4 ElementTypeI(vtkm::internal::IndexTag<4>);
928  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>)
929  {
930  return this->Value4;
931  }
932  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>) const
933  {
934  return this->Value4;
935  }
936 
937  T5 Value5;
938  static T5 ElementTypeI(vtkm::internal::IndexTag<5>);
939  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>)
940  {
941  return this->Value5;
942  }
943  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>) const
944  {
945  return this->Value5;
946  }
947 
948 
949  // Invalid indices
950  template <vtkm::IdComponent Index>
951  static vtkm::internal::NullType ElementTypeI(vtkm::internal::IndexTag<Index>);
952 
953  template <vtkm::IdComponent, typename>
954  friend struct detail::TupleElementImpl;
955 
956 public:
957  static constexpr vtkm::IdComponent Size = 6;
958  template <vtkm::IdComponent Index>
960 
961  Tuple() = default;
962  Tuple(Tuple&&) = default;
963  Tuple(const Tuple&) = default;
964  ~Tuple() = default;
965  Tuple& operator=(Tuple&&) = default;
966  Tuple& operator=(const Tuple&) = default;
967 
969  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
970  VTKM_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3, A4&& a4, A5&& a5)
971  : Value0(std::forward<A0>(a0))
972  , Value1(std::forward<A1>(a1))
973  , Value2(std::forward<A2>(a2))
974  , Value3(std::forward<A3>(a3))
975  , Value4(std::forward<A4>(a4))
976  , Value5(std::forward<A5>(a5))
977  {
978  }
979 
980  template <vtkm::IdComponent Index>
981  VTKM_EXEC_CONT auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
982  {
983  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
984  }
985 
986  template <vtkm::IdComponent Index>
987  VTKM_EXEC_CONT auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
988  {
989  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
990  }
991 
993  template <typename Function, typename... Args>
995  auto Apply(Function&& f, Args&&... args)
996  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5))
997  {
998  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5);
999  }
1001  template <typename Function, typename... Args>
1003  auto Apply(Function&& f, Args&&... args) const
1004  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5))
1005  {
1006  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5);
1007  }
1008 
1010  template <typename Function>
1011  VTKM_EXEC_CONT void ForEach(Function&& f)
1012  {
1013  vtkm::ForEach(*this, std::forward<Function>(f));
1014  }
1016  template <typename Function>
1017  VTKM_EXEC_CONT void ForEach(Function&& f) const
1018  {
1019  vtkm::ForEach(*this, std::forward<Function>(f));
1020  }
1021 
1023  template <typename Function>
1024  VTKM_EXEC_CONT auto Transform(Function&& f)
1025  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
1026  {
1027  return vtkm::Transform(*this, std::forward<Function>(f));
1028  }
1030  template <typename Function>
1031  VTKM_EXEC_CONT auto Transform(Function&& f) const
1032  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
1033  {
1034  return vtkm::Transform(*this, std::forward<Function>(f));
1035  }
1036 };
1037 
1038 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
1039 class Tuple<T0, T1, T2, T3, T4, T5, T6>
1040 {
1042  static T0 ElementTypeI(vtkm::internal::IndexTag<0>);
1043  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>)
1044  {
1045  return this->Value0;
1046  }
1047  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>) const
1048  {
1049  return this->Value0;
1050  }
1051 
1053  static T1 ElementTypeI(vtkm::internal::IndexTag<1>);
1054  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>)
1055  {
1056  return this->Value1;
1057  }
1058  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>) const
1059  {
1060  return this->Value1;
1061  }
1062 
1064  static T2 ElementTypeI(vtkm::internal::IndexTag<2>);
1065  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>)
1066  {
1067  return this->Value2;
1068  }
1069  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>) const
1070  {
1071  return this->Value2;
1072  }
1073 
1075  static T3 ElementTypeI(vtkm::internal::IndexTag<3>);
1076  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>)
1077  {
1078  return this->Value3;
1079  }
1080  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>) const
1081  {
1082  return this->Value3;
1083  }
1084 
1086  static T4 ElementTypeI(vtkm::internal::IndexTag<4>);
1087  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>)
1088  {
1089  return this->Value4;
1090  }
1091  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>) const
1092  {
1093  return this->Value4;
1094  }
1095 
1097  static T5 ElementTypeI(vtkm::internal::IndexTag<5>);
1098  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>)
1099  {
1100  return this->Value5;
1101  }
1102  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>) const
1103  {
1104  return this->Value5;
1105  }
1106 
1108  static T6 ElementTypeI(vtkm::internal::IndexTag<6>);
1109  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>)
1110  {
1111  return this->Value6;
1112  }
1113  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>) const
1114  {
1115  return this->Value6;
1116  }
1117 
1118 
1119  // Invalid indices
1120  template <vtkm::IdComponent Index>
1121  static vtkm::internal::NullType ElementTypeI(vtkm::internal::IndexTag<Index>);
1122 
1123  template <vtkm::IdComponent, typename>
1124  friend struct detail::TupleElementImpl;
1125 
1126 public:
1127  static constexpr vtkm::IdComponent Size = 7;
1128  template <vtkm::IdComponent Index>
1130 
1131  Tuple() = default;
1132  Tuple(Tuple&&) = default;
1133  Tuple(const Tuple&) = default;
1134  ~Tuple() = default;
1135  Tuple& operator=(Tuple&&) = default;
1136  Tuple& operator=(const Tuple&) = default;
1137 
1139  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1140  VTKM_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3, A4&& a4, A5&& a5, A6&& a6)
1141  : Value0(std::forward<A0>(a0))
1142  , Value1(std::forward<A1>(a1))
1143  , Value2(std::forward<A2>(a2))
1144  , Value3(std::forward<A3>(a3))
1145  , Value4(std::forward<A4>(a4))
1146  , Value5(std::forward<A5>(a5))
1147  , Value6(std::forward<A6>(a6))
1148  {
1149  }
1150 
1151  template <vtkm::IdComponent Index>
1152  VTKM_EXEC_CONT auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
1153  {
1154  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
1155  }
1156 
1157  template <vtkm::IdComponent Index>
1158  VTKM_EXEC_CONT auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
1159  {
1160  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
1161  }
1162 
1164  template <typename Function, typename... Args>
1166  auto Apply(Function&& f, Args&&... args)
1167  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6))
1168  {
1169  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6);
1170  }
1172  template <typename Function, typename... Args>
1174  auto Apply(Function&& f, Args&&... args) const
1175  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6))
1176  {
1177  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6);
1178  }
1179 
1181  template <typename Function>
1182  VTKM_EXEC_CONT void ForEach(Function&& f)
1183  {
1184  vtkm::ForEach(*this, std::forward<Function>(f));
1185  }
1187  template <typename Function>
1188  VTKM_EXEC_CONT void ForEach(Function&& f) const
1189  {
1190  vtkm::ForEach(*this, std::forward<Function>(f));
1191  }
1192 
1194  template <typename Function>
1195  VTKM_EXEC_CONT auto Transform(Function&& f)
1196  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
1197  {
1198  return vtkm::Transform(*this, std::forward<Function>(f));
1199  }
1201  template <typename Function>
1202  VTKM_EXEC_CONT auto Transform(Function&& f) const
1203  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
1204  {
1205  return vtkm::Transform(*this, std::forward<Function>(f));
1206  }
1207 };
1208 
1209 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
1210 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7>
1211 {
1213  static T0 ElementTypeI(vtkm::internal::IndexTag<0>);
1214  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>)
1215  {
1216  return this->Value0;
1217  }
1218  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>) const
1219  {
1220  return this->Value0;
1221  }
1222 
1224  static T1 ElementTypeI(vtkm::internal::IndexTag<1>);
1225  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>)
1226  {
1227  return this->Value1;
1228  }
1229  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>) const
1230  {
1231  return this->Value1;
1232  }
1233 
1235  static T2 ElementTypeI(vtkm::internal::IndexTag<2>);
1236  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>)
1237  {
1238  return this->Value2;
1239  }
1240  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>) const
1241  {
1242  return this->Value2;
1243  }
1244 
1246  static T3 ElementTypeI(vtkm::internal::IndexTag<3>);
1247  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>)
1248  {
1249  return this->Value3;
1250  }
1251  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>) const
1252  {
1253  return this->Value3;
1254  }
1255 
1257  static T4 ElementTypeI(vtkm::internal::IndexTag<4>);
1258  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>)
1259  {
1260  return this->Value4;
1261  }
1262  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>) const
1263  {
1264  return this->Value4;
1265  }
1266 
1268  static T5 ElementTypeI(vtkm::internal::IndexTag<5>);
1269  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>)
1270  {
1271  return this->Value5;
1272  }
1273  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>) const
1274  {
1275  return this->Value5;
1276  }
1277 
1279  static T6 ElementTypeI(vtkm::internal::IndexTag<6>);
1280  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>)
1281  {
1282  return this->Value6;
1283  }
1284  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>) const
1285  {
1286  return this->Value6;
1287  }
1288 
1290  static T7 ElementTypeI(vtkm::internal::IndexTag<7>);
1291  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>)
1292  {
1293  return this->Value7;
1294  }
1295  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>) const
1296  {
1297  return this->Value7;
1298  }
1299 
1300 
1301  // Invalid indices
1302  template <vtkm::IdComponent Index>
1303  static vtkm::internal::NullType ElementTypeI(vtkm::internal::IndexTag<Index>);
1304 
1305  template <vtkm::IdComponent, typename>
1306  friend struct detail::TupleElementImpl;
1307 
1308 public:
1309  static constexpr vtkm::IdComponent Size = 8;
1310  template <vtkm::IdComponent Index>
1312 
1313  Tuple() = default;
1314  Tuple(Tuple&&) = default;
1315  Tuple(const Tuple&) = default;
1316  ~Tuple() = default;
1317  Tuple& operator=(Tuple&&) = default;
1318  Tuple& operator=(const Tuple&) = default;
1319 
1321  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1322  VTKM_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3, A4&& a4, A5&& a5, A6&& a6, A7&& a7)
1323  : Value0(std::forward<A0>(a0))
1324  , Value1(std::forward<A1>(a1))
1325  , Value2(std::forward<A2>(a2))
1326  , Value3(std::forward<A3>(a3))
1327  , Value4(std::forward<A4>(a4))
1328  , Value5(std::forward<A5>(a5))
1329  , Value6(std::forward<A6>(a6))
1330  , Value7(std::forward<A7>(a7))
1331  {
1332  }
1333 
1334  template <vtkm::IdComponent Index>
1335  VTKM_EXEC_CONT auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
1336  {
1337  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
1338  }
1339 
1340  template <vtkm::IdComponent Index>
1341  VTKM_EXEC_CONT auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
1342  {
1343  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
1344  }
1345 
1347  template <typename Function, typename... Args>
1349  auto Apply(Function&& f, Args&&... args)
1350  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7))
1351  {
1352  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7);
1353  }
1355  template <typename Function, typename... Args>
1357  auto Apply(Function&& f, Args&&... args) const
1358  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7))
1359  {
1360  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7);
1361  }
1362 
1364  template <typename Function>
1365  VTKM_EXEC_CONT void ForEach(Function&& f)
1366  {
1367  vtkm::ForEach(*this, std::forward<Function>(f));
1368  }
1370  template <typename Function>
1371  VTKM_EXEC_CONT void ForEach(Function&& f) const
1372  {
1373  vtkm::ForEach(*this, std::forward<Function>(f));
1374  }
1375 
1377  template <typename Function>
1378  VTKM_EXEC_CONT auto Transform(Function&& f)
1379  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
1380  {
1381  return vtkm::Transform(*this, std::forward<Function>(f));
1382  }
1384  template <typename Function>
1385  VTKM_EXEC_CONT auto Transform(Function&& f) const
1386  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
1387  {
1388  return vtkm::Transform(*this, std::forward<Function>(f));
1389  }
1390 };
1391 
1392 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
1393 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8>
1394 {
1396  static T0 ElementTypeI(vtkm::internal::IndexTag<0>);
1397  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>)
1398  {
1399  return this->Value0;
1400  }
1401  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>) const
1402  {
1403  return this->Value0;
1404  }
1405 
1407  static T1 ElementTypeI(vtkm::internal::IndexTag<1>);
1408  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>)
1409  {
1410  return this->Value1;
1411  }
1412  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>) const
1413  {
1414  return this->Value1;
1415  }
1416 
1418  static T2 ElementTypeI(vtkm::internal::IndexTag<2>);
1419  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>)
1420  {
1421  return this->Value2;
1422  }
1423  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>) const
1424  {
1425  return this->Value2;
1426  }
1427 
1429  static T3 ElementTypeI(vtkm::internal::IndexTag<3>);
1430  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>)
1431  {
1432  return this->Value3;
1433  }
1434  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>) const
1435  {
1436  return this->Value3;
1437  }
1438 
1440  static T4 ElementTypeI(vtkm::internal::IndexTag<4>);
1441  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>)
1442  {
1443  return this->Value4;
1444  }
1445  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>) const
1446  {
1447  return this->Value4;
1448  }
1449 
1451  static T5 ElementTypeI(vtkm::internal::IndexTag<5>);
1452  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>)
1453  {
1454  return this->Value5;
1455  }
1456  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>) const
1457  {
1458  return this->Value5;
1459  }
1460 
1462  static T6 ElementTypeI(vtkm::internal::IndexTag<6>);
1463  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>)
1464  {
1465  return this->Value6;
1466  }
1467  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>) const
1468  {
1469  return this->Value6;
1470  }
1471 
1473  static T7 ElementTypeI(vtkm::internal::IndexTag<7>);
1474  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>)
1475  {
1476  return this->Value7;
1477  }
1478  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>) const
1479  {
1480  return this->Value7;
1481  }
1482 
1484  static T8 ElementTypeI(vtkm::internal::IndexTag<8>);
1485  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>)
1486  {
1487  return this->Value8;
1488  }
1489  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>) const
1490  {
1491  return this->Value8;
1492  }
1493 
1494 
1495  // Invalid indices
1496  template <vtkm::IdComponent Index>
1497  static vtkm::internal::NullType ElementTypeI(vtkm::internal::IndexTag<Index>);
1498 
1499  template <vtkm::IdComponent, typename>
1500  friend struct detail::TupleElementImpl;
1501 
1502 public:
1503  static constexpr vtkm::IdComponent Size = 9;
1504  template <vtkm::IdComponent Index>
1506 
1507  Tuple() = default;
1508  Tuple(Tuple&&) = default;
1509  Tuple(const Tuple&) = default;
1510  ~Tuple() = default;
1511  Tuple& operator=(Tuple&&) = default;
1512  Tuple& operator=(const Tuple&) = default;
1513 
1515  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
1516  VTKM_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3, A4&& a4, A5&& a5, A6&& a6, A7&& a7, A8&& a8)
1517  : Value0(std::forward<A0>(a0))
1518  , Value1(std::forward<A1>(a1))
1519  , Value2(std::forward<A2>(a2))
1520  , Value3(std::forward<A3>(a3))
1521  , Value4(std::forward<A4>(a4))
1522  , Value5(std::forward<A5>(a5))
1523  , Value6(std::forward<A6>(a6))
1524  , Value7(std::forward<A7>(a7))
1525  , Value8(std::forward<A8>(a8))
1526  {
1527  }
1528 
1529  template <vtkm::IdComponent Index>
1530  VTKM_EXEC_CONT auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
1531  {
1532  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
1533  }
1534 
1535  template <vtkm::IdComponent Index>
1536  VTKM_EXEC_CONT auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
1537  {
1538  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
1539  }
1540 
1542  template <typename Function, typename... Args>
1544  auto Apply(Function&& f, Args&&... args)
1545  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8))
1546  {
1547  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8);
1548  }
1550  template <typename Function, typename... Args>
1552  auto Apply(Function&& f, Args&&... args) const
1553  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8))
1554  {
1555  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8);
1556  }
1557 
1559  template <typename Function>
1560  VTKM_EXEC_CONT void ForEach(Function&& f)
1561  {
1562  vtkm::ForEach(*this, std::forward<Function>(f));
1563  }
1565  template <typename Function>
1566  VTKM_EXEC_CONT void ForEach(Function&& f) const
1567  {
1568  vtkm::ForEach(*this, std::forward<Function>(f));
1569  }
1570 
1572  template <typename Function>
1573  VTKM_EXEC_CONT auto Transform(Function&& f)
1574  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
1575  {
1576  return vtkm::Transform(*this, std::forward<Function>(f));
1577  }
1579  template <typename Function>
1580  VTKM_EXEC_CONT auto Transform(Function&& f) const
1581  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
1582  {
1583  return vtkm::Transform(*this, std::forward<Function>(f));
1584  }
1585 };
1586 
1587 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
1588 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>
1589 {
1591  static T0 ElementTypeI(vtkm::internal::IndexTag<0>);
1592  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>)
1593  {
1594  return this->Value0;
1595  }
1596  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>) const
1597  {
1598  return this->Value0;
1599  }
1600 
1602  static T1 ElementTypeI(vtkm::internal::IndexTag<1>);
1603  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>)
1604  {
1605  return this->Value1;
1606  }
1607  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>) const
1608  {
1609  return this->Value1;
1610  }
1611 
1613  static T2 ElementTypeI(vtkm::internal::IndexTag<2>);
1614  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>)
1615  {
1616  return this->Value2;
1617  }
1618  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>) const
1619  {
1620  return this->Value2;
1621  }
1622 
1624  static T3 ElementTypeI(vtkm::internal::IndexTag<3>);
1625  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>)
1626  {
1627  return this->Value3;
1628  }
1629  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>) const
1630  {
1631  return this->Value3;
1632  }
1633 
1635  static T4 ElementTypeI(vtkm::internal::IndexTag<4>);
1636  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>)
1637  {
1638  return this->Value4;
1639  }
1640  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>) const
1641  {
1642  return this->Value4;
1643  }
1644 
1646  static T5 ElementTypeI(vtkm::internal::IndexTag<5>);
1647  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>)
1648  {
1649  return this->Value5;
1650  }
1651  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>) const
1652  {
1653  return this->Value5;
1654  }
1655 
1657  static T6 ElementTypeI(vtkm::internal::IndexTag<6>);
1658  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>)
1659  {
1660  return this->Value6;
1661  }
1662  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>) const
1663  {
1664  return this->Value6;
1665  }
1666 
1668  static T7 ElementTypeI(vtkm::internal::IndexTag<7>);
1669  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>)
1670  {
1671  return this->Value7;
1672  }
1673  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>) const
1674  {
1675  return this->Value7;
1676  }
1677 
1679  static T8 ElementTypeI(vtkm::internal::IndexTag<8>);
1680  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>)
1681  {
1682  return this->Value8;
1683  }
1684  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>) const
1685  {
1686  return this->Value8;
1687  }
1688 
1690  static T9 ElementTypeI(vtkm::internal::IndexTag<9>);
1691  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>)
1692  {
1693  return this->Value9;
1694  }
1695  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>) const
1696  {
1697  return this->Value9;
1698  }
1699 
1700 
1701  // Invalid indices
1702  template <vtkm::IdComponent Index>
1703  static vtkm::internal::NullType ElementTypeI(vtkm::internal::IndexTag<Index>);
1704 
1705  template <vtkm::IdComponent, typename>
1706  friend struct detail::TupleElementImpl;
1707 
1708 public:
1709  static constexpr vtkm::IdComponent Size = 10;
1710  template <vtkm::IdComponent Index>
1712 
1713  Tuple() = default;
1714  Tuple(Tuple&&) = default;
1715  Tuple(const Tuple&) = default;
1716  ~Tuple() = default;
1717  Tuple& operator=(Tuple&&) = default;
1718  Tuple& operator=(const Tuple&) = default;
1719 
1721  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
1722  VTKM_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3, A4&& a4, A5&& a5, A6&& a6, A7&& a7, A8&& a8, A9&& a9)
1723  : Value0(std::forward<A0>(a0))
1724  , Value1(std::forward<A1>(a1))
1725  , Value2(std::forward<A2>(a2))
1726  , Value3(std::forward<A3>(a3))
1727  , Value4(std::forward<A4>(a4))
1728  , Value5(std::forward<A5>(a5))
1729  , Value6(std::forward<A6>(a6))
1730  , Value7(std::forward<A7>(a7))
1731  , Value8(std::forward<A8>(a8))
1732  , Value9(std::forward<A9>(a9))
1733  {
1734  }
1735 
1736  template <vtkm::IdComponent Index>
1737  VTKM_EXEC_CONT auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
1738  {
1739  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
1740  }
1741 
1742  template <vtkm::IdComponent Index>
1743  VTKM_EXEC_CONT auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
1744  {
1745  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
1746  }
1747 
1749  template <typename Function, typename... Args>
1751  auto Apply(Function&& f, Args&&... args)
1752  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9))
1753  {
1754  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9);
1755  }
1757  template <typename Function, typename... Args>
1759  auto Apply(Function&& f, Args&&... args) const
1760  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9))
1761  {
1762  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9);
1763  }
1764 
1766  template <typename Function>
1767  VTKM_EXEC_CONT void ForEach(Function&& f)
1768  {
1769  vtkm::ForEach(*this, std::forward<Function>(f));
1770  }
1772  template <typename Function>
1773  VTKM_EXEC_CONT void ForEach(Function&& f) const
1774  {
1775  vtkm::ForEach(*this, std::forward<Function>(f));
1776  }
1777 
1779  template <typename Function>
1780  VTKM_EXEC_CONT auto Transform(Function&& f)
1781  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
1782  {
1783  return vtkm::Transform(*this, std::forward<Function>(f));
1784  }
1786  template <typename Function>
1787  VTKM_EXEC_CONT auto Transform(Function&& f) const
1788  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
1789  {
1790  return vtkm::Transform(*this, std::forward<Function>(f));
1791  }
1792 };
1793 
1794 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
1795 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
1796 {
1798  static T0 ElementTypeI(vtkm::internal::IndexTag<0>);
1799  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>)
1800  {
1801  return this->Value0;
1802  }
1803  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>) const
1804  {
1805  return this->Value0;
1806  }
1807 
1809  static T1 ElementTypeI(vtkm::internal::IndexTag<1>);
1810  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>)
1811  {
1812  return this->Value1;
1813  }
1814  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>) const
1815  {
1816  return this->Value1;
1817  }
1818 
1820  static T2 ElementTypeI(vtkm::internal::IndexTag<2>);
1821  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>)
1822  {
1823  return this->Value2;
1824  }
1825  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>) const
1826  {
1827  return this->Value2;
1828  }
1829 
1831  static T3 ElementTypeI(vtkm::internal::IndexTag<3>);
1832  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>)
1833  {
1834  return this->Value3;
1835  }
1836  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>) const
1837  {
1838  return this->Value3;
1839  }
1840 
1842  static T4 ElementTypeI(vtkm::internal::IndexTag<4>);
1843  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>)
1844  {
1845  return this->Value4;
1846  }
1847  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>) const
1848  {
1849  return this->Value4;
1850  }
1851 
1853  static T5 ElementTypeI(vtkm::internal::IndexTag<5>);
1854  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>)
1855  {
1856  return this->Value5;
1857  }
1858  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>) const
1859  {
1860  return this->Value5;
1861  }
1862 
1864  static T6 ElementTypeI(vtkm::internal::IndexTag<6>);
1865  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>)
1866  {
1867  return this->Value6;
1868  }
1869  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>) const
1870  {
1871  return this->Value6;
1872  }
1873 
1875  static T7 ElementTypeI(vtkm::internal::IndexTag<7>);
1876  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>)
1877  {
1878  return this->Value7;
1879  }
1880  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>) const
1881  {
1882  return this->Value7;
1883  }
1884 
1886  static T8 ElementTypeI(vtkm::internal::IndexTag<8>);
1887  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>)
1888  {
1889  return this->Value8;
1890  }
1891  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>) const
1892  {
1893  return this->Value8;
1894  }
1895 
1897  static T9 ElementTypeI(vtkm::internal::IndexTag<9>);
1898  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>)
1899  {
1900  return this->Value9;
1901  }
1902  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>) const
1903  {
1904  return this->Value9;
1905  }
1906 
1907  T10 Value10;
1908  static T10 ElementTypeI(vtkm::internal::IndexTag<10>);
1909  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T10>& GetImpl(vtkm::internal::IndexTag<10>)
1910  {
1911  return this->Value10;
1912  }
1913  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T10>& GetImpl(vtkm::internal::IndexTag<10>) const
1914  {
1915  return this->Value10;
1916  }
1917 
1918 
1919  // Invalid indices
1920  template <vtkm::IdComponent Index>
1921  static vtkm::internal::NullType ElementTypeI(vtkm::internal::IndexTag<Index>);
1922 
1923  template <vtkm::IdComponent, typename>
1924  friend struct detail::TupleElementImpl;
1925 
1926 public:
1927  static constexpr vtkm::IdComponent Size = 11;
1928  template <vtkm::IdComponent Index>
1930 
1931  Tuple() = default;
1932  Tuple(Tuple&&) = default;
1933  Tuple(const Tuple&) = default;
1934  ~Tuple() = default;
1935  Tuple& operator=(Tuple&&) = default;
1936  Tuple& operator=(const Tuple&) = default;
1937 
1939  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
1940  VTKM_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3, A4&& a4, A5&& a5, A6&& a6, A7&& a7, A8&& a8, A9&& a9, A10&& a10)
1941  : Value0(std::forward<A0>(a0))
1942  , Value1(std::forward<A1>(a1))
1943  , Value2(std::forward<A2>(a2))
1944  , Value3(std::forward<A3>(a3))
1945  , Value4(std::forward<A4>(a4))
1946  , Value5(std::forward<A5>(a5))
1947  , Value6(std::forward<A6>(a6))
1948  , Value7(std::forward<A7>(a7))
1949  , Value8(std::forward<A8>(a8))
1950  , Value9(std::forward<A9>(a9))
1951  , Value10(std::forward<A10>(a10))
1952  {
1953  }
1954 
1955  template <vtkm::IdComponent Index>
1956  VTKM_EXEC_CONT auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
1957  {
1958  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
1959  }
1960 
1961  template <vtkm::IdComponent Index>
1962  VTKM_EXEC_CONT auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
1963  {
1964  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
1965  }
1966 
1968  template <typename Function, typename... Args>
1970  auto Apply(Function&& f, Args&&... args)
1971  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10))
1972  {
1973  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10);
1974  }
1976  template <typename Function, typename... Args>
1978  auto Apply(Function&& f, Args&&... args) const
1979  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10))
1980  {
1981  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10);
1982  }
1983 
1985  template <typename Function>
1986  VTKM_EXEC_CONT void ForEach(Function&& f)
1987  {
1988  vtkm::ForEach(*this, std::forward<Function>(f));
1989  }
1991  template <typename Function>
1992  VTKM_EXEC_CONT void ForEach(Function&& f) const
1993  {
1994  vtkm::ForEach(*this, std::forward<Function>(f));
1995  }
1996 
1998  template <typename Function>
1999  VTKM_EXEC_CONT auto Transform(Function&& f)
2000  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
2001  {
2002  return vtkm::Transform(*this, std::forward<Function>(f));
2003  }
2005  template <typename Function>
2006  VTKM_EXEC_CONT auto Transform(Function&& f) const
2007  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
2008  {
2009  return vtkm::Transform(*this, std::forward<Function>(f));
2010  }
2011 };
2012 
2013 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>
2014 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>
2015 {
2017  static T0 ElementTypeI(vtkm::internal::IndexTag<0>);
2018  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>)
2019  {
2020  return this->Value0;
2021  }
2022  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>) const
2023  {
2024  return this->Value0;
2025  }
2026 
2028  static T1 ElementTypeI(vtkm::internal::IndexTag<1>);
2029  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>)
2030  {
2031  return this->Value1;
2032  }
2033  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>) const
2034  {
2035  return this->Value1;
2036  }
2037 
2039  static T2 ElementTypeI(vtkm::internal::IndexTag<2>);
2040  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>)
2041  {
2042  return this->Value2;
2043  }
2044  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>) const
2045  {
2046  return this->Value2;
2047  }
2048 
2050  static T3 ElementTypeI(vtkm::internal::IndexTag<3>);
2051  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>)
2052  {
2053  return this->Value3;
2054  }
2055  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>) const
2056  {
2057  return this->Value3;
2058  }
2059 
2061  static T4 ElementTypeI(vtkm::internal::IndexTag<4>);
2062  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>)
2063  {
2064  return this->Value4;
2065  }
2066  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>) const
2067  {
2068  return this->Value4;
2069  }
2070 
2072  static T5 ElementTypeI(vtkm::internal::IndexTag<5>);
2073  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>)
2074  {
2075  return this->Value5;
2076  }
2077  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>) const
2078  {
2079  return this->Value5;
2080  }
2081 
2083  static T6 ElementTypeI(vtkm::internal::IndexTag<6>);
2084  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>)
2085  {
2086  return this->Value6;
2087  }
2088  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>) const
2089  {
2090  return this->Value6;
2091  }
2092 
2094  static T7 ElementTypeI(vtkm::internal::IndexTag<7>);
2095  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>)
2096  {
2097  return this->Value7;
2098  }
2099  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>) const
2100  {
2101  return this->Value7;
2102  }
2103 
2105  static T8 ElementTypeI(vtkm::internal::IndexTag<8>);
2106  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>)
2107  {
2108  return this->Value8;
2109  }
2110  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>) const
2111  {
2112  return this->Value8;
2113  }
2114 
2116  static T9 ElementTypeI(vtkm::internal::IndexTag<9>);
2117  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>)
2118  {
2119  return this->Value9;
2120  }
2121  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>) const
2122  {
2123  return this->Value9;
2124  }
2125 
2126  T10 Value10;
2127  static T10 ElementTypeI(vtkm::internal::IndexTag<10>);
2128  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T10>& GetImpl(vtkm::internal::IndexTag<10>)
2129  {
2130  return this->Value10;
2131  }
2132  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T10>& GetImpl(vtkm::internal::IndexTag<10>) const
2133  {
2134  return this->Value10;
2135  }
2136 
2137  T11 Value11;
2138  static T11 ElementTypeI(vtkm::internal::IndexTag<11>);
2139  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T11>& GetImpl(vtkm::internal::IndexTag<11>)
2140  {
2141  return this->Value11;
2142  }
2143  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T11>& GetImpl(vtkm::internal::IndexTag<11>) const
2144  {
2145  return this->Value11;
2146  }
2147 
2148 
2149  // Invalid indices
2150  template <vtkm::IdComponent Index>
2151  static vtkm::internal::NullType ElementTypeI(vtkm::internal::IndexTag<Index>);
2152 
2153  template <vtkm::IdComponent, typename>
2154  friend struct detail::TupleElementImpl;
2155 
2156 public:
2157  static constexpr vtkm::IdComponent Size = 12;
2158  template <vtkm::IdComponent Index>
2160 
2161  Tuple() = default;
2162  Tuple(Tuple&&) = default;
2163  Tuple(const Tuple&) = default;
2164  ~Tuple() = default;
2165  Tuple& operator=(Tuple&&) = default;
2166  Tuple& operator=(const Tuple&) = default;
2167 
2169  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
2170  VTKM_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3, A4&& a4, A5&& a5, A6&& a6, A7&& a7, A8&& a8, A9&& a9, A10&& a10, A11&& a11)
2171  : Value0(std::forward<A0>(a0))
2172  , Value1(std::forward<A1>(a1))
2173  , Value2(std::forward<A2>(a2))
2174  , Value3(std::forward<A3>(a3))
2175  , Value4(std::forward<A4>(a4))
2176  , Value5(std::forward<A5>(a5))
2177  , Value6(std::forward<A6>(a6))
2178  , Value7(std::forward<A7>(a7))
2179  , Value8(std::forward<A8>(a8))
2180  , Value9(std::forward<A9>(a9))
2181  , Value10(std::forward<A10>(a10))
2182  , Value11(std::forward<A11>(a11))
2183  {
2184  }
2185 
2186  template <vtkm::IdComponent Index>
2187  VTKM_EXEC_CONT auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
2188  {
2189  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
2190  }
2191 
2192  template <vtkm::IdComponent Index>
2193  VTKM_EXEC_CONT auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
2194  {
2195  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
2196  }
2197 
2199  template <typename Function, typename... Args>
2201  auto Apply(Function&& f, Args&&... args)
2202  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11))
2203  {
2204  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11);
2205  }
2207  template <typename Function, typename... Args>
2209  auto Apply(Function&& f, Args&&... args) const
2210  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11))
2211  {
2212  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11);
2213  }
2214 
2216  template <typename Function>
2217  VTKM_EXEC_CONT void ForEach(Function&& f)
2218  {
2219  vtkm::ForEach(*this, std::forward<Function>(f));
2220  }
2222  template <typename Function>
2223  VTKM_EXEC_CONT void ForEach(Function&& f) const
2224  {
2225  vtkm::ForEach(*this, std::forward<Function>(f));
2226  }
2227 
2229  template <typename Function>
2230  VTKM_EXEC_CONT auto Transform(Function&& f)
2231  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
2232  {
2233  return vtkm::Transform(*this, std::forward<Function>(f));
2234  }
2236  template <typename Function>
2237  VTKM_EXEC_CONT auto Transform(Function&& f) const
2238  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
2239  {
2240  return vtkm::Transform(*this, std::forward<Function>(f));
2241  }
2242 };
2243 
2244 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12>
2245 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>
2246 {
2248  static T0 ElementTypeI(vtkm::internal::IndexTag<0>);
2249  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>)
2250  {
2251  return this->Value0;
2252  }
2253  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>) const
2254  {
2255  return this->Value0;
2256  }
2257 
2259  static T1 ElementTypeI(vtkm::internal::IndexTag<1>);
2260  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>)
2261  {
2262  return this->Value1;
2263  }
2264  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>) const
2265  {
2266  return this->Value1;
2267  }
2268 
2270  static T2 ElementTypeI(vtkm::internal::IndexTag<2>);
2271  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>)
2272  {
2273  return this->Value2;
2274  }
2275  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>) const
2276  {
2277  return this->Value2;
2278  }
2279 
2281  static T3 ElementTypeI(vtkm::internal::IndexTag<3>);
2282  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>)
2283  {
2284  return this->Value3;
2285  }
2286  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>) const
2287  {
2288  return this->Value3;
2289  }
2290 
2292  static T4 ElementTypeI(vtkm::internal::IndexTag<4>);
2293  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>)
2294  {
2295  return this->Value4;
2296  }
2297  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>) const
2298  {
2299  return this->Value4;
2300  }
2301 
2303  static T5 ElementTypeI(vtkm::internal::IndexTag<5>);
2304  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>)
2305  {
2306  return this->Value5;
2307  }
2308  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>) const
2309  {
2310  return this->Value5;
2311  }
2312 
2314  static T6 ElementTypeI(vtkm::internal::IndexTag<6>);
2315  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>)
2316  {
2317  return this->Value6;
2318  }
2319  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>) const
2320  {
2321  return this->Value6;
2322  }
2323 
2325  static T7 ElementTypeI(vtkm::internal::IndexTag<7>);
2326  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>)
2327  {
2328  return this->Value7;
2329  }
2330  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>) const
2331  {
2332  return this->Value7;
2333  }
2334 
2336  static T8 ElementTypeI(vtkm::internal::IndexTag<8>);
2337  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>)
2338  {
2339  return this->Value8;
2340  }
2341  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>) const
2342  {
2343  return this->Value8;
2344  }
2345 
2347  static T9 ElementTypeI(vtkm::internal::IndexTag<9>);
2348  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>)
2349  {
2350  return this->Value9;
2351  }
2352  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>) const
2353  {
2354  return this->Value9;
2355  }
2356 
2357  T10 Value10;
2358  static T10 ElementTypeI(vtkm::internal::IndexTag<10>);
2359  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T10>& GetImpl(vtkm::internal::IndexTag<10>)
2360  {
2361  return this->Value10;
2362  }
2363  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T10>& GetImpl(vtkm::internal::IndexTag<10>) const
2364  {
2365  return this->Value10;
2366  }
2367 
2368  T11 Value11;
2369  static T11 ElementTypeI(vtkm::internal::IndexTag<11>);
2370  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T11>& GetImpl(vtkm::internal::IndexTag<11>)
2371  {
2372  return this->Value11;
2373  }
2374  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T11>& GetImpl(vtkm::internal::IndexTag<11>) const
2375  {
2376  return this->Value11;
2377  }
2378 
2379  T12 Value12;
2380  static T12 ElementTypeI(vtkm::internal::IndexTag<12>);
2381  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T12>& GetImpl(vtkm::internal::IndexTag<12>)
2382  {
2383  return this->Value12;
2384  }
2385  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T12>& GetImpl(vtkm::internal::IndexTag<12>) const
2386  {
2387  return this->Value12;
2388  }
2389 
2390 
2391  // Invalid indices
2392  template <vtkm::IdComponent Index>
2393  static vtkm::internal::NullType ElementTypeI(vtkm::internal::IndexTag<Index>);
2394 
2395  template <vtkm::IdComponent, typename>
2396  friend struct detail::TupleElementImpl;
2397 
2398 public:
2399  static constexpr vtkm::IdComponent Size = 13;
2400  template <vtkm::IdComponent Index>
2402 
2403  Tuple() = default;
2404  Tuple(Tuple&&) = default;
2405  Tuple(const Tuple&) = default;
2406  ~Tuple() = default;
2407  Tuple& operator=(Tuple&&) = default;
2408  Tuple& operator=(const Tuple&) = default;
2409 
2411  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
2412  VTKM_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3, A4&& a4, A5&& a5, A6&& a6, A7&& a7, A8&& a8, A9&& a9, A10&& a10, A11&& a11, A12&& a12)
2413  : Value0(std::forward<A0>(a0))
2414  , Value1(std::forward<A1>(a1))
2415  , Value2(std::forward<A2>(a2))
2416  , Value3(std::forward<A3>(a3))
2417  , Value4(std::forward<A4>(a4))
2418  , Value5(std::forward<A5>(a5))
2419  , Value6(std::forward<A6>(a6))
2420  , Value7(std::forward<A7>(a7))
2421  , Value8(std::forward<A8>(a8))
2422  , Value9(std::forward<A9>(a9))
2423  , Value10(std::forward<A10>(a10))
2424  , Value11(std::forward<A11>(a11))
2425  , Value12(std::forward<A12>(a12))
2426  {
2427  }
2428 
2429  template <vtkm::IdComponent Index>
2430  VTKM_EXEC_CONT auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
2431  {
2432  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
2433  }
2434 
2435  template <vtkm::IdComponent Index>
2436  VTKM_EXEC_CONT auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
2437  {
2438  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
2439  }
2440 
2442  template <typename Function, typename... Args>
2444  auto Apply(Function&& f, Args&&... args)
2445  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12))
2446  {
2447  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12);
2448  }
2450  template <typename Function, typename... Args>
2452  auto Apply(Function&& f, Args&&... args) const
2453  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12))
2454  {
2455  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12);
2456  }
2457 
2459  template <typename Function>
2460  VTKM_EXEC_CONT void ForEach(Function&& f)
2461  {
2462  vtkm::ForEach(*this, std::forward<Function>(f));
2463  }
2465  template <typename Function>
2466  VTKM_EXEC_CONT void ForEach(Function&& f) const
2467  {
2468  vtkm::ForEach(*this, std::forward<Function>(f));
2469  }
2470 
2472  template <typename Function>
2473  VTKM_EXEC_CONT auto Transform(Function&& f)
2474  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
2475  {
2476  return vtkm::Transform(*this, std::forward<Function>(f));
2477  }
2479  template <typename Function>
2480  VTKM_EXEC_CONT auto Transform(Function&& f) const
2481  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
2482  {
2483  return vtkm::Transform(*this, std::forward<Function>(f));
2484  }
2485 };
2486 
2487 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13>
2488 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>
2489 {
2491  static T0 ElementTypeI(vtkm::internal::IndexTag<0>);
2492  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>)
2493  {
2494  return this->Value0;
2495  }
2496  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>) const
2497  {
2498  return this->Value0;
2499  }
2500 
2502  static T1 ElementTypeI(vtkm::internal::IndexTag<1>);
2503  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>)
2504  {
2505  return this->Value1;
2506  }
2507  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>) const
2508  {
2509  return this->Value1;
2510  }
2511 
2513  static T2 ElementTypeI(vtkm::internal::IndexTag<2>);
2514  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>)
2515  {
2516  return this->Value2;
2517  }
2518  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>) const
2519  {
2520  return this->Value2;
2521  }
2522 
2524  static T3 ElementTypeI(vtkm::internal::IndexTag<3>);
2525  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>)
2526  {
2527  return this->Value3;
2528  }
2529  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>) const
2530  {
2531  return this->Value3;
2532  }
2533 
2535  static T4 ElementTypeI(vtkm::internal::IndexTag<4>);
2536  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>)
2537  {
2538  return this->Value4;
2539  }
2540  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>) const
2541  {
2542  return this->Value4;
2543  }
2544 
2546  static T5 ElementTypeI(vtkm::internal::IndexTag<5>);
2547  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>)
2548  {
2549  return this->Value5;
2550  }
2551  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>) const
2552  {
2553  return this->Value5;
2554  }
2555 
2557  static T6 ElementTypeI(vtkm::internal::IndexTag<6>);
2558  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>)
2559  {
2560  return this->Value6;
2561  }
2562  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>) const
2563  {
2564  return this->Value6;
2565  }
2566 
2568  static T7 ElementTypeI(vtkm::internal::IndexTag<7>);
2569  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>)
2570  {
2571  return this->Value7;
2572  }
2573  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>) const
2574  {
2575  return this->Value7;
2576  }
2577 
2579  static T8 ElementTypeI(vtkm::internal::IndexTag<8>);
2580  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>)
2581  {
2582  return this->Value8;
2583  }
2584  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>) const
2585  {
2586  return this->Value8;
2587  }
2588 
2590  static T9 ElementTypeI(vtkm::internal::IndexTag<9>);
2591  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>)
2592  {
2593  return this->Value9;
2594  }
2595  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>) const
2596  {
2597  return this->Value9;
2598  }
2599 
2600  T10 Value10;
2601  static T10 ElementTypeI(vtkm::internal::IndexTag<10>);
2602  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T10>& GetImpl(vtkm::internal::IndexTag<10>)
2603  {
2604  return this->Value10;
2605  }
2606  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T10>& GetImpl(vtkm::internal::IndexTag<10>) const
2607  {
2608  return this->Value10;
2609  }
2610 
2611  T11 Value11;
2612  static T11 ElementTypeI(vtkm::internal::IndexTag<11>);
2613  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T11>& GetImpl(vtkm::internal::IndexTag<11>)
2614  {
2615  return this->Value11;
2616  }
2617  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T11>& GetImpl(vtkm::internal::IndexTag<11>) const
2618  {
2619  return this->Value11;
2620  }
2621 
2622  T12 Value12;
2623  static T12 ElementTypeI(vtkm::internal::IndexTag<12>);
2624  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T12>& GetImpl(vtkm::internal::IndexTag<12>)
2625  {
2626  return this->Value12;
2627  }
2628  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T12>& GetImpl(vtkm::internal::IndexTag<12>) const
2629  {
2630  return this->Value12;
2631  }
2632 
2633  T13 Value13;
2634  static T13 ElementTypeI(vtkm::internal::IndexTag<13>);
2635  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T13>& GetImpl(vtkm::internal::IndexTag<13>)
2636  {
2637  return this->Value13;
2638  }
2639  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T13>& GetImpl(vtkm::internal::IndexTag<13>) const
2640  {
2641  return this->Value13;
2642  }
2643 
2644 
2645  // Invalid indices
2646  template <vtkm::IdComponent Index>
2647  static vtkm::internal::NullType ElementTypeI(vtkm::internal::IndexTag<Index>);
2648 
2649  template <vtkm::IdComponent, typename>
2650  friend struct detail::TupleElementImpl;
2651 
2652 public:
2653  static constexpr vtkm::IdComponent Size = 14;
2654  template <vtkm::IdComponent Index>
2656 
2657  Tuple() = default;
2658  Tuple(Tuple&&) = default;
2659  Tuple(const Tuple&) = default;
2660  ~Tuple() = default;
2661  Tuple& operator=(Tuple&&) = default;
2662  Tuple& operator=(const Tuple&) = default;
2663 
2665  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13>
2666  VTKM_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3, A4&& a4, A5&& a5, A6&& a6, A7&& a7, A8&& a8, A9&& a9, A10&& a10, A11&& a11, A12&& a12, A13&& a13)
2667  : Value0(std::forward<A0>(a0))
2668  , Value1(std::forward<A1>(a1))
2669  , Value2(std::forward<A2>(a2))
2670  , Value3(std::forward<A3>(a3))
2671  , Value4(std::forward<A4>(a4))
2672  , Value5(std::forward<A5>(a5))
2673  , Value6(std::forward<A6>(a6))
2674  , Value7(std::forward<A7>(a7))
2675  , Value8(std::forward<A8>(a8))
2676  , Value9(std::forward<A9>(a9))
2677  , Value10(std::forward<A10>(a10))
2678  , Value11(std::forward<A11>(a11))
2679  , Value12(std::forward<A12>(a12))
2680  , Value13(std::forward<A13>(a13))
2681  {
2682  }
2683 
2684  template <vtkm::IdComponent Index>
2685  VTKM_EXEC_CONT auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
2686  {
2687  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
2688  }
2689 
2690  template <vtkm::IdComponent Index>
2691  VTKM_EXEC_CONT auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
2692  {
2693  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
2694  }
2695 
2697  template <typename Function, typename... Args>
2699  auto Apply(Function&& f, Args&&... args)
2700  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13))
2701  {
2702  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13);
2703  }
2705  template <typename Function, typename... Args>
2707  auto Apply(Function&& f, Args&&... args) const
2708  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13))
2709  {
2710  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13);
2711  }
2712 
2714  template <typename Function>
2715  VTKM_EXEC_CONT void ForEach(Function&& f)
2716  {
2717  vtkm::ForEach(*this, std::forward<Function>(f));
2718  }
2720  template <typename Function>
2721  VTKM_EXEC_CONT void ForEach(Function&& f) const
2722  {
2723  vtkm::ForEach(*this, std::forward<Function>(f));
2724  }
2725 
2727  template <typename Function>
2728  VTKM_EXEC_CONT auto Transform(Function&& f)
2729  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
2730  {
2731  return vtkm::Transform(*this, std::forward<Function>(f));
2732  }
2734  template <typename Function>
2735  VTKM_EXEC_CONT auto Transform(Function&& f) const
2736  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
2737  {
2738  return vtkm::Transform(*this, std::forward<Function>(f));
2739  }
2740 };
2741 
2742 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14>
2743 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>
2744 {
2746  static T0 ElementTypeI(vtkm::internal::IndexTag<0>);
2747  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>)
2748  {
2749  return this->Value0;
2750  }
2751  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>) const
2752  {
2753  return this->Value0;
2754  }
2755 
2757  static T1 ElementTypeI(vtkm::internal::IndexTag<1>);
2758  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>)
2759  {
2760  return this->Value1;
2761  }
2762  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>) const
2763  {
2764  return this->Value1;
2765  }
2766 
2768  static T2 ElementTypeI(vtkm::internal::IndexTag<2>);
2769  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>)
2770  {
2771  return this->Value2;
2772  }
2773  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>) const
2774  {
2775  return this->Value2;
2776  }
2777 
2779  static T3 ElementTypeI(vtkm::internal::IndexTag<3>);
2780  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>)
2781  {
2782  return this->Value3;
2783  }
2784  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>) const
2785  {
2786  return this->Value3;
2787  }
2788 
2790  static T4 ElementTypeI(vtkm::internal::IndexTag<4>);
2791  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>)
2792  {
2793  return this->Value4;
2794  }
2795  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>) const
2796  {
2797  return this->Value4;
2798  }
2799 
2801  static T5 ElementTypeI(vtkm::internal::IndexTag<5>);
2802  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>)
2803  {
2804  return this->Value5;
2805  }
2806  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>) const
2807  {
2808  return this->Value5;
2809  }
2810 
2812  static T6 ElementTypeI(vtkm::internal::IndexTag<6>);
2813  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>)
2814  {
2815  return this->Value6;
2816  }
2817  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>) const
2818  {
2819  return this->Value6;
2820  }
2821 
2823  static T7 ElementTypeI(vtkm::internal::IndexTag<7>);
2824  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>)
2825  {
2826  return this->Value7;
2827  }
2828  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>) const
2829  {
2830  return this->Value7;
2831  }
2832 
2834  static T8 ElementTypeI(vtkm::internal::IndexTag<8>);
2835  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>)
2836  {
2837  return this->Value8;
2838  }
2839  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>) const
2840  {
2841  return this->Value8;
2842  }
2843 
2845  static T9 ElementTypeI(vtkm::internal::IndexTag<9>);
2846  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>)
2847  {
2848  return this->Value9;
2849  }
2850  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>) const
2851  {
2852  return this->Value9;
2853  }
2854 
2855  T10 Value10;
2856  static T10 ElementTypeI(vtkm::internal::IndexTag<10>);
2857  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T10>& GetImpl(vtkm::internal::IndexTag<10>)
2858  {
2859  return this->Value10;
2860  }
2861  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T10>& GetImpl(vtkm::internal::IndexTag<10>) const
2862  {
2863  return this->Value10;
2864  }
2865 
2866  T11 Value11;
2867  static T11 ElementTypeI(vtkm::internal::IndexTag<11>);
2868  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T11>& GetImpl(vtkm::internal::IndexTag<11>)
2869  {
2870  return this->Value11;
2871  }
2872  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T11>& GetImpl(vtkm::internal::IndexTag<11>) const
2873  {
2874  return this->Value11;
2875  }
2876 
2877  T12 Value12;
2878  static T12 ElementTypeI(vtkm::internal::IndexTag<12>);
2879  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T12>& GetImpl(vtkm::internal::IndexTag<12>)
2880  {
2881  return this->Value12;
2882  }
2883  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T12>& GetImpl(vtkm::internal::IndexTag<12>) const
2884  {
2885  return this->Value12;
2886  }
2887 
2888  T13 Value13;
2889  static T13 ElementTypeI(vtkm::internal::IndexTag<13>);
2890  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T13>& GetImpl(vtkm::internal::IndexTag<13>)
2891  {
2892  return this->Value13;
2893  }
2894  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T13>& GetImpl(vtkm::internal::IndexTag<13>) const
2895  {
2896  return this->Value13;
2897  }
2898 
2899  T14 Value14;
2900  static T14 ElementTypeI(vtkm::internal::IndexTag<14>);
2901  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T14>& GetImpl(vtkm::internal::IndexTag<14>)
2902  {
2903  return this->Value14;
2904  }
2905  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T14>& GetImpl(vtkm::internal::IndexTag<14>) const
2906  {
2907  return this->Value14;
2908  }
2909 
2910 
2911  // Invalid indices
2912  template <vtkm::IdComponent Index>
2913  static vtkm::internal::NullType ElementTypeI(vtkm::internal::IndexTag<Index>);
2914 
2915  template <vtkm::IdComponent, typename>
2916  friend struct detail::TupleElementImpl;
2917 
2918 public:
2919  static constexpr vtkm::IdComponent Size = 15;
2920  template <vtkm::IdComponent Index>
2922 
2923  Tuple() = default;
2924  Tuple(Tuple&&) = default;
2925  Tuple(const Tuple&) = default;
2926  ~Tuple() = default;
2927  Tuple& operator=(Tuple&&) = default;
2928  Tuple& operator=(const Tuple&) = default;
2929 
2931  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14>
2932  VTKM_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3, A4&& a4, A5&& a5, A6&& a6, A7&& a7, A8&& a8, A9&& a9, A10&& a10, A11&& a11, A12&& a12, A13&& a13, A14&& a14)
2933  : Value0(std::forward<A0>(a0))
2934  , Value1(std::forward<A1>(a1))
2935  , Value2(std::forward<A2>(a2))
2936  , Value3(std::forward<A3>(a3))
2937  , Value4(std::forward<A4>(a4))
2938  , Value5(std::forward<A5>(a5))
2939  , Value6(std::forward<A6>(a6))
2940  , Value7(std::forward<A7>(a7))
2941  , Value8(std::forward<A8>(a8))
2942  , Value9(std::forward<A9>(a9))
2943  , Value10(std::forward<A10>(a10))
2944  , Value11(std::forward<A11>(a11))
2945  , Value12(std::forward<A12>(a12))
2946  , Value13(std::forward<A13>(a13))
2947  , Value14(std::forward<A14>(a14))
2948  {
2949  }
2950 
2951  template <vtkm::IdComponent Index>
2952  VTKM_EXEC_CONT auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
2953  {
2954  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
2955  }
2956 
2957  template <vtkm::IdComponent Index>
2958  VTKM_EXEC_CONT auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
2959  {
2960  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
2961  }
2962 
2964  template <typename Function, typename... Args>
2966  auto Apply(Function&& f, Args&&... args)
2967  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14))
2968  {
2969  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14);
2970  }
2972  template <typename Function, typename... Args>
2974  auto Apply(Function&& f, Args&&... args) const
2975  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14))
2976  {
2977  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14);
2978  }
2979 
2981  template <typename Function>
2982  VTKM_EXEC_CONT void ForEach(Function&& f)
2983  {
2984  vtkm::ForEach(*this, std::forward<Function>(f));
2985  }
2987  template <typename Function>
2988  VTKM_EXEC_CONT void ForEach(Function&& f) const
2989  {
2990  vtkm::ForEach(*this, std::forward<Function>(f));
2991  }
2992 
2994  template <typename Function>
2995  VTKM_EXEC_CONT auto Transform(Function&& f)
2996  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
2997  {
2998  return vtkm::Transform(*this, std::forward<Function>(f));
2999  }
3001  template <typename Function>
3002  VTKM_EXEC_CONT auto Transform(Function&& f) const
3003  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
3004  {
3005  return vtkm::Transform(*this, std::forward<Function>(f));
3006  }
3007 };
3008 
3009 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15>
3010 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>
3011 {
3013  static T0 ElementTypeI(vtkm::internal::IndexTag<0>);
3014  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>)
3015  {
3016  return this->Value0;
3017  }
3018  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>) const
3019  {
3020  return this->Value0;
3021  }
3022 
3024  static T1 ElementTypeI(vtkm::internal::IndexTag<1>);
3025  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>)
3026  {
3027  return this->Value1;
3028  }
3029  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>) const
3030  {
3031  return this->Value1;
3032  }
3033 
3035  static T2 ElementTypeI(vtkm::internal::IndexTag<2>);
3036  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>)
3037  {
3038  return this->Value2;
3039  }
3040  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>) const
3041  {
3042  return this->Value2;
3043  }
3044 
3046  static T3 ElementTypeI(vtkm::internal::IndexTag<3>);
3047  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>)
3048  {
3049  return this->Value3;
3050  }
3051  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>) const
3052  {
3053  return this->Value3;
3054  }
3055 
3057  static T4 ElementTypeI(vtkm::internal::IndexTag<4>);
3058  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>)
3059  {
3060  return this->Value4;
3061  }
3062  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>) const
3063  {
3064  return this->Value4;
3065  }
3066 
3068  static T5 ElementTypeI(vtkm::internal::IndexTag<5>);
3069  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>)
3070  {
3071  return this->Value5;
3072  }
3073  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>) const
3074  {
3075  return this->Value5;
3076  }
3077 
3079  static T6 ElementTypeI(vtkm::internal::IndexTag<6>);
3080  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>)
3081  {
3082  return this->Value6;
3083  }
3084  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>) const
3085  {
3086  return this->Value6;
3087  }
3088 
3090  static T7 ElementTypeI(vtkm::internal::IndexTag<7>);
3091  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>)
3092  {
3093  return this->Value7;
3094  }
3095  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>) const
3096  {
3097  return this->Value7;
3098  }
3099 
3101  static T8 ElementTypeI(vtkm::internal::IndexTag<8>);
3102  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>)
3103  {
3104  return this->Value8;
3105  }
3106  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>) const
3107  {
3108  return this->Value8;
3109  }
3110 
3112  static T9 ElementTypeI(vtkm::internal::IndexTag<9>);
3113  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>)
3114  {
3115  return this->Value9;
3116  }
3117  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>) const
3118  {
3119  return this->Value9;
3120  }
3121 
3122  T10 Value10;
3123  static T10 ElementTypeI(vtkm::internal::IndexTag<10>);
3124  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T10>& GetImpl(vtkm::internal::IndexTag<10>)
3125  {
3126  return this->Value10;
3127  }
3128  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T10>& GetImpl(vtkm::internal::IndexTag<10>) const
3129  {
3130  return this->Value10;
3131  }
3132 
3133  T11 Value11;
3134  static T11 ElementTypeI(vtkm::internal::IndexTag<11>);
3135  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T11>& GetImpl(vtkm::internal::IndexTag<11>)
3136  {
3137  return this->Value11;
3138  }
3139  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T11>& GetImpl(vtkm::internal::IndexTag<11>) const
3140  {
3141  return this->Value11;
3142  }
3143 
3144  T12 Value12;
3145  static T12 ElementTypeI(vtkm::internal::IndexTag<12>);
3146  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T12>& GetImpl(vtkm::internal::IndexTag<12>)
3147  {
3148  return this->Value12;
3149  }
3150  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T12>& GetImpl(vtkm::internal::IndexTag<12>) const
3151  {
3152  return this->Value12;
3153  }
3154 
3155  T13 Value13;
3156  static T13 ElementTypeI(vtkm::internal::IndexTag<13>);
3157  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T13>& GetImpl(vtkm::internal::IndexTag<13>)
3158  {
3159  return this->Value13;
3160  }
3161  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T13>& GetImpl(vtkm::internal::IndexTag<13>) const
3162  {
3163  return this->Value13;
3164  }
3165 
3166  T14 Value14;
3167  static T14 ElementTypeI(vtkm::internal::IndexTag<14>);
3168  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T14>& GetImpl(vtkm::internal::IndexTag<14>)
3169  {
3170  return this->Value14;
3171  }
3172  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T14>& GetImpl(vtkm::internal::IndexTag<14>) const
3173  {
3174  return this->Value14;
3175  }
3176 
3177  T15 Value15;
3178  static T15 ElementTypeI(vtkm::internal::IndexTag<15>);
3179  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T15>& GetImpl(vtkm::internal::IndexTag<15>)
3180  {
3181  return this->Value15;
3182  }
3183  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T15>& GetImpl(vtkm::internal::IndexTag<15>) const
3184  {
3185  return this->Value15;
3186  }
3187 
3188 
3189  // Invalid indices
3190  template <vtkm::IdComponent Index>
3191  static vtkm::internal::NullType ElementTypeI(vtkm::internal::IndexTag<Index>);
3192 
3193  template <vtkm::IdComponent, typename>
3194  friend struct detail::TupleElementImpl;
3195 
3196 public:
3197  static constexpr vtkm::IdComponent Size = 16;
3198  template <vtkm::IdComponent Index>
3200 
3201  Tuple() = default;
3202  Tuple(Tuple&&) = default;
3203  Tuple(const Tuple&) = default;
3204  ~Tuple() = default;
3205  Tuple& operator=(Tuple&&) = default;
3206  Tuple& operator=(const Tuple&) = default;
3207 
3209  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15>
3210  VTKM_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3, A4&& a4, A5&& a5, A6&& a6, A7&& a7, A8&& a8, A9&& a9, A10&& a10, A11&& a11, A12&& a12, A13&& a13, A14&& a14, A15&& a15)
3211  : Value0(std::forward<A0>(a0))
3212  , Value1(std::forward<A1>(a1))
3213  , Value2(std::forward<A2>(a2))
3214  , Value3(std::forward<A3>(a3))
3215  , Value4(std::forward<A4>(a4))
3216  , Value5(std::forward<A5>(a5))
3217  , Value6(std::forward<A6>(a6))
3218  , Value7(std::forward<A7>(a7))
3219  , Value8(std::forward<A8>(a8))
3220  , Value9(std::forward<A9>(a9))
3221  , Value10(std::forward<A10>(a10))
3222  , Value11(std::forward<A11>(a11))
3223  , Value12(std::forward<A12>(a12))
3224  , Value13(std::forward<A13>(a13))
3225  , Value14(std::forward<A14>(a14))
3226  , Value15(std::forward<A15>(a15))
3227  {
3228  }
3229 
3230  template <vtkm::IdComponent Index>
3231  VTKM_EXEC_CONT auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
3232  {
3233  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
3234  }
3235 
3236  template <vtkm::IdComponent Index>
3237  VTKM_EXEC_CONT auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
3238  {
3239  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
3240  }
3241 
3243  template <typename Function, typename... Args>
3245  auto Apply(Function&& f, Args&&... args)
3246  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15))
3247  {
3248  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15);
3249  }
3251  template <typename Function, typename... Args>
3253  auto Apply(Function&& f, Args&&... args) const
3254  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15))
3255  {
3256  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15);
3257  }
3258 
3260  template <typename Function>
3261  VTKM_EXEC_CONT void ForEach(Function&& f)
3262  {
3263  vtkm::ForEach(*this, std::forward<Function>(f));
3264  }
3266  template <typename Function>
3267  VTKM_EXEC_CONT void ForEach(Function&& f) const
3268  {
3269  vtkm::ForEach(*this, std::forward<Function>(f));
3270  }
3271 
3273  template <typename Function>
3274  VTKM_EXEC_CONT auto Transform(Function&& f)
3275  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
3276  {
3277  return vtkm::Transform(*this, std::forward<Function>(f));
3278  }
3280  template <typename Function>
3281  VTKM_EXEC_CONT auto Transform(Function&& f) const
3282  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
3283  {
3284  return vtkm::Transform(*this, std::forward<Function>(f));
3285  }
3286 };
3287 
3288 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16>
3289 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>
3290 {
3292  static T0 ElementTypeI(vtkm::internal::IndexTag<0>);
3293  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>)
3294  {
3295  return this->Value0;
3296  }
3297  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>) const
3298  {
3299  return this->Value0;
3300  }
3301 
3303  static T1 ElementTypeI(vtkm::internal::IndexTag<1>);
3304  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>)
3305  {
3306  return this->Value1;
3307  }
3308  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>) const
3309  {
3310  return this->Value1;
3311  }
3312 
3314  static T2 ElementTypeI(vtkm::internal::IndexTag<2>);
3315  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>)
3316  {
3317  return this->Value2;
3318  }
3319  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>) const
3320  {
3321  return this->Value2;
3322  }
3323 
3325  static T3 ElementTypeI(vtkm::internal::IndexTag<3>);
3326  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>)
3327  {
3328  return this->Value3;
3329  }
3330  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>) const
3331  {
3332  return this->Value3;
3333  }
3334 
3336  static T4 ElementTypeI(vtkm::internal::IndexTag<4>);
3337  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>)
3338  {
3339  return this->Value4;
3340  }
3341  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>) const
3342  {
3343  return this->Value4;
3344  }
3345 
3347  static T5 ElementTypeI(vtkm::internal::IndexTag<5>);
3348  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>)
3349  {
3350  return this->Value5;
3351  }
3352  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>) const
3353  {
3354  return this->Value5;
3355  }
3356 
3358  static T6 ElementTypeI(vtkm::internal::IndexTag<6>);
3359  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>)
3360  {
3361  return this->Value6;
3362  }
3363  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>) const
3364  {
3365  return this->Value6;
3366  }
3367 
3369  static T7 ElementTypeI(vtkm::internal::IndexTag<7>);
3370  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>)
3371  {
3372  return this->Value7;
3373  }
3374  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>) const
3375  {
3376  return this->Value7;
3377  }
3378 
3380  static T8 ElementTypeI(vtkm::internal::IndexTag<8>);
3381  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>)
3382  {
3383  return this->Value8;
3384  }
3385  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>) const
3386  {
3387  return this->Value8;
3388  }
3389 
3391  static T9 ElementTypeI(vtkm::internal::IndexTag<9>);
3392  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>)
3393  {
3394  return this->Value9;
3395  }
3396  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>) const
3397  {
3398  return this->Value9;
3399  }
3400 
3401  T10 Value10;
3402  static T10 ElementTypeI(vtkm::internal::IndexTag<10>);
3403  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T10>& GetImpl(vtkm::internal::IndexTag<10>)
3404  {
3405  return this->Value10;
3406  }
3407  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T10>& GetImpl(vtkm::internal::IndexTag<10>) const
3408  {
3409  return this->Value10;
3410  }
3411 
3412  T11 Value11;
3413  static T11 ElementTypeI(vtkm::internal::IndexTag<11>);
3414  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T11>& GetImpl(vtkm::internal::IndexTag<11>)
3415  {
3416  return this->Value11;
3417  }
3418  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T11>& GetImpl(vtkm::internal::IndexTag<11>) const
3419  {
3420  return this->Value11;
3421  }
3422 
3423  T12 Value12;
3424  static T12 ElementTypeI(vtkm::internal::IndexTag<12>);
3425  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T12>& GetImpl(vtkm::internal::IndexTag<12>)
3426  {
3427  return this->Value12;
3428  }
3429  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T12>& GetImpl(vtkm::internal::IndexTag<12>) const
3430  {
3431  return this->Value12;
3432  }
3433 
3434  T13 Value13;
3435  static T13 ElementTypeI(vtkm::internal::IndexTag<13>);
3436  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T13>& GetImpl(vtkm::internal::IndexTag<13>)
3437  {
3438  return this->Value13;
3439  }
3440  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T13>& GetImpl(vtkm::internal::IndexTag<13>) const
3441  {
3442  return this->Value13;
3443  }
3444 
3445  T14 Value14;
3446  static T14 ElementTypeI(vtkm::internal::IndexTag<14>);
3447  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T14>& GetImpl(vtkm::internal::IndexTag<14>)
3448  {
3449  return this->Value14;
3450  }
3451  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T14>& GetImpl(vtkm::internal::IndexTag<14>) const
3452  {
3453  return this->Value14;
3454  }
3455 
3456  T15 Value15;
3457  static T15 ElementTypeI(vtkm::internal::IndexTag<15>);
3458  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T15>& GetImpl(vtkm::internal::IndexTag<15>)
3459  {
3460  return this->Value15;
3461  }
3462  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T15>& GetImpl(vtkm::internal::IndexTag<15>) const
3463  {
3464  return this->Value15;
3465  }
3466 
3467  T16 Value16;
3468  static T16 ElementTypeI(vtkm::internal::IndexTag<16>);
3469  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T16>& GetImpl(vtkm::internal::IndexTag<16>)
3470  {
3471  return this->Value16;
3472  }
3473  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T16>& GetImpl(vtkm::internal::IndexTag<16>) const
3474  {
3475  return this->Value16;
3476  }
3477 
3478 
3479  // Invalid indices
3480  template <vtkm::IdComponent Index>
3481  static vtkm::internal::NullType ElementTypeI(vtkm::internal::IndexTag<Index>);
3482 
3483  template <vtkm::IdComponent, typename>
3484  friend struct detail::TupleElementImpl;
3485 
3486 public:
3487  static constexpr vtkm::IdComponent Size = 17;
3488  template <vtkm::IdComponent Index>
3490 
3491  Tuple() = default;
3492  Tuple(Tuple&&) = default;
3493  Tuple(const Tuple&) = default;
3494  ~Tuple() = default;
3495  Tuple& operator=(Tuple&&) = default;
3496  Tuple& operator=(const Tuple&) = default;
3497 
3499  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16>
3500  VTKM_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3, A4&& a4, A5&& a5, A6&& a6, A7&& a7, A8&& a8, A9&& a9, A10&& a10, A11&& a11, A12&& a12, A13&& a13, A14&& a14, A15&& a15, A16&& a16)
3501  : Value0(std::forward<A0>(a0))
3502  , Value1(std::forward<A1>(a1))
3503  , Value2(std::forward<A2>(a2))
3504  , Value3(std::forward<A3>(a3))
3505  , Value4(std::forward<A4>(a4))
3506  , Value5(std::forward<A5>(a5))
3507  , Value6(std::forward<A6>(a6))
3508  , Value7(std::forward<A7>(a7))
3509  , Value8(std::forward<A8>(a8))
3510  , Value9(std::forward<A9>(a9))
3511  , Value10(std::forward<A10>(a10))
3512  , Value11(std::forward<A11>(a11))
3513  , Value12(std::forward<A12>(a12))
3514  , Value13(std::forward<A13>(a13))
3515  , Value14(std::forward<A14>(a14))
3516  , Value15(std::forward<A15>(a15))
3517  , Value16(std::forward<A16>(a16))
3518  {
3519  }
3520 
3521  template <vtkm::IdComponent Index>
3522  VTKM_EXEC_CONT auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
3523  {
3524  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
3525  }
3526 
3527  template <vtkm::IdComponent Index>
3528  VTKM_EXEC_CONT auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
3529  {
3530  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
3531  }
3532 
3534  template <typename Function, typename... Args>
3536  auto Apply(Function&& f, Args&&... args)
3537  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16))
3538  {
3539  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16);
3540  }
3542  template <typename Function, typename... Args>
3544  auto Apply(Function&& f, Args&&... args) const
3545  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16))
3546  {
3547  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16);
3548  }
3549 
3551  template <typename Function>
3552  VTKM_EXEC_CONT void ForEach(Function&& f)
3553  {
3554  vtkm::ForEach(*this, std::forward<Function>(f));
3555  }
3557  template <typename Function>
3558  VTKM_EXEC_CONT void ForEach(Function&& f) const
3559  {
3560  vtkm::ForEach(*this, std::forward<Function>(f));
3561  }
3562 
3564  template <typename Function>
3565  VTKM_EXEC_CONT auto Transform(Function&& f)
3566  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
3567  {
3568  return vtkm::Transform(*this, std::forward<Function>(f));
3569  }
3571  template <typename Function>
3572  VTKM_EXEC_CONT auto Transform(Function&& f) const
3573  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
3574  {
3575  return vtkm::Transform(*this, std::forward<Function>(f));
3576  }
3577 };
3578 
3579 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17>
3580 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>
3581 {
3583  static T0 ElementTypeI(vtkm::internal::IndexTag<0>);
3584  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>)
3585  {
3586  return this->Value0;
3587  }
3588  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>) const
3589  {
3590  return this->Value0;
3591  }
3592 
3594  static T1 ElementTypeI(vtkm::internal::IndexTag<1>);
3595  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>)
3596  {
3597  return this->Value1;
3598  }
3599  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>) const
3600  {
3601  return this->Value1;
3602  }
3603 
3605  static T2 ElementTypeI(vtkm::internal::IndexTag<2>);
3606  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>)
3607  {
3608  return this->Value2;
3609  }
3610  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>) const
3611  {
3612  return this->Value2;
3613  }
3614 
3616  static T3 ElementTypeI(vtkm::internal::IndexTag<3>);
3617  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>)
3618  {
3619  return this->Value3;
3620  }
3621  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>) const
3622  {
3623  return this->Value3;
3624  }
3625 
3627  static T4 ElementTypeI(vtkm::internal::IndexTag<4>);
3628  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>)
3629  {
3630  return this->Value4;
3631  }
3632  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>) const
3633  {
3634  return this->Value4;
3635  }
3636 
3638  static T5 ElementTypeI(vtkm::internal::IndexTag<5>);
3639  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>)
3640  {
3641  return this->Value5;
3642  }
3643  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>) const
3644  {
3645  return this->Value5;
3646  }
3647 
3649  static T6 ElementTypeI(vtkm::internal::IndexTag<6>);
3650  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>)
3651  {
3652  return this->Value6;
3653  }
3654  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>) const
3655  {
3656  return this->Value6;
3657  }
3658 
3660  static T7 ElementTypeI(vtkm::internal::IndexTag<7>);
3661  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>)
3662  {
3663  return this->Value7;
3664  }
3665  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>) const
3666  {
3667  return this->Value7;
3668  }
3669 
3671  static T8 ElementTypeI(vtkm::internal::IndexTag<8>);
3672  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>)
3673  {
3674  return this->Value8;
3675  }
3676  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>) const
3677  {
3678  return this->Value8;
3679  }
3680 
3682  static T9 ElementTypeI(vtkm::internal::IndexTag<9>);
3683  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>)
3684  {
3685  return this->Value9;
3686  }
3687  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>) const
3688  {
3689  return this->Value9;
3690  }
3691 
3692  T10 Value10;
3693  static T10 ElementTypeI(vtkm::internal::IndexTag<10>);
3694  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T10>& GetImpl(vtkm::internal::IndexTag<10>)
3695  {
3696  return this->Value10;
3697  }
3698  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T10>& GetImpl(vtkm::internal::IndexTag<10>) const
3699  {
3700  return this->Value10;
3701  }
3702 
3703  T11 Value11;
3704  static T11 ElementTypeI(vtkm::internal::IndexTag<11>);
3705  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T11>& GetImpl(vtkm::internal::IndexTag<11>)
3706  {
3707  return this->Value11;
3708  }
3709  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T11>& GetImpl(vtkm::internal::IndexTag<11>) const
3710  {
3711  return this->Value11;
3712  }
3713 
3714  T12 Value12;
3715  static T12 ElementTypeI(vtkm::internal::IndexTag<12>);
3716  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T12>& GetImpl(vtkm::internal::IndexTag<12>)
3717  {
3718  return this->Value12;
3719  }
3720  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T12>& GetImpl(vtkm::internal::IndexTag<12>) const
3721  {
3722  return this->Value12;
3723  }
3724 
3725  T13 Value13;
3726  static T13 ElementTypeI(vtkm::internal::IndexTag<13>);
3727  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T13>& GetImpl(vtkm::internal::IndexTag<13>)
3728  {
3729  return this->Value13;
3730  }
3731  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T13>& GetImpl(vtkm::internal::IndexTag<13>) const
3732  {
3733  return this->Value13;
3734  }
3735 
3736  T14 Value14;
3737  static T14 ElementTypeI(vtkm::internal::IndexTag<14>);
3738  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T14>& GetImpl(vtkm::internal::IndexTag<14>)
3739  {
3740  return this->Value14;
3741  }
3742  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T14>& GetImpl(vtkm::internal::IndexTag<14>) const
3743  {
3744  return this->Value14;
3745  }
3746 
3747  T15 Value15;
3748  static T15 ElementTypeI(vtkm::internal::IndexTag<15>);
3749  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T15>& GetImpl(vtkm::internal::IndexTag<15>)
3750  {
3751  return this->Value15;
3752  }
3753  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T15>& GetImpl(vtkm::internal::IndexTag<15>) const
3754  {
3755  return this->Value15;
3756  }
3757 
3758  T16 Value16;
3759  static T16 ElementTypeI(vtkm::internal::IndexTag<16>);
3760  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T16>& GetImpl(vtkm::internal::IndexTag<16>)
3761  {
3762  return this->Value16;
3763  }
3764  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T16>& GetImpl(vtkm::internal::IndexTag<16>) const
3765  {
3766  return this->Value16;
3767  }
3768 
3769  T17 Value17;
3770  static T17 ElementTypeI(vtkm::internal::IndexTag<17>);
3771  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T17>& GetImpl(vtkm::internal::IndexTag<17>)
3772  {
3773  return this->Value17;
3774  }
3775  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T17>& GetImpl(vtkm::internal::IndexTag<17>) const
3776  {
3777  return this->Value17;
3778  }
3779 
3780 
3781  // Invalid indices
3782  template <vtkm::IdComponent Index>
3783  static vtkm::internal::NullType ElementTypeI(vtkm::internal::IndexTag<Index>);
3784 
3785  template <vtkm::IdComponent, typename>
3786  friend struct detail::TupleElementImpl;
3787 
3788 public:
3789  static constexpr vtkm::IdComponent Size = 18;
3790  template <vtkm::IdComponent Index>
3792 
3793  Tuple() = default;
3794  Tuple(Tuple&&) = default;
3795  Tuple(const Tuple&) = default;
3796  ~Tuple() = default;
3797  Tuple& operator=(Tuple&&) = default;
3798  Tuple& operator=(const Tuple&) = default;
3799 
3801  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17>
3802  VTKM_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3, A4&& a4, A5&& a5, A6&& a6, A7&& a7, A8&& a8, A9&& a9, A10&& a10, A11&& a11, A12&& a12, A13&& a13, A14&& a14, A15&& a15, A16&& a16, A17&& a17)
3803  : Value0(std::forward<A0>(a0))
3804  , Value1(std::forward<A1>(a1))
3805  , Value2(std::forward<A2>(a2))
3806  , Value3(std::forward<A3>(a3))
3807  , Value4(std::forward<A4>(a4))
3808  , Value5(std::forward<A5>(a5))
3809  , Value6(std::forward<A6>(a6))
3810  , Value7(std::forward<A7>(a7))
3811  , Value8(std::forward<A8>(a8))
3812  , Value9(std::forward<A9>(a9))
3813  , Value10(std::forward<A10>(a10))
3814  , Value11(std::forward<A11>(a11))
3815  , Value12(std::forward<A12>(a12))
3816  , Value13(std::forward<A13>(a13))
3817  , Value14(std::forward<A14>(a14))
3818  , Value15(std::forward<A15>(a15))
3819  , Value16(std::forward<A16>(a16))
3820  , Value17(std::forward<A17>(a17))
3821  {
3822  }
3823 
3824  template <vtkm::IdComponent Index>
3825  VTKM_EXEC_CONT auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
3826  {
3827  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
3828  }
3829 
3830  template <vtkm::IdComponent Index>
3831  VTKM_EXEC_CONT auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
3832  {
3833  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
3834  }
3835 
3837  template <typename Function, typename... Args>
3839  auto Apply(Function&& f, Args&&... args)
3840  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16, Value17))
3841  {
3842  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16, Value17);
3843  }
3845  template <typename Function, typename... Args>
3847  auto Apply(Function&& f, Args&&... args) const
3848  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16, Value17))
3849  {
3850  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16, Value17);
3851  }
3852 
3854  template <typename Function>
3855  VTKM_EXEC_CONT void ForEach(Function&& f)
3856  {
3857  vtkm::ForEach(*this, std::forward<Function>(f));
3858  }
3860  template <typename Function>
3861  VTKM_EXEC_CONT void ForEach(Function&& f) const
3862  {
3863  vtkm::ForEach(*this, std::forward<Function>(f));
3864  }
3865 
3867  template <typename Function>
3868  VTKM_EXEC_CONT auto Transform(Function&& f)
3869  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
3870  {
3871  return vtkm::Transform(*this, std::forward<Function>(f));
3872  }
3874  template <typename Function>
3875  VTKM_EXEC_CONT auto Transform(Function&& f) const
3876  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
3877  {
3878  return vtkm::Transform(*this, std::forward<Function>(f));
3879  }
3880 };
3881 
3882 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18>
3883 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>
3884 {
3886  static T0 ElementTypeI(vtkm::internal::IndexTag<0>);
3887  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>)
3888  {
3889  return this->Value0;
3890  }
3891  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>) const
3892  {
3893  return this->Value0;
3894  }
3895 
3897  static T1 ElementTypeI(vtkm::internal::IndexTag<1>);
3898  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>)
3899  {
3900  return this->Value1;
3901  }
3902  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>) const
3903  {
3904  return this->Value1;
3905  }
3906 
3908  static T2 ElementTypeI(vtkm::internal::IndexTag<2>);
3909  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>)
3910  {
3911  return this->Value2;
3912  }
3913  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>) const
3914  {
3915  return this->Value2;
3916  }
3917 
3919  static T3 ElementTypeI(vtkm::internal::IndexTag<3>);
3920  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>)
3921  {
3922  return this->Value3;
3923  }
3924  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>) const
3925  {
3926  return this->Value3;
3927  }
3928 
3930  static T4 ElementTypeI(vtkm::internal::IndexTag<4>);
3931  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>)
3932  {
3933  return this->Value4;
3934  }
3935  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>) const
3936  {
3937  return this->Value4;
3938  }
3939 
3941  static T5 ElementTypeI(vtkm::internal::IndexTag<5>);
3942  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>)
3943  {
3944  return this->Value5;
3945  }
3946  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>) const
3947  {
3948  return this->Value5;
3949  }
3950 
3952  static T6 ElementTypeI(vtkm::internal::IndexTag<6>);
3953  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>)
3954  {
3955  return this->Value6;
3956  }
3957  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>) const
3958  {
3959  return this->Value6;
3960  }
3961 
3963  static T7 ElementTypeI(vtkm::internal::IndexTag<7>);
3964  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>)
3965  {
3966  return this->Value7;
3967  }
3968  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>) const
3969  {
3970  return this->Value7;
3971  }
3972 
3974  static T8 ElementTypeI(vtkm::internal::IndexTag<8>);
3975  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>)
3976  {
3977  return this->Value8;
3978  }
3979  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>) const
3980  {
3981  return this->Value8;
3982  }
3983 
3985  static T9 ElementTypeI(vtkm::internal::IndexTag<9>);
3986  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>)
3987  {
3988  return this->Value9;
3989  }
3990  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>) const
3991  {
3992  return this->Value9;
3993  }
3994 
3995  T10 Value10;
3996  static T10 ElementTypeI(vtkm::internal::IndexTag<10>);
3997  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T10>& GetImpl(vtkm::internal::IndexTag<10>)
3998  {
3999  return this->Value10;
4000  }
4001  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T10>& GetImpl(vtkm::internal::IndexTag<10>) const
4002  {
4003  return this->Value10;
4004  }
4005 
4006  T11 Value11;
4007  static T11 ElementTypeI(vtkm::internal::IndexTag<11>);
4008  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T11>& GetImpl(vtkm::internal::IndexTag<11>)
4009  {
4010  return this->Value11;
4011  }
4012  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T11>& GetImpl(vtkm::internal::IndexTag<11>) const
4013  {
4014  return this->Value11;
4015  }
4016 
4017  T12 Value12;
4018  static T12 ElementTypeI(vtkm::internal::IndexTag<12>);
4019  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T12>& GetImpl(vtkm::internal::IndexTag<12>)
4020  {
4021  return this->Value12;
4022  }
4023  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T12>& GetImpl(vtkm::internal::IndexTag<12>) const
4024  {
4025  return this->Value12;
4026  }
4027 
4028  T13 Value13;
4029  static T13 ElementTypeI(vtkm::internal::IndexTag<13>);
4030  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T13>& GetImpl(vtkm::internal::IndexTag<13>)
4031  {
4032  return this->Value13;
4033  }
4034  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T13>& GetImpl(vtkm::internal::IndexTag<13>) const
4035  {
4036  return this->Value13;
4037  }
4038 
4039  T14 Value14;
4040  static T14 ElementTypeI(vtkm::internal::IndexTag<14>);
4041  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T14>& GetImpl(vtkm::internal::IndexTag<14>)
4042  {
4043  return this->Value14;
4044  }
4045  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T14>& GetImpl(vtkm::internal::IndexTag<14>) const
4046  {
4047  return this->Value14;
4048  }
4049 
4050  T15 Value15;
4051  static T15 ElementTypeI(vtkm::internal::IndexTag<15>);
4052  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T15>& GetImpl(vtkm::internal::IndexTag<15>)
4053  {
4054  return this->Value15;
4055  }
4056  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T15>& GetImpl(vtkm::internal::IndexTag<15>) const
4057  {
4058  return this->Value15;
4059  }
4060 
4061  T16 Value16;
4062  static T16 ElementTypeI(vtkm::internal::IndexTag<16>);
4063  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T16>& GetImpl(vtkm::internal::IndexTag<16>)
4064  {
4065  return this->Value16;
4066  }
4067  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T16>& GetImpl(vtkm::internal::IndexTag<16>) const
4068  {
4069  return this->Value16;
4070  }
4071 
4072  T17 Value17;
4073  static T17 ElementTypeI(vtkm::internal::IndexTag<17>);
4074  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T17>& GetImpl(vtkm::internal::IndexTag<17>)
4075  {
4076  return this->Value17;
4077  }
4078  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T17>& GetImpl(vtkm::internal::IndexTag<17>) const
4079  {
4080  return this->Value17;
4081  }
4082 
4083  T18 Value18;
4084  static T18 ElementTypeI(vtkm::internal::IndexTag<18>);
4085  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T18>& GetImpl(vtkm::internal::IndexTag<18>)
4086  {
4087  return this->Value18;
4088  }
4089  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T18>& GetImpl(vtkm::internal::IndexTag<18>) const
4090  {
4091  return this->Value18;
4092  }
4093 
4094 
4095  // Invalid indices
4096  template <vtkm::IdComponent Index>
4097  static vtkm::internal::NullType ElementTypeI(vtkm::internal::IndexTag<Index>);
4098 
4099  template <vtkm::IdComponent, typename>
4100  friend struct detail::TupleElementImpl;
4101 
4102 public:
4103  static constexpr vtkm::IdComponent Size = 19;
4104  template <vtkm::IdComponent Index>
4106 
4107  Tuple() = default;
4108  Tuple(Tuple&&) = default;
4109  Tuple(const Tuple&) = default;
4110  ~Tuple() = default;
4111  Tuple& operator=(Tuple&&) = default;
4112  Tuple& operator=(const Tuple&) = default;
4113 
4115  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18>
4116  VTKM_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3, A4&& a4, A5&& a5, A6&& a6, A7&& a7, A8&& a8, A9&& a9, A10&& a10, A11&& a11, A12&& a12, A13&& a13, A14&& a14, A15&& a15, A16&& a16, A17&& a17, A18&& a18)
4117  : Value0(std::forward<A0>(a0))
4118  , Value1(std::forward<A1>(a1))
4119  , Value2(std::forward<A2>(a2))
4120  , Value3(std::forward<A3>(a3))
4121  , Value4(std::forward<A4>(a4))
4122  , Value5(std::forward<A5>(a5))
4123  , Value6(std::forward<A6>(a6))
4124  , Value7(std::forward<A7>(a7))
4125  , Value8(std::forward<A8>(a8))
4126  , Value9(std::forward<A9>(a9))
4127  , Value10(std::forward<A10>(a10))
4128  , Value11(std::forward<A11>(a11))
4129  , Value12(std::forward<A12>(a12))
4130  , Value13(std::forward<A13>(a13))
4131  , Value14(std::forward<A14>(a14))
4132  , Value15(std::forward<A15>(a15))
4133  , Value16(std::forward<A16>(a16))
4134  , Value17(std::forward<A17>(a17))
4135  , Value18(std::forward<A18>(a18))
4136  {
4137  }
4138 
4139  template <vtkm::IdComponent Index>
4140  VTKM_EXEC_CONT auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
4141  {
4142  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
4143  }
4144 
4145  template <vtkm::IdComponent Index>
4146  VTKM_EXEC_CONT auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
4147  {
4148  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
4149  }
4150 
4152  template <typename Function, typename... Args>
4154  auto Apply(Function&& f, Args&&... args)
4155  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16, Value17, Value18))
4156  {
4157  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16, Value17, Value18);
4158  }
4160  template <typename Function, typename... Args>
4162  auto Apply(Function&& f, Args&&... args) const
4163  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16, Value17, Value18))
4164  {
4165  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16, Value17, Value18);
4166  }
4167 
4169  template <typename Function>
4170  VTKM_EXEC_CONT void ForEach(Function&& f)
4171  {
4172  vtkm::ForEach(*this, std::forward<Function>(f));
4173  }
4175  template <typename Function>
4176  VTKM_EXEC_CONT void ForEach(Function&& f) const
4177  {
4178  vtkm::ForEach(*this, std::forward<Function>(f));
4179  }
4180 
4182  template <typename Function>
4183  VTKM_EXEC_CONT auto Transform(Function&& f)
4184  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
4185  {
4186  return vtkm::Transform(*this, std::forward<Function>(f));
4187  }
4189  template <typename Function>
4190  VTKM_EXEC_CONT auto Transform(Function&& f) const
4191  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
4192  {
4193  return vtkm::Transform(*this, std::forward<Function>(f));
4194  }
4195 };
4196 
4197 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19>
4198 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>
4199 {
4201  static T0 ElementTypeI(vtkm::internal::IndexTag<0>);
4202  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>)
4203  {
4204  return this->Value0;
4205  }
4206  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>) const
4207  {
4208  return this->Value0;
4209  }
4210 
4212  static T1 ElementTypeI(vtkm::internal::IndexTag<1>);
4213  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>)
4214  {
4215  return this->Value1;
4216  }
4217  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>) const
4218  {
4219  return this->Value1;
4220  }
4221 
4223  static T2 ElementTypeI(vtkm::internal::IndexTag<2>);
4224  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>)
4225  {
4226  return this->Value2;
4227  }
4228  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>) const
4229  {
4230  return this->Value2;
4231  }
4232 
4234  static T3 ElementTypeI(vtkm::internal::IndexTag<3>);
4235  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>)
4236  {
4237  return this->Value3;
4238  }
4239  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>) const
4240  {
4241  return this->Value3;
4242  }
4243 
4245  static T4 ElementTypeI(vtkm::internal::IndexTag<4>);
4246  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>)
4247  {
4248  return this->Value4;
4249  }
4250  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>) const
4251  {
4252  return this->Value4;
4253  }
4254 
4256  static T5 ElementTypeI(vtkm::internal::IndexTag<5>);
4257  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>)
4258  {
4259  return this->Value5;
4260  }
4261  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>) const
4262  {
4263  return this->Value5;
4264  }
4265 
4267  static T6 ElementTypeI(vtkm::internal::IndexTag<6>);
4268  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>)
4269  {
4270  return this->Value6;
4271  }
4272  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>) const
4273  {
4274  return this->Value6;
4275  }
4276 
4278  static T7 ElementTypeI(vtkm::internal::IndexTag<7>);
4279  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>)
4280  {
4281  return this->Value7;
4282  }
4283  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>) const
4284  {
4285  return this->Value7;
4286  }
4287 
4289  static T8 ElementTypeI(vtkm::internal::IndexTag<8>);
4290  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>)
4291  {
4292  return this->Value8;
4293  }
4294  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>) const
4295  {
4296  return this->Value8;
4297  }
4298 
4300  static T9 ElementTypeI(vtkm::internal::IndexTag<9>);
4301  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>)
4302  {
4303  return this->Value9;
4304  }
4305  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>) const
4306  {
4307  return this->Value9;
4308  }
4309 
4310  T10 Value10;
4311  static T10 ElementTypeI(vtkm::internal::IndexTag<10>);
4312  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T10>& GetImpl(vtkm::internal::IndexTag<10>)
4313  {
4314  return this->Value10;
4315  }
4316  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T10>& GetImpl(vtkm::internal::IndexTag<10>) const
4317  {
4318  return this->Value10;
4319  }
4320 
4321  T11 Value11;
4322  static T11 ElementTypeI(vtkm::internal::IndexTag<11>);
4323  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T11>& GetImpl(vtkm::internal::IndexTag<11>)
4324  {
4325  return this->Value11;
4326  }
4327  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T11>& GetImpl(vtkm::internal::IndexTag<11>) const
4328  {
4329  return this->Value11;
4330  }
4331 
4332  T12 Value12;
4333  static T12 ElementTypeI(vtkm::internal::IndexTag<12>);
4334  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T12>& GetImpl(vtkm::internal::IndexTag<12>)
4335  {
4336  return this->Value12;
4337  }
4338  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T12>& GetImpl(vtkm::internal::IndexTag<12>) const
4339  {
4340  return this->Value12;
4341  }
4342 
4343  T13 Value13;
4344  static T13 ElementTypeI(vtkm::internal::IndexTag<13>);
4345  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T13>& GetImpl(vtkm::internal::IndexTag<13>)
4346  {
4347  return this->Value13;
4348  }
4349  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T13>& GetImpl(vtkm::internal::IndexTag<13>) const
4350  {
4351  return this->Value13;
4352  }
4353 
4354  T14 Value14;
4355  static T14 ElementTypeI(vtkm::internal::IndexTag<14>);
4356  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T14>& GetImpl(vtkm::internal::IndexTag<14>)
4357  {
4358  return this->Value14;
4359  }
4360  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T14>& GetImpl(vtkm::internal::IndexTag<14>) const
4361  {
4362  return this->Value14;
4363  }
4364 
4365  T15 Value15;
4366  static T15 ElementTypeI(vtkm::internal::IndexTag<15>);
4367  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T15>& GetImpl(vtkm::internal::IndexTag<15>)
4368  {
4369  return this->Value15;
4370  }
4371  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T15>& GetImpl(vtkm::internal::IndexTag<15>) const
4372  {
4373  return this->Value15;
4374  }
4375 
4376  T16 Value16;
4377  static T16 ElementTypeI(vtkm::internal::IndexTag<16>);
4378  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T16>& GetImpl(vtkm::internal::IndexTag<16>)
4379  {
4380  return this->Value16;
4381  }
4382  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T16>& GetImpl(vtkm::internal::IndexTag<16>) const
4383  {
4384  return this->Value16;
4385  }
4386 
4387  T17 Value17;
4388  static T17 ElementTypeI(vtkm::internal::IndexTag<17>);
4389  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T17>& GetImpl(vtkm::internal::IndexTag<17>)
4390  {
4391  return this->Value17;
4392  }
4393  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T17>& GetImpl(vtkm::internal::IndexTag<17>) const
4394  {
4395  return this->Value17;
4396  }
4397 
4398  T18 Value18;
4399  static T18 ElementTypeI(vtkm::internal::IndexTag<18>);
4400  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T18>& GetImpl(vtkm::internal::IndexTag<18>)
4401  {
4402  return this->Value18;
4403  }
4404  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T18>& GetImpl(vtkm::internal::IndexTag<18>) const
4405  {
4406  return this->Value18;
4407  }
4408 
4409  T19 Value19;
4410  static T19 ElementTypeI(vtkm::internal::IndexTag<19>);
4411  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T19>& GetImpl(vtkm::internal::IndexTag<19>)
4412  {
4413  return this->Value19;
4414  }
4415  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T19>& GetImpl(vtkm::internal::IndexTag<19>) const
4416  {
4417  return this->Value19;
4418  }
4419 
4420 
4421  // Invalid indices
4422  template <vtkm::IdComponent Index>
4423  static vtkm::internal::NullType ElementTypeI(vtkm::internal::IndexTag<Index>);
4424 
4425  template <vtkm::IdComponent, typename>
4426  friend struct detail::TupleElementImpl;
4427 
4428 public:
4429  static constexpr vtkm::IdComponent Size = 20;
4430  template <vtkm::IdComponent Index>
4432 
4433  Tuple() = default;
4434  Tuple(Tuple&&) = default;
4435  Tuple(const Tuple&) = default;
4436  ~Tuple() = default;
4437  Tuple& operator=(Tuple&&) = default;
4438  Tuple& operator=(const Tuple&) = default;
4439 
4441  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19>
4442  VTKM_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3, A4&& a4, A5&& a5, A6&& a6, A7&& a7, A8&& a8, A9&& a9, A10&& a10, A11&& a11, A12&& a12, A13&& a13, A14&& a14, A15&& a15, A16&& a16, A17&& a17, A18&& a18, A19&& a19)
4443  : Value0(std::forward<A0>(a0))
4444  , Value1(std::forward<A1>(a1))
4445  , Value2(std::forward<A2>(a2))
4446  , Value3(std::forward<A3>(a3))
4447  , Value4(std::forward<A4>(a4))
4448  , Value5(std::forward<A5>(a5))
4449  , Value6(std::forward<A6>(a6))
4450  , Value7(std::forward<A7>(a7))
4451  , Value8(std::forward<A8>(a8))
4452  , Value9(std::forward<A9>(a9))
4453  , Value10(std::forward<A10>(a10))
4454  , Value11(std::forward<A11>(a11))
4455  , Value12(std::forward<A12>(a12))
4456  , Value13(std::forward<A13>(a13))
4457  , Value14(std::forward<A14>(a14))
4458  , Value15(std::forward<A15>(a15))
4459  , Value16(std::forward<A16>(a16))
4460  , Value17(std::forward<A17>(a17))
4461  , Value18(std::forward<A18>(a18))
4462  , Value19(std::forward<A19>(a19))
4463  {
4464  }
4465 
4466  template <vtkm::IdComponent Index>
4467  VTKM_EXEC_CONT auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
4468  {
4469  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
4470  }
4471 
4472  template <vtkm::IdComponent Index>
4473  VTKM_EXEC_CONT auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
4474  {
4475  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
4476  }
4477 
4479  template <typename Function, typename... Args>
4481  auto Apply(Function&& f, Args&&... args)
4482  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16, Value17, Value18, Value19))
4483  {
4484  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16, Value17, Value18, Value19);
4485  }
4487  template <typename Function, typename... Args>
4489  auto Apply(Function&& f, Args&&... args) const
4490  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16, Value17, Value18, Value19))
4491  {
4492  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16, Value17, Value18, Value19);
4493  }
4494 
4496  template <typename Function>
4497  VTKM_EXEC_CONT void ForEach(Function&& f)
4498  {
4499  vtkm::ForEach(*this, std::forward<Function>(f));
4500  }
4502  template <typename Function>
4503  VTKM_EXEC_CONT void ForEach(Function&& f) const
4504  {
4505  vtkm::ForEach(*this, std::forward<Function>(f));
4506  }
4507 
4509  template <typename Function>
4510  VTKM_EXEC_CONT auto Transform(Function&& f)
4511  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
4512  {
4513  return vtkm::Transform(*this, std::forward<Function>(f));
4514  }
4516  template <typename Function>
4517  VTKM_EXEC_CONT auto Transform(Function&& f) const
4518  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
4519  {
4520  return vtkm::Transform(*this, std::forward<Function>(f));
4521  }
4522 };
4523 
4524 
4525 // Fallback case for tuples with > 20 items.
4526 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20, typename... Ts>
4527 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts...>
4528 {
4530  static T0 ElementTypeI(vtkm::internal::IndexTag<0>);
4531  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>)
4532  {
4533  return this->Value0;
4534  }
4535  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T0>& GetImpl(vtkm::internal::IndexTag<0>) const
4536  {
4537  return this->Value0;
4538  }
4539 
4541  static T1 ElementTypeI(vtkm::internal::IndexTag<1>);
4542  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>)
4543  {
4544  return this->Value1;
4545  }
4546  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T1>& GetImpl(vtkm::internal::IndexTag<1>) const
4547  {
4548  return this->Value1;
4549  }
4550 
4552  static T2 ElementTypeI(vtkm::internal::IndexTag<2>);
4553  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>)
4554  {
4555  return this->Value2;
4556  }
4557  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T2>& GetImpl(vtkm::internal::IndexTag<2>) const
4558  {
4559  return this->Value2;
4560  }
4561 
4563  static T3 ElementTypeI(vtkm::internal::IndexTag<3>);
4564  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>)
4565  {
4566  return this->Value3;
4567  }
4568  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T3>& GetImpl(vtkm::internal::IndexTag<3>) const
4569  {
4570  return this->Value3;
4571  }
4572 
4574  static T4 ElementTypeI(vtkm::internal::IndexTag<4>);
4575  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>)
4576  {
4577  return this->Value4;
4578  }
4579  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T4>& GetImpl(vtkm::internal::IndexTag<4>) const
4580  {
4581  return this->Value4;
4582  }
4583 
4585  static T5 ElementTypeI(vtkm::internal::IndexTag<5>);
4586  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>)
4587  {
4588  return this->Value5;
4589  }
4590  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T5>& GetImpl(vtkm::internal::IndexTag<5>) const
4591  {
4592  return this->Value5;
4593  }
4594 
4596  static T6 ElementTypeI(vtkm::internal::IndexTag<6>);
4597  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>)
4598  {
4599  return this->Value6;
4600  }
4601  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T6>& GetImpl(vtkm::internal::IndexTag<6>) const
4602  {
4603  return this->Value6;
4604  }
4605 
4607  static T7 ElementTypeI(vtkm::internal::IndexTag<7>);
4608  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>)
4609  {
4610  return this->Value7;
4611  }
4612  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T7>& GetImpl(vtkm::internal::IndexTag<7>) const
4613  {
4614  return this->Value7;
4615  }
4616 
4618  static T8 ElementTypeI(vtkm::internal::IndexTag<8>);
4619  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>)
4620  {
4621  return this->Value8;
4622  }
4623  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T8>& GetImpl(vtkm::internal::IndexTag<8>) const
4624  {
4625  return this->Value8;
4626  }
4627 
4629  static T9 ElementTypeI(vtkm::internal::IndexTag<9>);
4630  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>)
4631  {
4632  return this->Value9;
4633  }
4634  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T9>& GetImpl(vtkm::internal::IndexTag<9>) const
4635  {
4636  return this->Value9;
4637  }
4638 
4639  T10 Value10;
4640  static T10 ElementTypeI(vtkm::internal::IndexTag<10>);
4641  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T10>& GetImpl(vtkm::internal::IndexTag<10>)
4642  {
4643  return this->Value10;
4644  }
4645  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T10>& GetImpl(vtkm::internal::IndexTag<10>) const
4646  {
4647  return this->Value10;
4648  }
4649 
4650  T11 Value11;
4651  static T11 ElementTypeI(vtkm::internal::IndexTag<11>);
4652  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T11>& GetImpl(vtkm::internal::IndexTag<11>)
4653  {
4654  return this->Value11;
4655  }
4656  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T11>& GetImpl(vtkm::internal::IndexTag<11>) const
4657  {
4658  return this->Value11;
4659  }
4660 
4661  T12 Value12;
4662  static T12 ElementTypeI(vtkm::internal::IndexTag<12>);
4663  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T12>& GetImpl(vtkm::internal::IndexTag<12>)
4664  {
4665  return this->Value12;
4666  }
4667  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T12>& GetImpl(vtkm::internal::IndexTag<12>) const
4668  {
4669  return this->Value12;
4670  }
4671 
4672  T13 Value13;
4673  static T13 ElementTypeI(vtkm::internal::IndexTag<13>);
4674  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T13>& GetImpl(vtkm::internal::IndexTag<13>)
4675  {
4676  return this->Value13;
4677  }
4678  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T13>& GetImpl(vtkm::internal::IndexTag<13>) const
4679  {
4680  return this->Value13;
4681  }
4682 
4683  T14 Value14;
4684  static T14 ElementTypeI(vtkm::internal::IndexTag<14>);
4685  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T14>& GetImpl(vtkm::internal::IndexTag<14>)
4686  {
4687  return this->Value14;
4688  }
4689  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T14>& GetImpl(vtkm::internal::IndexTag<14>) const
4690  {
4691  return this->Value14;
4692  }
4693 
4694  T15 Value15;
4695  static T15 ElementTypeI(vtkm::internal::IndexTag<15>);
4696  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T15>& GetImpl(vtkm::internal::IndexTag<15>)
4697  {
4698  return this->Value15;
4699  }
4700  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T15>& GetImpl(vtkm::internal::IndexTag<15>) const
4701  {
4702  return this->Value15;
4703  }
4704 
4705  T16 Value16;
4706  static T16 ElementTypeI(vtkm::internal::IndexTag<16>);
4707  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T16>& GetImpl(vtkm::internal::IndexTag<16>)
4708  {
4709  return this->Value16;
4710  }
4711  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T16>& GetImpl(vtkm::internal::IndexTag<16>) const
4712  {
4713  return this->Value16;
4714  }
4715 
4716  T17 Value17;
4717  static T17 ElementTypeI(vtkm::internal::IndexTag<17>);
4718  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T17>& GetImpl(vtkm::internal::IndexTag<17>)
4719  {
4720  return this->Value17;
4721  }
4722  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T17>& GetImpl(vtkm::internal::IndexTag<17>) const
4723  {
4724  return this->Value17;
4725  }
4726 
4727  T18 Value18;
4728  static T18 ElementTypeI(vtkm::internal::IndexTag<18>);
4729  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T18>& GetImpl(vtkm::internal::IndexTag<18>)
4730  {
4731  return this->Value18;
4732  }
4733  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T18>& GetImpl(vtkm::internal::IndexTag<18>) const
4734  {
4735  return this->Value18;
4736  }
4737 
4738  T19 Value19;
4739  static T19 ElementTypeI(vtkm::internal::IndexTag<19>);
4740  VTKM_EXEC_CONT vtkm::internal::remove_cvref<T19>& GetImpl(vtkm::internal::IndexTag<19>)
4741  {
4742  return this->Value19;
4743  }
4744  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<T19>& GetImpl(vtkm::internal::IndexTag<19>) const
4745  {
4746  return this->Value19;
4747  }
4748 
4749 
4750  // Implement the "extra" objects in a sub-Tuple
4751  using RemainingValuesType = vtkm::Tuple<T20, Ts...>;
4753 
4754  template <vtkm::IdComponent Index>
4756  ElementTypeI(vtkm::internal::IndexTag<Index>);
4757 
4758  template <typename vtkm::IdComponent Index>
4759  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<vtkm::TupleElement<Index - 20, RemainingValuesType>>&
4760  GetImpl(vtkm::internal::IndexTag<Index>) { return vtkm::Get<Index - 20>(this->RemainingValues); }
4761  template <typename vtkm::IdComponent Index>
4762  VTKM_EXEC_CONT const vtkm::internal::remove_cvref<vtkm::TupleElement<Index - 20, RemainingValuesType>>&
4763  GetImpl(vtkm::internal::IndexTag<Index>) const { return vtkm::Get<Index - 20>(this->RemainingValues); }
4764 
4765  template <vtkm::IdComponent, typename>
4766  friend struct detail::TupleElementImpl;
4767 
4768 public:
4769  static constexpr vtkm::IdComponent Size =
4770  21 + static_cast<vtkm::IdComponent>(sizeof...(Ts));
4771  template <vtkm::IdComponent Index>
4772  using ElementType = vtkm::TupleElement<Index, Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts...>>;
4773 
4774  Tuple() = default;
4775  Tuple(Tuple&&) = default;
4776  Tuple(const Tuple&) = default;
4777  ~Tuple() = default;
4778  Tuple& operator=(Tuple&&) = default;
4779  Tuple& operator=(const Tuple&) = default;
4780 
4782  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12, typename A13, typename A14, typename A15, typename A16, typename A17, typename A18, typename A19, typename... As>
4783  VTKM_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3, A4&& a4, A5&& a5, A6&& a6, A7&& a7, A8&& a8, A9&& a9, A10&& a10, A11&& a11, A12&& a12, A13&& a13, A14&& a14, A15&& a15, A16&& a16, A17&& a17, A18&& a18, A19&& a19, As&&... remainingArgs)
4784  : Value0(std::forward<A0>(a0))
4785  , Value1(std::forward<A1>(a1))
4786  , Value2(std::forward<A2>(a2))
4787  , Value3(std::forward<A3>(a3))
4788  , Value4(std::forward<A4>(a4))
4789  , Value5(std::forward<A5>(a5))
4790  , Value6(std::forward<A6>(a6))
4791  , Value7(std::forward<A7>(a7))
4792  , Value8(std::forward<A8>(a8))
4793  , Value9(std::forward<A9>(a9))
4794  , Value10(std::forward<A10>(a10))
4795  , Value11(std::forward<A11>(a11))
4796  , Value12(std::forward<A12>(a12))
4797  , Value13(std::forward<A13>(a13))
4798  , Value14(std::forward<A14>(a14))
4799  , Value15(std::forward<A15>(a15))
4800  , Value16(std::forward<A16>(a16))
4801  , Value17(std::forward<A17>(a17))
4802  , Value18(std::forward<A18>(a18))
4803  , Value19(std::forward<A19>(a19))
4804  , RemainingValues(std::forward<As>(remainingArgs)...)
4805  {
4806  }
4807 
4808  template <vtkm::IdComponent Index>
4809  VTKM_EXEC_CONT auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
4810  {
4811  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
4812  }
4813 
4814  template <vtkm::IdComponent Index>
4815  VTKM_EXEC_CONT auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag<Index>{}))
4816  {
4817  return this->GetImpl(vtkm::internal::IndexTag<Index>{});
4818  }
4819 
4821  template <typename Function, typename... Args>
4823  auto Apply(Function&& f, Args&&... args)
4824  -> decltype(this->RemainingValues.Apply(std::forward<Function>(f),
4825  std::forward<Args>(args)...,
4826  this->Value0,
4827  this->Value1,
4828  this->Value2,
4829  this->Value3,
4830  this->Value4,
4831  this->Value5,
4832  this->Value6,
4833  this->Value7,
4834  this->Value8,
4835  this->Value9,
4836  this->Value10,
4837  this->Value11,
4838  this->Value12,
4839  this->Value13,
4840  this->Value14,
4841  this->Value15,
4842  this->Value16,
4843  this->Value17,
4844  this->Value18,
4845  this->Value19))
4846  {
4847  return this->RemainingValues.Apply(std::forward<Function>(f),
4848  std::forward<Args>(args)...,
4849  this->Value0,
4850  this->Value1,
4851  this->Value2,
4852  this->Value3,
4853  this->Value4,
4854  this->Value5,
4855  this->Value6,
4856  this->Value7,
4857  this->Value8,
4858  this->Value9,
4859  this->Value10,
4860  this->Value11,
4861  this->Value12,
4862  this->Value13,
4863  this->Value14,
4864  this->Value15,
4865  this->Value16,
4866  this->Value17,
4867  this->Value18,
4868  this->Value19);
4869  }
4871  template <typename Function, typename... Args>
4873  auto Apply(Function&& f, Args&&... args) const
4874  -> decltype(this->RemainingValues.Apply(std::forward<Function>(f),
4875  std::forward<Args>(args)...,
4876  this->Value0,
4877  this->Value1,
4878  this->Value2,
4879  this->Value3,
4880  this->Value4,
4881  this->Value5,
4882  this->Value6,
4883  this->Value7,
4884  this->Value8,
4885  this->Value9,
4886  this->Value10,
4887  this->Value11,
4888  this->Value12,
4889  this->Value13,
4890  this->Value14,
4891  this->Value15,
4892  this->Value16,
4893  this->Value17,
4894  this->Value18,
4895  this->Value19))
4896  {
4897  return this->RemainingValues.Apply(std::forward<Function>(f),
4898  std::forward<Args>(args)...,
4899  this->Value0,
4900  this->Value1,
4901  this->Value2,
4902  this->Value3,
4903  this->Value4,
4904  this->Value5,
4905  this->Value6,
4906  this->Value7,
4907  this->Value8,
4908  this->Value9,
4909  this->Value10,
4910  this->Value11,
4911  this->Value12,
4912  this->Value13,
4913  this->Value14,
4914  this->Value15,
4915  this->Value16,
4916  this->Value17,
4917  this->Value18,
4918  this->Value19);
4919  }
4920 
4922  template <typename Function>
4923  VTKM_EXEC_CONT void ForEach(Function&& f)
4924  {
4925  vtkm::ForEach(*this, std::forward<Function>(f));
4926  }
4928  template <typename Function>
4929  VTKM_EXEC_CONT void ForEach(Function&& f) const
4930  {
4931  vtkm::ForEach(*this, std::forward<Function>(f));
4932  }
4933 
4935  template <typename Function>
4936  VTKM_EXEC_CONT auto Transform(Function&& f)
4937  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
4938  {
4939  return vtkm::Transform(*this, std::forward<Function>(f));
4940  }
4942  template <typename Function>
4943  VTKM_EXEC_CONT auto Transform(Function&& f) const
4944  -> decltype(vtkm::Transform(*this, std::forward<Function>(f)))
4945  {
4946  return vtkm::Transform(*this, std::forward<Function>(f));
4947  }
4948 };
4949 
4951 
4952 // clang-format on
4953 
4954 } // namespace vtkm
4955 
4956 #endif //vtk_m_Tuple_h
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const vtkm::internal::remove_cvref< T15 > & GetImpl(vtkm::internal::IndexTag< 15 >) const
Definition: Tuple.h:3462
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >) const
Definition: Tuple.h:2507
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value11
T11 Value11
Definition: Tuple.h:2611
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >)
Definition: Tuple.h:1887
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >)
Definition: Tuple.h:4290
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >)
Definition: Tuple.h:2304
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
vtkm::internal::remove_cvref< T11 > & GetImpl(vtkm::internal::IndexTag< 11 >)
Definition: Tuple.h:3414
vtkm::Tuple< T0 >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)..., Value0))
Definition: Tuple.h:328
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Value1
T1 Value1
Definition: Tuple.h:1808
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >) const
Definition: Tuple.h:3665
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value13
T13 Value13
Definition: Tuple.h:3434
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
const vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >) const
Definition: Tuple.h:910
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:1767
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value6
T6 Value6
Definition: Tuple.h:2313
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
vtkm::internal::remove_cvref< T16 > & GetImpl(vtkm::internal::IndexTag< 16 >)
Definition: Tuple.h:3760
vtkm::Tuple< T0, T1, T2 >::GetImpl
const vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >) const
Definition: Tuple.h:483
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const vtkm::internal::remove_cvref< T15 > & GetImpl(vtkm::internal::IndexTag< 15 >) const
Definition: Tuple.h:4371
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >)
Definition: Tuple.h:4268
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >)
Definition: Tuple.h:2293
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Transform
auto Transform(Function &&f) const -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:2006
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >)
Definition: Tuple.h:2249
vtkm::Tuple< T0 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:342
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >)
Definition: Tuple.h:3381
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Transform
auto Transform(Function &&f) const -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:1580
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:4497
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >)
Definition: Tuple.h:928
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >)
Definition: Tuple.h:4257
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::ElementType
vtkm::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 > > ElementType
Definition: Tuple.h:1929
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >)
Definition: Tuple.h:4246
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Transform
auto Transform(Function &&f) -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:3868
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >) const
Definition: Tuple.h:2551
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Tuple
Tuple(A0 &&a0, A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5, A6 &&a6, A7 &&a7, A8 &&a8, A9 &&a9, A10 &&a10, A11 &&a11, A12 &&a12, A13 &&a13)
Definition: Tuple.h:2666
vtkm::Tuple< T0, T1, T2, T3 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:711
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value15
T15 Value15
Definition: Tuple.h:3456
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::ElementType
vtkm::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7 > > ElementType
Definition: Tuple.h:1311
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value12
T12 Value12
Definition: Tuple.h:2877
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:4503
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >)
Definition: Tuple.h:3887
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >)
Definition: Tuple.h:3326
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >) const
Definition: Tuple.h:4217
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value6
T6 Value6
Definition: Tuple.h:2082
vtkm::TupleElement
typename detail::TupleElementImpl< Index, TupleType >::type TupleElement
Becomes the type of the given index for the given vtkm::Tuple.
Definition: Tuple.h:63
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Value1
T1 Value1
Definition: Tuple.h:1223
vtkm::Tuple< T0, T1, T2 >::GetImpl
const vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >) const
Definition: Tuple.h:494
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const vtkm::internal::remove_cvref< T10 > & GetImpl(vtkm::internal::IndexTag< 10 >) const
Definition: Tuple.h:4001
vtkm::Tuple< T0, T1 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:447
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >)
Definition: Tuple.h:3113
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >)
Definition: Tuple.h:3069
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >)
Definition: Tuple.h:2315
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Value1
T1 Value1
Definition: Tuple.h:3593
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >)
Definition: Tuple.h:1614
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Value4
T4 Value4
Definition: Tuple.h:1634
vtkm::Tuple< T0 >::Tuple
Tuple(A0 &&a0)
Definition: Tuple.h:300
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Tuple
Tuple(A0 &&a0, A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5, A6 &&a6, A7 &&a7, A8 &&a8, A9 &&a9, A10 &&a10, A11 &&a11, A12 &&a12, A13 &&a13, A14 &&a14, A15 &&a15)
Definition: Tuple.h:3210
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >)
Definition: Tuple.h:2580
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >) const
Definition: Tuple.h:2264
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Value6
T6 Value6
Definition: Tuple.h:4595
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >)
Definition: Tuple.h:884
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >)
Definition: Tuple.h:1854
vtkm::Tuple< T0, T1, T2, T3 >::Value1
T1 Value1
Definition: Tuple.h:611
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13))
Definition: Tuple.h:2707
vtkm::Tuple< T0, T1, T2, T3 >::GetImpl
const vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >) const
Definition: Tuple.h:606
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Value0
T0 Value0
Definition: Tuple.h:1041
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14))
Definition: Tuple.h:2974
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
const vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >) const
Definition: Tuple.h:1445
vtkm::Tuple< T0, T1 >::GetImpl
vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >)
Definition: Tuple.h:379
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9))
Definition: Tuple.h:1751
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value9
T9 Value9
Definition: Tuple.h:2844
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >) const
Definition: Tuple.h:4283
vtkm::Tuple< T0, T1, T2 >::Get
auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:546
vtkm::Tuple< T0, T1, T2 >::Transform
auto Transform(Function &&f) const -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:590
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
vtkm::internal::remove_cvref< T15 > & GetImpl(vtkm::internal::IndexTag< 15 >)
Definition: Tuple.h:3458
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10))
Definition: Tuple.h:1978
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:2721
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Value13
T13 Value13
Definition: Tuple.h:3725
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Tuple
Tuple(A0 &&a0, A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5, A6 &&a6, A7 &&a7, A8 &&a8, A9 &&a9, A10 &&a10, A11 &&a11, A12 &&a12, A13 &&a13, A14 &&a14, A15 &&a15, A16 &&a16, A17 &&a17)
Definition: Tuple.h:3802
vtkm
Groups connected points that have the same field value.
Definition: Atomic.h:19
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value3
T3 Value3
Definition: Tuple.h:2049
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >)
Definition: Tuple.h:1247
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11))
Definition: Tuple.h:2201
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:3267
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >)
Definition: Tuple.h:895
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const vtkm::internal::remove_cvref< T11 > & GetImpl(vtkm::internal::IndexTag< 11 >) const
Definition: Tuple.h:2374
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >) const
Definition: Tuple.h:2066
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value2
T2 Value2
Definition: Tuple.h:2038
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const vtkm::internal::remove_cvref< T18 > & GetImpl(vtkm::internal::IndexTag< 18 >) const
Definition: Tuple.h:4089
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const vtkm::internal::remove_cvref< T13 > & GetImpl(vtkm::internal::IndexTag< 13 >) const
Definition: Tuple.h:3731
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Value7
T7 Value7
Definition: Tuple.h:1289
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
vtkm::internal::remove_cvref< T11 > & GetImpl(vtkm::internal::IndexTag< 11 >)
Definition: Tuple.h:4008
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >)
Definition: Tuple.h:1076
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
vtkm::internal::remove_cvref< T12 > & GetImpl(vtkm::internal::IndexTag< 12 >)
Definition: Tuple.h:4019
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Transform
auto Transform(Function &&f) -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:1378
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Value5
T5 Value5
Definition: Tuple.h:3637
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >)
Definition: Tuple.h:3909
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
vtkm::internal::remove_cvref< T11 > & GetImpl(vtkm::internal::IndexTag< 11 >)
Definition: Tuple.h:2370
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
const vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >) const
Definition: Tuple.h:1803
vtkm::Get
auto Get(const vtkm::Tuple< Ts... > &tuple)
Retrieve the object from a vtkm::Tuple at the given index.
Definition: Tuple.h:81
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(this->RemainingValues.Apply(std::forward< Function >(f), std::forward< Args >(args)..., this->Value0, this->Value1, this->Value2, this->Value3, this->Value4, this->Value5, this->Value6, this->Value7, this->Value8, this->Value9, this->Value10, this->Value11, this->Value12, this->Value13, this->Value14, this->Value15, this->Value16, this->Value17, this->Value18, this->Value19))
Definition: Tuple.h:4823
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::ElementType
vtkm::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5 > > ElementType
Definition: Tuple.h:959
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
const vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >) const
Definition: Tuple.h:1880
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >) const
Definition: Tuple.h:4228
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >)
Definition: Tuple.h:2558
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
vtkm::internal::remove_cvref< T12 > & GetImpl(vtkm::internal::IndexTag< 12 >)
Definition: Tuple.h:3146
Types.h
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Value3
T3 Value3
Definition: Tuple.h:1623
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Value1
T1 Value1
Definition: Tuple.h:1601
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value6
T6 Value6
Definition: Tuple.h:3078
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value5
T5 Value5
Definition: Tuple.h:2071
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Tuple
Tuple(A0 &&a0, A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5, A6 &&a6, A7 &&a7, A8 &&a8, A9 &&a9, A10 &&a10, A11 &&a11, A12 &&a12, A13 &&a13, A14 &&a14, A15 &&a15, A16 &&a16, A17 &&a17, A18 &&a18)
Definition: Tuple.h:4116
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::ElementType
vtkm::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 > > ElementType
Definition: Tuple.h:3791
vtkm::Tuple< T0, T1, T2, T3, T4 >::GetImpl
const vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >) const
Definition: Tuple.h:774
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value1
T1 Value1
Definition: Tuple.h:2501
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >)
Definition: Tuple.h:2062
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
const vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >) const
Definition: Tuple.h:1836
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const vtkm::internal::remove_cvref< T12 > & GetImpl(vtkm::internal::IndexTag< 12 >) const
Definition: Tuple.h:4023
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
const vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >) const
Definition: Tuple.h:1091
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Value2
T2 Value2
Definition: Tuple.h:1417
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const vtkm::internal::remove_cvref< T12 > & GetImpl(vtkm::internal::IndexTag< 12 >) const
Definition: Tuple.h:2883
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
vtkm::internal::remove_cvref< T10 > & GetImpl(vtkm::internal::IndexTag< 10 >)
Definition: Tuple.h:2602
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Value8
T8 Value8
Definition: Tuple.h:3973
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Get
auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:2952
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >) const
Definition: Tuple.h:3297
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
const vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >) const
Definition: Tuple.h:1262
VTKM_EXEC_CONT
#define VTKM_EXEC_CONT
Definition: ExportMacros.h:52
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >)
Definition: Tuple.h:3920
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const vtkm::internal::remove_cvref< T18 > & GetImpl(vtkm::internal::IndexTag< 18 >) const
Definition: Tuple.h:4404
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Value16
T16 Value16
Definition: Tuple.h:3758
vtkm::get
auto get(const vtkm::Tuple< Ts... > &tuple) -> decltype(vtkm::Get< static_cast< vtkm::IdComponent >(Index)>(tuple))
Compatible with std::get for vtkm::Tuple.
Definition: Tuple.h:105
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >)
Definition: Tuple.h:3584
vtkm::tuple_element_t
typename tuple_element< Index, TupleType >::type tuple_element_t
Compatible with std::tuple_element_t for vtkm::Tuple.
Definition: Tuple.h:76
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Transform
auto Transform(Function &&f) -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:4936
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >) const
Definition: Tuple.h:2253
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Value16
T16 Value16
Definition: Tuple.h:4705
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
const vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >) const
Definition: Tuple.h:1629
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
const vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >) const
Definition: Tuple.h:1825
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >)
Definition: Tuple.h:1054
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
const vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >) const
Definition: Tuple.h:1102
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Value3
T3 Value3
Definition: Tuple.h:4562
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
vtkm::internal::remove_cvref< T14 > & GetImpl(vtkm::internal::IndexTag< 14 >)
Definition: Tuple.h:4041
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:1365
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const vtkm::internal::remove_cvref< T15 > & GetImpl(vtkm::internal::IndexTag< 15 >) const
Definition: Tuple.h:3183
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Get
auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:1737
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Value8
T8 Value8
Definition: Tuple.h:1678
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Get
auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:1956
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >)
Definition: Tuple.h:1636
vtkm::Tuple< T0, T1, T2 >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2))
Definition: Tuple.h:562
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
const vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >) const
Definition: Tuple.h:4623
vtkm::Tuple<>
Definition: Tuple.h:228
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Value19
T19 Value19
Definition: Tuple.h:4738
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value5
T5 Value5
Definition: Tuple.h:3067
vtkm::Tuple<>::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)...))
Definition: Tuple.h:235
vtkm::Tuple< T0, T1, T2, T3 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:705
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
const vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >) const
Definition: Tuple.h:1295
vtkm::IdComponent
vtkm::Int32 IdComponent
Base type to use to index small lists.
Definition: Types.h:194
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
vtkm::internal::remove_cvref< T15 > & GetImpl(vtkm::internal::IndexTag< 15 >)
Definition: Tuple.h:3749
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >) const
Definition: Tuple.h:2121
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
const vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >) const
Definition: Tuple.h:1695
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
const vtkm::internal::remove_cvref< T17 > & GetImpl(vtkm::internal::IndexTag< 17 >) const
Definition: Tuple.h:4722
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::ElementType
vtkm::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 > > ElementType
Definition: Tuple.h:4105
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >) const
Definition: Tuple.h:3968
vtkm::Transform
auto Transform(const TupleType &&tuple, Function &&f) -> decltype(Apply(tuple, detail::TupleTransformFunctor(), std::forward< Function >(f)))
Construct a new vtkm::Tuple by applying a function to each value.
Definition: Tuple.h:213
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
const vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >) const
Definition: Tuple.h:1401
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const vtkm::internal::remove_cvref< T13 > & GetImpl(vtkm::internal::IndexTag< 13 >) const
Definition: Tuple.h:2639
vtkm::Tuple< T0, T1, T2, T3, T4 >::GetImpl
const vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >) const
Definition: Tuple.h:752
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:1017
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value2
T2 Value2
Definition: Tuple.h:3313
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Value17
T17 Value17
Definition: Tuple.h:3769
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >) const
Definition: Tuple.h:2518
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
vtkm::internal::remove_cvref< T13 > & GetImpl(vtkm::internal::IndexTag< 13 >)
Definition: Tuple.h:4030
vtkm::Tuple< T0, T1 >::GetImpl
const vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >) const
Definition: Tuple.h:372
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
vtkm::internal::remove_cvref< T11 > & GetImpl(vtkm::internal::IndexTag< 11 >)
Definition: Tuple.h:2139
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15))
Definition: Tuple.h:3245
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >)
Definition: Tuple.h:1043
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >)
Definition: Tuple.h:1625
vtkm::Tuple< T0, T1, T2 >::GetImpl
vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >)
Definition: Tuple.h:501
vtkm::Tuple< T0, T1, T2 >::Value2
T2 Value2
Definition: Tuple.h:499
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Value7
T7 Value7
Definition: Tuple.h:4277
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:2982
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >) const
Definition: Tuple.h:3330
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Value4
T4 Value4
Definition: Tuple.h:1841
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value7
T7 Value7
Definition: Tuple.h:3368
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >) const
Definition: Tuple.h:3946
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8))
Definition: Tuple.h:1552
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Value6
T6 Value6
Definition: Tuple.h:1461
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::ElementType
vtkm::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 > > ElementType
Definition: Tuple.h:2921
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
const vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >) const
Definition: Tuple.h:1080
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >)
Definition: Tuple.h:3606
vtkm::Tuple< T0 >::Value0
T0 Value0
Definition: Tuple.h:267
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
const vtkm::internal::remove_cvref< T15 > & GetImpl(vtkm::internal::IndexTag< 15 >) const
Definition: Tuple.h:4700
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >) const
Definition: Tuple.h:3610
vtkm::Tuple< T0, T1, T2 >::Get
auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:540
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >)
Definition: Tuple.h:1691
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value4
T4 Value4
Definition: Tuple.h:2060
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:2466
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11))
Definition: Tuple.h:2209
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
const vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >) const
Definition: Tuple.h:1858
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Value3
T3 Value3
Definition: Tuple.h:4233
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const vtkm::internal::remove_cvref< T10 > & GetImpl(vtkm::internal::IndexTag< 10 >) const
Definition: Tuple.h:3128
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::ElementType
vtkm::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 > > ElementType
Definition: Tuple.h:4431
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Value3
T3 Value3
Definition: Tuple.h:1245
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
const vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >) const
Definition: Tuple.h:1456
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Get
auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:1152
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >)
Definition: Tuple.h:1419
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
const vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >) const
Definition: Tuple.h:1284
vtkm::Tuple< T0, T1, T2, T3, T4 >::Transform
auto Transform(Function &&f) -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:865
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:2460
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >)
Definition: Tuple.h:3392
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Value4
T4 Value4
Definition: Tuple.h:4573
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Value4
T4 Value4
Definition: Tuple.h:4244
vtkm::Tuple< T0, T1 >::ElementType
vtkm::TupleElement< Index, Tuple< T0, T1 > > ElementType
Definition: Tuple.h:399
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
const vtkm::internal::remove_cvref< T16 > & GetImpl(vtkm::internal::IndexTag< 16 >) const
Definition: Tuple.h:4711
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Get
auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:3231
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Value10
T10 Value10
Definition: Tuple.h:4310
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Value2
T2 Value2
Definition: Tuple.h:1612
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::ElementType
vtkm::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 > > ElementType
Definition: Tuple.h:3199
vtkm::Tuple< T0, T1 >::Value0
T0 Value0
Definition: Tuple.h:366
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9))
Definition: Tuple.h:1759
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >) const
Definition: Tuple.h:2773
vtkm::make_tuple
auto make_tuple(Ts &&... args) -> decltype(vtkm::MakeTuple(std::forward< Ts >(args)...))
Compatible with std::make_tuple for vtkm::Tuple.
Definition: Tuple.h:133
vtkm::Tuple< T0, T1, T2, T3, T4 >::GetImpl
vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >)
Definition: Tuple.h:781
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >) const
Definition: Tuple.h:2540
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12))
Definition: Tuple.h:2452
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value1
T1 Value1
Definition: Tuple.h:2756
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Value10
T10 Value10
Definition: Tuple.h:4639
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:2715
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Transform
auto Transform(Function &&f) -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:4510
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const vtkm::internal::remove_cvref< T13 > & GetImpl(vtkm::internal::IndexTag< 13 >) const
Definition: Tuple.h:2894
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Value12
T12 Value12
Definition: Tuple.h:4332
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value8
T8 Value8
Definition: Tuple.h:2335
vtkm::Tuple< T0 >::GetImpl
const vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >) const
Definition: Tuple.h:273
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >) const
Definition: Tuple.h:2297
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value7
T7 Value7
Definition: Tuple.h:2093
vtkm::Tuple< T0, T1, T2 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:576
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >)
Definition: Tuple.h:3047
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value8
T8 Value8
Definition: Tuple.h:2578
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
const vtkm::internal::remove_cvref< T10 > & GetImpl(vtkm::internal::IndexTag< 10 >) const
Definition: Tuple.h:4645
vtkm::Tuple< T0, T1 >::Value1
T1 Value1
Definition: Tuple.h:377
vtkm::Tuple< T0, T1, T2, T3, T4 >::ElementType
vtkm::TupleElement< Index, Tuple< T0, T1, T2, T3, T4 > > ElementType
Definition: Tuple.h:801
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value13
T13 Value13
Definition: Tuple.h:2888
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value2
T2 Value2
Definition: Tuple.h:2512
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >)
Definition: Tuple.h:2106
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value11
T11 Value11
Definition: Tuple.h:2137
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >)
Definition: Tuple.h:1291
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >)
Definition: Tuple.h:3683
vtkm::Tuple< T0, T1 >::Transform
auto Transform(Function &&f) -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:460
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Get
auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:4467
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const vtkm::internal::remove_cvref< T12 > & GetImpl(vtkm::internal::IndexTag< 12 >) const
Definition: Tuple.h:4338
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value1
T1 Value1
Definition: Tuple.h:2258
vtkm::ForEach
void ForEach(const vtkm::Tuple< Ts... > &tuple, Function &&f)
Call a function with each value of the given tuple.
Definition: Tuple.h:193
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:3558
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Value5
T5 Value5
Definition: Tuple.h:1096
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >)
Definition: Tuple.h:2260
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Get
auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:1335
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Value14
T14 Value14
Definition: Tuple.h:3736
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
const vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >) const
Definition: Tuple.h:1618
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const vtkm::internal::remove_cvref< T11 > & GetImpl(vtkm::internal::IndexTag< 11 >) const
Definition: Tuple.h:2872
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const vtkm::internal::remove_cvref< T17 > & GetImpl(vtkm::internal::IndexTag< 17 >) const
Definition: Tuple.h:4078
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
vtkm::internal::remove_cvref< T14 > & GetImpl(vtkm::internal::IndexTag< 14 >)
Definition: Tuple.h:3447
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Get
auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:1530
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >)
Definition: Tuple.h:1603
vtkm::TupleSize
std::integral_constant< vtkm::IdComponent, TupleType::Size > TupleSize
Get the size of a tuple.
Definition: Tuple.h:42
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >) const
Definition: Tuple.h:2496
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value0
T0 Value0
Definition: Tuple.h:2016
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >) const
Definition: Tuple.h:2286
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
const vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >) const
Definition: Tuple.h:888
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16, Value17))
Definition: Tuple.h:3847
vtkm::Tuple< T0 >::Transform
auto Transform(Function &&f) -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:349
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >) const
Definition: Tuple.h:3676
vtkm::Tuple< T0, T1, T2, T3, T4 >::Transform
auto Transform(Function &&f) const -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:872
vtkm::Tuple< T0, T1, T2, T3, T4 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:852
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value7
T7 Value7
Definition: Tuple.h:2822
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >)
Definition: Tuple.h:4553
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >) const
Definition: Tuple.h:3913
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::ElementType
vtkm::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 > > ElementType
Definition: Tuple.h:1711
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
vtkm::internal::remove_cvref< T12 > & GetImpl(vtkm::internal::IndexTag< 12 >)
Definition: Tuple.h:4334
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >)
Definition: Tuple.h:1214
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value3
T3 Value3
Definition: Tuple.h:2523
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >)
Definition: Tuple.h:1876
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value1
T1 Value1
Definition: Tuple.h:2027
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const vtkm::internal::remove_cvref< T14 > & GetImpl(vtkm::internal::IndexTag< 14 >) const
Definition: Tuple.h:4360
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16))
Definition: Tuple.h:3536
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >) const
Definition: Tuple.h:3687
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value10
T10 Value10
Definition: Tuple.h:3401
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >) const
Definition: Tuple.h:2352
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >) const
Definition: Tuple.h:2033
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >)
Definition: Tuple.h:3091
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16, Value17))
Definition: Tuple.h:3839
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >)
Definition: Tuple.h:2051
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const vtkm::internal::remove_cvref< T13 > & GetImpl(vtkm::internal::IndexTag< 13 >) const
Definition: Tuple.h:3440
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >)
Definition: Tuple.h:4224
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >)
Definition: Tuple.h:1258
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Transform
auto Transform(Function &&f) const -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:2735
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >) const
Definition: Tuple.h:3363
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >) const
Definition: Tuple.h:4239
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value6
T6 Value6
Definition: Tuple.h:2556
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const vtkm::internal::remove_cvref< T13 > & GetImpl(vtkm::internal::IndexTag< 13 >) const
Definition: Tuple.h:4349
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Value2
T2 Value2
Definition: Tuple.h:3907
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Get
auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:2436
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Value4
T4 Value4
Definition: Tuple.h:1256
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >) const
Definition: Tuple.h:2584
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >) const
Definition: Tuple.h:3040
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >)
Definition: Tuple.h:4235
vtkm::Tuple< T0, T1, T2, T3 >::Tuple
Tuple(A0 &&a0, A1 &&a1, A2 &&a2, A3 &&a3)
Definition: Tuple.h:666
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >)
Definition: Tuple.h:917
vtkm::Tuple< T0 >::Get
auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:306
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >) const
Definition: Tuple.h:3374
vtkm::Tuple< T0, T1, T2, T3 >::Value0
T0 Value0
Definition: Tuple.h:600
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:3855
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
const vtkm::internal::remove_cvref< T18 > & GetImpl(vtkm::internal::IndexTag< 18 >) const
Definition: Tuple.h:4733
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
const vtkm::internal::remove_cvref< vtkm::TupleElement< Index - 20, RemainingValuesType > > & GetImpl(vtkm::internal::IndexTag< Index >)
Definition: Tuple.h:4760
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value2
T2 Value2
Definition: Tuple.h:2269
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:4170
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value15
T15 Value15
Definition: Tuple.h:3177
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >)
Definition: Tuple.h:3304
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value10
T10 Value10
Definition: Tuple.h:2357
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const vtkm::internal::remove_cvref< T13 > & GetImpl(vtkm::internal::IndexTag< 13 >) const
Definition: Tuple.h:3161
vtkm::tuple_element
Compatible with std::tuple_element for vtkm::Tuple.
Definition: Tuple.h:68
vtkm::Tuple< T0, T1 >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)..., Value0, Value1))
Definition: Tuple.h:431
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >)
Definition: Tuple.h:4564
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:1011
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
const vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >) const
Definition: Tuple.h:1814
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >) const
Definition: Tuple.h:3308
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Transform
auto Transform(Function &&f) const -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:3572
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::Value5
T5 Value5
Definition: Tuple.h:937
vtkm::Tuple< T0, T1, T2, T3, T4 >::GetImpl
vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >)
Definition: Tuple.h:770
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Value0
T0 Value0
Definition: Tuple.h:1590
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Transform
auto Transform(Function &&f) -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:1780
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value8
T8 Value8
Definition: Tuple.h:2104
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value3
T3 Value3
Definition: Tuple.h:3324
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >) const
Definition: Tuple.h:2044
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Value2
T2 Value2
Definition: Tuple.h:4222
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Value0
T0 Value0
Definition: Tuple.h:3582
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
const vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >) const
Definition: Tuple.h:1113
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >)
Definition: Tuple.h:1592
vtkm::Tuple< T0, T1, T2, T3, T4 >::GetImpl
vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >)
Definition: Tuple.h:748
vtkm::Tuple< T0, T1, T2, T3 >::GetImpl
vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >)
Definition: Tuple.h:624
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Transform
auto Transform(Function &&f) const -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:2480
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Get
auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:2958
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Value7
T7 Value7
Definition: Tuple.h:1667
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const vtkm::internal::remove_cvref< T11 > & GetImpl(vtkm::internal::IndexTag< 11 >) const
Definition: Tuple.h:3709
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >) const
Definition: Tuple.h:3062
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const vtkm::internal::remove_cvref< T11 > & GetImpl(vtkm::internal::IndexTag< 11 >) const
Definition: Tuple.h:2617
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >)
Definition: Tuple.h:1799
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const vtkm::internal::remove_cvref< T16 > & GetImpl(vtkm::internal::IndexTag< 16 >) const
Definition: Tuple.h:4067
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >) const
Definition: Tuple.h:2099
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const vtkm::internal::remove_cvref< T12 > & GetImpl(vtkm::internal::IndexTag< 12 >) const
Definition: Tuple.h:3150
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >)
Definition: Tuple.h:4213
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const vtkm::internal::remove_cvref< T10 > & GetImpl(vtkm::internal::IndexTag< 10 >) const
Definition: Tuple.h:3407
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Get
auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:4140
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value11
T11 Value11
Definition: Tuple.h:3412
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
vtkm::internal::remove_cvref< T18 > & GetImpl(vtkm::internal::IndexTag< 18 >)
Definition: Tuple.h:4085
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Value6
T6 Value6
Definition: Tuple.h:1863
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const vtkm::internal::remove_cvref< T16 > & GetImpl(vtkm::internal::IndexTag< 16 >) const
Definition: Tuple.h:4382
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >)
Definition: Tuple.h:2536
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Value0
T0 Value0
Definition: Tuple.h:4529
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >) const
Definition: Tuple.h:2308
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >) const
Definition: Tuple.h:3599
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value10
T10 Value10
Definition: Tuple.h:3122
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Transform
auto Transform(Function &&f) const -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:1385
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
const vtkm::internal::remove_cvref< T13 > & GetImpl(vtkm::internal::IndexTag< 13 >) const
Definition: Tuple.h:4678
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Value13
T13 Value13
Definition: Tuple.h:4343
vtkm::Tuple< T0, T1, T2, T3, T4 >::GetImpl
const vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >) const
Definition: Tuple.h:785
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >)
Definition: Tuple.h:2117
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >)
Definition: Tuple.h:2824
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const vtkm::internal::remove_cvref< T14 > & GetImpl(vtkm::internal::IndexTag< 14 >) const
Definition: Tuple.h:2905
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const vtkm::internal::remove_cvref< T11 > & GetImpl(vtkm::internal::IndexTag< 11 >) const
Definition: Tuple.h:2143
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:2223
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >)
Definition: Tuple.h:4608
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
vtkm::internal::remove_cvref< T10 > & GetImpl(vtkm::internal::IndexTag< 10 >)
Definition: Tuple.h:2128
vtkm::Tuple< T0, T1, T2 >::Value1
T1 Value1
Definition: Tuple.h:488
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Value12
T12 Value12
Definition: Tuple.h:4017
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Value7
T7 Value7
Definition: Tuple.h:4606
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
vtkm::internal::remove_cvref< T12 > & GetImpl(vtkm::internal::IndexTag< 12 >)
Definition: Tuple.h:3716
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Get
auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:4815
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >) const
Definition: Tuple.h:3957
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const vtkm::internal::remove_cvref< T14 > & GetImpl(vtkm::internal::IndexTag< 14 >) const
Definition: Tuple.h:3172
vtkm::Apply
auto Apply(const vtkm::Tuple< Ts... > &tuple, Function &&f, Args &&... args) -> decltype(tuple.Apply(std::forward< Function >(f), std::forward< Args >(args)...))
Call a function with the values of a vtkm::Tuple as arguments.
Definition: Tuple.h:175
vtkm::Tuple< T0, T1, T2, T3, T4 >::GetImpl
const vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >) const
Definition: Tuple.h:763
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >)
Definition: Tuple.h:2029
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
vtkm::internal::remove_cvref< T13 > & GetImpl(vtkm::internal::IndexTag< 13 >)
Definition: Tuple.h:2635
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value12
T12 Value12
Definition: Tuple.h:2379
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
vtkm::internal::remove_cvref< T19 > & GetImpl(vtkm::internal::IndexTag< 19 >)
Definition: Tuple.h:4740
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
const vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >) const
Definition: Tuple.h:899
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
const vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >) const
Definition: Tuple.h:1596
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
const vtkm::internal::remove_cvref< T10 > & GetImpl(vtkm::internal::IndexTag< 10 >) const
Definition: Tuple.h:1913
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value13
T13 Value13
Definition: Tuple.h:2633
vtkm::Tuple< T0, T1, T2 >::GetImpl
vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >)
Definition: Tuple.h:490
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Tuple
Tuple(A0 &&a0, A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5, A6 &&a6, A7 &&a7, A8 &&a8)
Definition: Tuple.h:1516
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >) const
Definition: Tuple.h:3385
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Get
auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:2430
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8))
Definition: Tuple.h:1544
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >) const
Definition: Tuple.h:4250
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
vtkm::internal::remove_cvref< T11 > & GetImpl(vtkm::internal::IndexTag< 11 >)
Definition: Tuple.h:2868
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Value11
T11 Value11
Definition: Tuple.h:4650
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >) const
Definition: Tuple.h:3341
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::Value0
T0 Value0
Definition: Tuple.h:882
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value9
T9 Value9
Definition: Tuple.h:3390
vtkm::Tuple< T0, T1 >::GetImpl
const vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >) const
Definition: Tuple.h:383
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >)
Definition: Tuple.h:2769
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6))
Definition: Tuple.h:1174
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >)
Definition: Tuple.h:2747
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
vtkm::internal::remove_cvref< T10 > & GetImpl(vtkm::internal::IndexTag< 10 >)
Definition: Tuple.h:3997
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Value5
T5 Value5
Definition: Tuple.h:4255
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >) const
Definition: Tuple.h:3990
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:1773
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const vtkm::internal::remove_cvref< T11 > & GetImpl(vtkm::internal::IndexTag< 11 >) const
Definition: Tuple.h:4012
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7))
Definition: Tuple.h:1357
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Value16
T16 Value16
Definition: Tuple.h:4061
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
vtkm::internal::remove_cvref< T16 > & GetImpl(vtkm::internal::IndexTag< 16 >)
Definition: Tuple.h:4378
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::Get
auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:981
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >) const
Definition: Tuple.h:2562
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
const vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >) const
Definition: Tuple.h:4579
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
vtkm::internal::remove_cvref< T10 > & GetImpl(vtkm::internal::IndexTag< 10 >)
Definition: Tuple.h:3694
vtkm::Tuple< T0, T1, T2, T3 >::Get
auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:681
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Value9
T9 Value9
Definition: Tuple.h:1689
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >)
Definition: Tuple.h:1269
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
vtkm::internal::remove_cvref< T16 > & GetImpl(vtkm::internal::IndexTag< 16 >)
Definition: Tuple.h:4707
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value5
T5 Value5
Definition: Tuple.h:2302
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >) const
Definition: Tuple.h:2275
vtkm::Tuple< T0, T1, T2 >::Tuple
Tuple(A0 &&a0, A1 &&a1, A2 &&a2)
Definition: Tuple.h:532
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
vtkm::internal::remove_cvref< T15 > & GetImpl(vtkm::internal::IndexTag< 15 >)
Definition: Tuple.h:3179
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Value3
T3 Value3
Definition: Tuple.h:1074
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >)
Definition: Tuple.h:2758
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >)
Definition: Tuple.h:2073
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Value5
T5 Value5
Definition: Tuple.h:1645
vtkm::Tuple< T0, T1, T2, T3, T4 >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4))
Definition: Tuple.h:844
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Value15
T15 Value15
Definition: Tuple.h:4694
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value0
T0 Value0
Definition: Tuple.h:3012
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >)
Definition: Tuple.h:1430
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Get
auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:2691
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >)
Definition: Tuple.h:1898
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value3
T3 Value3
Definition: Tuple.h:2280
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >)
Definition: Tuple.h:1225
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
const vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >) const
Definition: Tuple.h:4535
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:4929
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:2988
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Value6
T6 Value6
Definition: Tuple.h:1107
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Value2
T2 Value2
Definition: Tuple.h:3604
vtkm::Tuple< T0, T1, T2, T3, T4 >::GetImpl
const vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >) const
Definition: Tuple.h:741
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Transform
auto Transform(Function &&f) const -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:2237
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Value9
T9 Value9
Definition: Tuple.h:4628
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Get
auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:2187
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
vtkm::internal::remove_cvref< T18 > & GetImpl(vtkm::internal::IndexTag< 18 >)
Definition: Tuple.h:4729
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Value0
T0 Value0
Definition: Tuple.h:1797
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
vtkm::internal::remove_cvref< T10 > & GetImpl(vtkm::internal::IndexTag< 10 >)
Definition: Tuple.h:3403
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >)
Definition: Tuple.h:2040
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value4
T4 Value4
Definition: Tuple.h:2789
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Value18
T18 Value18
Definition: Tuple.h:4083
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Value8
T8 Value8
Definition: Tuple.h:4288
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
vtkm::internal::remove_cvref< T10 > & GetImpl(vtkm::internal::IndexTag< 10 >)
Definition: Tuple.h:3124
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
vtkm::internal::remove_cvref< T11 > & GetImpl(vtkm::internal::IndexTag< 11 >)
Definition: Tuple.h:2613
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
vtkm::internal::remove_cvref< T10 > & GetImpl(vtkm::internal::IndexTag< 10 >)
Definition: Tuple.h:2857
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Tuple
Tuple(A0 &&a0, A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5, A6 &&a6, A7 &&a7)
Definition: Tuple.h:1322
vtkm::Tuple< T0, T1, T2, T3, T4 >::Value1
T1 Value1
Definition: Tuple.h:746
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Value11
T11 Value11
Definition: Tuple.h:4006
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
vtkm::internal::remove_cvref< T12 > & GetImpl(vtkm::internal::IndexTag< 12 >)
Definition: Tuple.h:2879
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Value0
T0 Value0
Definition: Tuple.h:1212
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >) const
Definition: Tuple.h:3643
vtkm::Tuple< T0, T1, T2, T3 >::ElementType
vtkm::TupleElement< Index, Tuple< T0, T1, T2, T3 > > ElementType
Definition: Tuple.h:655
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:1986
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Tuple
Tuple(A0 &&a0, A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5, A6 &&a6)
Definition: Tuple.h:1140
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Get
auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:3825
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
vtkm::internal::remove_cvref< T13 > & GetImpl(vtkm::internal::IndexTag< 13 >)
Definition: Tuple.h:4674
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::Value1
T1 Value1
Definition: Tuple.h:893
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
vtkm::internal::remove_cvref< T16 > & GetImpl(vtkm::internal::IndexTag< 16 >)
Definition: Tuple.h:3469
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >) const
Definition: Tuple.h:2817
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >) const
Definition: Tuple.h:2784
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Value16
T16 Value16
Definition: Tuple.h:4376
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Get
auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:1743
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >)
Definition: Tuple.h:2514
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >)
Definition: Tuple.h:1843
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
const vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >) const
Definition: Tuple.h:1273
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >) const
Definition: Tuple.h:2595
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value9
T9 Value9
Definition: Tuple.h:2346
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value11
T11 Value11
Definition: Tuple.h:2866
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value4
T4 Value4
Definition: Tuple.h:2291
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >)
Definition: Tuple.h:1441
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
vtkm::internal::remove_cvref< T13 > & GetImpl(vtkm::internal::IndexTag< 13 >)
Definition: Tuple.h:3727
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13))
Definition: Tuple.h:2699
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >)
Definition: Tuple.h:3975
vtkm::Tuple<>::ForEach
void ForEach(Function &&) const
Definition: Tuple.h:250
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::Transform
auto Transform(Function &&f) -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:1024
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
const vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >) const
Definition: Tuple.h:1251
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Get
auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:3522
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const vtkm::internal::remove_cvref< T14 > & GetImpl(vtkm::internal::IndexTag< 14 >) const
Definition: Tuple.h:3742
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >)
Definition: Tuple.h:2492
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value11
T11 Value11
Definition: Tuple.h:2368
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::Value3
T3 Value3
Definition: Tuple.h:915
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Value0
T0 Value0
Definition: Tuple.h:3885
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Value3
T3 Value3
Definition: Tuple.h:3918
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const vtkm::internal::remove_cvref< T11 > & GetImpl(vtkm::internal::IndexTag< 11 >) const
Definition: Tuple.h:3418
vtkm::Tuple< T0 >::GetImpl
vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >)
Definition: Tuple.h:269
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Transform
auto Transform(Function &&f) const -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:4517
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >)
Definition: Tuple.h:1065
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
const vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >) const
Definition: Tuple.h:1434
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value6
T6 Value6
Definition: Tuple.h:2811
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
vtkm::internal::remove_cvref< T16 > & GetImpl(vtkm::internal::IndexTag< 16 >)
Definition: Tuple.h:4063
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >)
Definition: Tuple.h:906
vtkm::Tuple< T0, T1, T2 >::GetImpl
vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >)
Definition: Tuple.h:479
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
vtkm::internal::remove_cvref< T10 > & GetImpl(vtkm::internal::IndexTag< 10 >)
Definition: Tuple.h:4312
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const vtkm::internal::remove_cvref< T11 > & GetImpl(vtkm::internal::IndexTag< 11 >) const
Definition: Tuple.h:3139
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
const vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >) const
Definition: Tuple.h:1489
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
const vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >) const
Definition: Tuple.h:1607
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
const vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >) const
Definition: Tuple.h:1069
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value12
T12 Value12
Definition: Tuple.h:3144
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Get
auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:3831
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Tuple
Tuple(A0 &&a0, A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5, A6 &&a6, A7 &&a7, A8 &&a8, A9 &&a9, A10 &&a10, A11 &&a11, A12 &&a12, A13 &&a13, A14 &&a14, A15 &&a15, A16 &&a16)
Definition: Tuple.h:3500
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Value9
T9 Value9
Definition: Tuple.h:3681
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >)
Definition: Tuple.h:1810
vtkm::Tuple< T0, T1, T2, T3 >::GetImpl
const vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >) const
Definition: Tuple.h:639
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Value2
T2 Value2
Definition: Tuple.h:1819
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:1560
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Transform
auto Transform(Function &&f) -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:2728
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value2
T2 Value2
Definition: Tuple.h:3034
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Value5
T5 Value5
Definition: Tuple.h:3940
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Value19
T19 Value19
Definition: Tuple.h:4409
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value4
T4 Value4
Definition: Tuple.h:3335
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >) const
Definition: Tuple.h:3935
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Value3
T3 Value3
Definition: Tuple.h:1428
Index
int Index
Definition: ChooseCudaDevice.h:87
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const vtkm::internal::remove_cvref< T16 > & GetImpl(vtkm::internal::IndexTag< 16 >) const
Definition: Tuple.h:3473
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
vtkm::internal::remove_cvref< T10 > & GetImpl(vtkm::internal::IndexTag< 10 >)
Definition: Tuple.h:1909
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >)
Definition: Tuple.h:4542
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const vtkm::internal::remove_cvref< T12 > & GetImpl(vtkm::internal::IndexTag< 12 >) const
Definition: Tuple.h:3720
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
const vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >) const
Definition: Tuple.h:1673
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value4
T4 Value4
Definition: Tuple.h:3056
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >) const
Definition: Tuple.h:3924
vtkm::MakeTuple
auto MakeTuple(Ts &&... args) -> vtkm::Tuple< typename std::decay< Ts >::type... >
Creates a new vtkm::Tuple with the given types.
Definition: Tuple.h:124
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
const vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >) const
Definition: Tuple.h:1847
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Value17
T17 Value17
Definition: Tuple.h:4387
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Value8
T8 Value8
Definition: Tuple.h:4617
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Value1
T1 Value1
Definition: Tuple.h:1052
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Value18
T18 Value18
Definition: Tuple.h:4398
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Transform
auto Transform(Function &&f) -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:1999
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Get
auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:2193
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Transform
auto Transform(Function &&f) -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:3565
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >) const
Definition: Tuple.h:2850
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >) const
Definition: Tuple.h:4261
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value0
T0 Value0
Definition: Tuple.h:2247
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::RemainingValues
RemainingValuesType RemainingValues
Definition: Tuple.h:4752
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >)
Definition: Tuple.h:3931
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Value15
T15 Value15
Definition: Tuple.h:4050
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Value4
T4 Value4
Definition: Tuple.h:3626
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value9
T9 Value9
Definition: Tuple.h:2589
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:4176
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
const vtkm::internal::remove_cvref< T19 > & GetImpl(vtkm::internal::IndexTag< 19 >) const
Definition: Tuple.h:4744
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
const vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >) const
Definition: Tuple.h:4546
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Value8
T8 Value8
Definition: Tuple.h:1885
vtkm::Tuple< T0, T1, T2, T3 >::GetImpl
vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >)
Definition: Tuple.h:635
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
vtkm::internal::remove_cvref< T14 > & GetImpl(vtkm::internal::IndexTag< 14 >)
Definition: Tuple.h:2901
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
vtkm::internal::remove_cvref< T13 > & GetImpl(vtkm::internal::IndexTag< 13 >)
Definition: Tuple.h:3436
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value0
T0 Value0
Definition: Tuple.h:2745
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:4923
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
const vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >) const
Definition: Tuple.h:921
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >)
Definition: Tuple.h:4597
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
const vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >) const
Definition: Tuple.h:1891
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Value8
T8 Value8
Definition: Tuple.h:3670
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Value6
T6 Value6
Definition: Tuple.h:3951
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value9
T9 Value9
Definition: Tuple.h:3111
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Get
auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:1536
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
const vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >) const
Definition: Tuple.h:1423
vtkm::Tuple< T0, T1 >::GetImpl
vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >)
Definition: Tuple.h:368
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >)
Definition: Tuple.h:2591
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
vtkm::internal::remove_cvref< T17 > & GetImpl(vtkm::internal::IndexTag< 17 >)
Definition: Tuple.h:3771
vtkm::Tuple< T0 >::Get
auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:312
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Value11
T11 Value11
Definition: Tuple.h:4321
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Value7
T7 Value7
Definition: Tuple.h:3962
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >) const
Definition: Tuple.h:3073
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >)
Definition: Tuple.h:939
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >)
Definition: Tuple.h:3036
vtkm::Tuple< T0, T1, T2, T3 >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3))
Definition: Tuple.h:697
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >)
Definition: Tuple.h:1647
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::ElementType
vtkm::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 > > ElementType
Definition: Tuple.h:1505
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value11
T11 Value11
Definition: Tuple.h:3133
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Value17
T17 Value17
Definition: Tuple.h:4716
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
vtkm::internal::remove_cvref< T17 > & GetImpl(vtkm::internal::IndexTag< 17 >)
Definition: Tuple.h:4718
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Value13
T13 Value13
Definition: Tuple.h:4672
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >)
Definition: Tuple.h:4279
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value10
T10 Value10
Definition: Tuple.h:2600
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Transform
auto Transform(Function &&f) -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:4183
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >)
Definition: Tuple.h:1098
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Value1
T1 Value1
Definition: Tuple.h:4211
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Value6
T6 Value6
Definition: Tuple.h:3648
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const vtkm::internal::remove_cvref< T10 > & GetImpl(vtkm::internal::IndexTag< 10 >) const
Definition: Tuple.h:2363
vtkm::Tuple< T0, T1, T2, T3, T4 >::GetImpl
vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >)
Definition: Tuple.h:759
vtkm::Tuple< T0, T1 >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)..., Value0, Value1))
Definition: Tuple.h:439
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
const vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >) const
Definition: Tuple.h:1218
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >)
Definition: Tuple.h:3953
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >)
Definition: Tuple.h:3348
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
vtkm::internal::remove_cvref< T12 > & GetImpl(vtkm::internal::IndexTag< 12 >)
Definition: Tuple.h:2381
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Tuple
Tuple(A0 &&a0, A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5, A6 &&a6, A7 &&a7, A8 &&a8, A9 &&a9, A10 &&a10, A11 &&a11, A12 &&a12, A13 &&a13, A14 &&a14, A15 &&a15, A16 &&a16, A17 &&a17, A18 &&a18, A19 &&a19, As &&... remainingArgs)
Definition: Tuple.h:4783
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const vtkm::internal::remove_cvref< T17 > & GetImpl(vtkm::internal::IndexTag< 17 >) const
Definition: Tuple.h:3775
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
const vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >) const
Definition: Tuple.h:943
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14))
Definition: Tuple.h:2966
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >) const
Definition: Tuple.h:3588
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >) const
Definition: Tuple.h:3095
vtkm::Tuple< T0, T1, T2, T3 >::GetImpl
vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >)
Definition: Tuple.h:602
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value7
T7 Value7
Definition: Tuple.h:2324
vtkm::Tuple< T0, T1, T2, T3 >::GetImpl
const vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >) const
Definition: Tuple.h:628
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value2
T2 Value2
Definition: Tuple.h:2767
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >)
Definition: Tuple.h:3898
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
const vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >) const
Definition: Tuple.h:4557
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::ElementType
vtkm::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 > > ElementType
Definition: Tuple.h:2401
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
vtkm::internal::remove_cvref< T11 > & GetImpl(vtkm::internal::IndexTag< 11 >)
Definition: Tuple.h:3135
vtkm::Tuple< T0, T1, T2, T3, T4 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:858
vtkm::Tuple< T0, T1, T2, T3, T4 >::Get
auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:822
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Value5
T5 Value5
Definition: Tuple.h:4584
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value8
T8 Value8
Definition: Tuple.h:3100
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6))
Definition: Tuple.h:1166
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >)
Definition: Tuple.h:2791
vtkm::Tuple< T0, T1, T2, T3 >::GetImpl
const vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >) const
Definition: Tuple.h:617
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value10
T10 Value10
Definition: Tuple.h:2855
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const vtkm::internal::remove_cvref< T19 > & GetImpl(vtkm::internal::IndexTag< 19 >) const
Definition: Tuple.h:4415
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >)
Definition: Tuple.h:3639
vtkm::Tuple<>::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)...))
Definition: Tuple.h:242
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >)
Definition: Tuple.h:2348
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >)
Definition: Tuple.h:2780
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >)
Definition: Tuple.h:1463
vtkm::Tuple< T0, T1, T2 >::GetImpl
const vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >) const
Definition: Tuple.h:505
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Transform
auto Transform(Function &&f) const -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:4943
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >) const
Definition: Tuple.h:2795
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >) const
Definition: Tuple.h:2330
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value1
T1 Value1
Definition: Tuple.h:3302
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Value5
T5 Value5
Definition: Tuple.h:1852
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value6
T6 Value6
Definition: Tuple.h:3357
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >)
Definition: Tuple.h:2835
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Value1
T1 Value1
Definition: Tuple.h:3896
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value0
T0 Value0
Definition: Tuple.h:2490
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value7
T7 Value7
Definition: Tuple.h:2567
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
const vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >) const
Definition: Tuple.h:1058
vtkm::Tuple< T0, T1, T2, T3 >::Transform
auto Transform(Function &&f) -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:718
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
const vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >) const
Definition: Tuple.h:1047
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
const vtkm::internal::remove_cvref< T12 > & GetImpl(vtkm::internal::IndexTag< 12 >) const
Definition: Tuple.h:4667
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >) const
Definition: Tuple.h:2573
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Transform
auto Transform(Function &&f) -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:3274
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Value13
T13 Value13
Definition: Tuple.h:4028
vtkm::Tuple< T0, T1, T2, T3 >::GetImpl
vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >)
Definition: Tuple.h:613
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
const vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >) const
Definition: Tuple.h:1651
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
const vtkm::internal::remove_cvref< T14 > & GetImpl(vtkm::internal::IndexTag< 14 >) const
Definition: Tuple.h:4689
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >)
Definition: Tuple.h:1680
vtkm::Tuple< T0, T1, T2, T3, T4 >::Value0
T0 Value0
Definition: Tuple.h:735
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >) const
Definition: Tuple.h:3084
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const vtkm::internal::remove_cvref< T10 > & GetImpl(vtkm::internal::IndexTag< 10 >) const
Definition: Tuple.h:2861
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >)
Definition: Tuple.h:3617
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
vtkm::internal::remove_cvref< T14 > & GetImpl(vtkm::internal::IndexTag< 14 >)
Definition: Tuple.h:4685
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >) const
Definition: Tuple.h:2341
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >) const
Definition: Tuple.h:3902
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
const vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >) const
Definition: Tuple.h:4590
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >) const
Definition: Tuple.h:2828
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Value11
T11 Value11
Definition: Tuple.h:3703
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >)
Definition: Tuple.h:4531
vtkm::Tuple< T0, T1 >::Transform
auto Transform(Function &&f) const -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:467
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Value14
T14 Value14
Definition: Tuple.h:4354
vtkm::Tuple< T0, T1, T2, T3 >::Transform
auto Transform(Function &&f) const -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:725
vtkm::Tuple< T0, T1 >::Get
auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:417
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >)
Definition: Tuple.h:3293
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
vtkm::internal::remove_cvref< T11 > & GetImpl(vtkm::internal::IndexTag< 11 >)
Definition: Tuple.h:4323
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::Value4
T4 Value4
Definition: Tuple.h:926
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Value15
T15 Value15
Definition: Tuple.h:3747
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >)
Definition: Tuple.h:1452
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Tuple
Tuple(A0 &&a0, A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5, A6 &&a6, A7 &&a7, A8 &&a8, A9 &&a9, A10 &&a10, A11 &&a11, A12 &&a12)
Definition: Tuple.h:2412
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >)
Definition: Tuple.h:3964
vtkm::Tuple< T0, T1, T2, T3 >::Get
auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:675
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Transform
auto Transform(Function &&f) -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:1195
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
const vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >) const
Definition: Tuple.h:4612
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value16
T16 Value16
Definition: Tuple.h:3467
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >)
Definition: Tuple.h:3025
vtkm::Tuple< T0, T1, T2 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:570
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value9
T9 Value9
Definition: Tuple.h:2115
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >)
Definition: Tuple.h:1658
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value14
T14 Value14
Definition: Tuple.h:2899
vtkm::Tuple< T0, T1, T2, T3 >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3))
Definition: Tuple.h:689
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value8
T8 Value8
Definition: Tuple.h:2833
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >)
Definition: Tuple.h:1236
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const vtkm::internal::remove_cvref< T14 > & GetImpl(vtkm::internal::IndexTag< 14 >) const
Definition: Tuple.h:3451
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Value15
T15 Value15
Definition: Tuple.h:4365
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >)
Definition: Tuple.h:1109
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value4
T4 Value4
Definition: Tuple.h:2534
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >) const
Definition: Tuple.h:3891
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >) const
Definition: Tuple.h:3018
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value5
T5 Value5
Definition: Tuple.h:2800
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >) const
Definition: Tuple.h:3319
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Value2
T2 Value2
Definition: Tuple.h:1063
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
const vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >) const
Definition: Tuple.h:4568
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
vtkm::internal::remove_cvref< T12 > & GetImpl(vtkm::internal::IndexTag< 12 >)
Definition: Tuple.h:4663
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
vtkm::internal::remove_cvref< T10 > & GetImpl(vtkm::internal::IndexTag< 10 >)
Definition: Tuple.h:4641
vtkm::Tuple< T0, T1, T2 >::ElementType
vtkm::TupleElement< Index, Tuple< T0, T1, T2 > > ElementType
Definition: Tuple.h:521
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
const vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >) const
Definition: Tuple.h:4601
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const vtkm::internal::remove_cvref< T17 > & GetImpl(vtkm::internal::IndexTag< 17 >) const
Definition: Tuple.h:4393
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >)
Definition: Tuple.h:2095
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const vtkm::internal::remove_cvref< T15 > & GetImpl(vtkm::internal::IndexTag< 15 >) const
Definition: Tuple.h:3753
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Value10
T10 Value10
Definition: Tuple.h:3692
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Transform
auto Transform(Function &&f) const -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:3875
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value5
T5 Value5
Definition: Tuple.h:2545
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
const vtkm::internal::remove_cvref< vtkm::TupleElement< Index - 20, RemainingValuesType > > & GetImpl(vtkm::internal::IndexTag< Index >) const
Definition: Tuple.h:4763
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5))
Definition: Tuple.h:995
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
vtkm::internal::remove_cvref< T13 > & GetImpl(vtkm::internal::IndexTag< 13 >)
Definition: Tuple.h:3157
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >) const
Definition: Tuple.h:3106
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >)
Definition: Tuple.h:4202
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >)
Definition: Tuple.h:2846
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Transform
auto Transform(Function &&f) const -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:3281
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Value0
T0 Value0
Definition: Tuple.h:4200
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16, Value17, Value18, Value19))
Definition: Tuple.h:4481
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >)
Definition: Tuple.h:2569
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16, Value17, Value18))
Definition: Tuple.h:4162
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Value0
T0 Value0
Definition: Tuple.h:1395
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Value18
T18 Value18
Definition: Tuple.h:4727
vtkm::Tuple< T0, T1, T2, T3, T4 >::Value4
T4 Value4
Definition: Tuple.h:779
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Value10
T10 Value10
Definition: Tuple.h:3995
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >)
Definition: Tuple.h:4619
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
const vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >) const
Definition: Tuple.h:4634
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Value12
T12 Value12
Definition: Tuple.h:3714
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value14
T14 Value14
Definition: Tuple.h:3445
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value10
T10 Value10
Definition: Tuple.h:2126
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value3
T3 Value3
Definition: Tuple.h:3045
vtkm::Tuple
VTK-m replacement for std::tuple.
Definition: Tuple.h:35
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >)
Definition: Tuple.h:1280
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >)
Definition: Tuple.h:4586
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7))
Definition: Tuple.h:1349
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >)
Definition: Tuple.h:3628
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Value5
T5 Value5
Definition: Tuple.h:1267
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:1182
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const vtkm::internal::remove_cvref< T11 > & GetImpl(vtkm::internal::IndexTag< 11 >) const
Definition: Tuple.h:4327
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:3261
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >)
Definition: Tuple.h:1669
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(this->RemainingValues.Apply(std::forward< Function >(f), std::forward< Args >(args)..., this->Value0, this->Value1, this->Value2, this->Value3, this->Value4, this->Value5, this->Value6, this->Value7, this->Value8, this->Value9, this->Value10, this->Value11, this->Value12, this->Value13, this->Value14, this->Value15, this->Value16, this->Value17, this->Value18, this->Value19))
Definition: Tuple.h:4873
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >) const
Definition: Tuple.h:2762
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value1
T1 Value1
Definition: Tuple.h:3023
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >)
Definition: Tuple.h:3359
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >) const
Definition: Tuple.h:3352
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16))
Definition: Tuple.h:3544
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >)
Definition: Tuple.h:2018
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
const vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >) const
Definition: Tuple.h:1412
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:1188
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value12
T12 Value12
Definition: Tuple.h:2622
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >)
Definition: Tuple.h:4630
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >)
Definition: Tuple.h:3595
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Value12
T12 Value12
Definition: Tuple.h:4661
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:3552
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value14
T14 Value14
Definition: Tuple.h:3166
vtkm::Tuple< T0, T1, T2 >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2))
Definition: Tuple.h:554
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const vtkm::internal::remove_cvref< T10 > & GetImpl(vtkm::internal::IndexTag< 10 >) const
Definition: Tuple.h:2606
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >)
Definition: Tuple.h:2813
vtkm::Tuple< T0, T1, T2, T3, T4 >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4))
Definition: Tuple.h:836
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const vtkm::internal::remove_cvref< T12 > & GetImpl(vtkm::internal::IndexTag< 12 >) const
Definition: Tuple.h:2385
vtkm::Tuple< T0 >::ElementType
vtkm::TupleElement< Index, Tuple< T0 > > ElementType
Definition: Tuple.h:289
vtkm::tuple_size
std::integral_constant< std::size_t, static_cast< std::size_t >(TupleType::Size)> tuple_size
Compatible with std::tuple_size for vtkm::Tuple.
Definition: Tuple.h:47
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Tuple
Tuple(A0 &&a0, A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5, A6 &&a6, A7 &&a7, A8 &&a8, A9 &&a9, A10 &&a10)
Definition: Tuple.h:1940
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >)
Definition: Tuple.h:2271
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
vtkm::internal::remove_cvref< T14 > & GetImpl(vtkm::internal::IndexTag< 14 >)
Definition: Tuple.h:3738
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Value10
T10 Value10
Definition: Tuple.h:1907
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16, Value17, Value18))
Definition: Tuple.h:4154
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
vtkm::internal::remove_cvref< T17 > & GetImpl(vtkm::internal::IndexTag< 17 >)
Definition: Tuple.h:4389
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >) const
Definition: Tuple.h:2088
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
vtkm::internal::remove_cvref< T14 > & GetImpl(vtkm::internal::IndexTag< 14 >)
Definition: Tuple.h:3168
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Transform
auto Transform(Function &&f) const -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:4190
vtkm::Tuple< T0 >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)..., Value0))
Definition: Tuple.h:320
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Value1
T1 Value1
Definition: Tuple.h:4540
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >)
Definition: Tuple.h:3102
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >)
Definition: Tuple.h:2525
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >) const
Definition: Tuple.h:3029
vtkm::tuple_element::type
TupleElement< static_cast< vtkm::IdComponent >(Index), TupleType > type
Definition: Tuple.h:70
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >) const
Definition: Tuple.h:2077
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >)
Definition: Tuple.h:2547
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Value9
T9 Value9
Definition: Tuple.h:3984
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Value5
T5 Value5
Definition: Tuple.h:1450
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >)
Definition: Tuple.h:3942
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Get
auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:4146
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >)
Definition: Tuple.h:2503
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::ElementType
vtkm::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6 > > ElementType
Definition: Tuple.h:1129
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Value3
T3 Value3
Definition: Tuple.h:1830
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
vtkm::internal::remove_cvref< T17 > & GetImpl(vtkm::internal::IndexTag< 17 >)
Definition: Tuple.h:4074
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Value2
T2 Value2
Definition: Tuple.h:1234
vtkm::Tuple<>::Transform
vtkm::Tuple Transform(Function &&) const
Definition: Tuple.h:256
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >)
Definition: Tuple.h:3058
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::Tuple
Tuple(A0 &&a0, A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5)
Definition: Tuple.h:970
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const vtkm::internal::remove_cvref< T10 > & GetImpl(vtkm::internal::IndexTag< 10 >) const
Definition: Tuple.h:3698
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >) const
Definition: Tuple.h:2839
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >)
Definition: Tuple.h:3661
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >) const
Definition: Tuple.h:2022
vtkm::Tuple< T0, T1, T2 >::Transform
auto Transform(Function &&f) -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:583
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
vtkm::internal::remove_cvref< T11 > & GetImpl(vtkm::internal::IndexTag< 11 >)
Definition: Tuple.h:3705
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10))
Definition: Tuple.h:1970
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Tuple
Tuple(A0 &&a0, A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5, A6 &&a6, A7 &&a7, A8 &&a8, A9 &&a9, A10 &&a10, A11 &&a11)
Definition: Tuple.h:2170
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Value14
T14 Value14
Definition: Tuple.h:4683
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Value9
T9 Value9
Definition: Tuple.h:4299
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >)
Definition: Tuple.h:3370
vtkm::Tuple< T0, T1, T2, T3, T4 >::Value2
T2 Value2
Definition: Tuple.h:757
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
const vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >) const
Definition: Tuple.h:1640
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >) const
Definition: Tuple.h:4272
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
const vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >) const
Definition: Tuple.h:1684
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >)
Definition: Tuple.h:2282
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >)
Definition: Tuple.h:2084
vtkm::Tuple< T0, T1, T2 >::Value0
T0 Value0
Definition: Tuple.h:477
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Value2
T2 Value2
Definition: Tuple.h:4551
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
vtkm::internal::remove_cvref< T13 > & GetImpl(vtkm::internal::IndexTag< 13 >)
Definition: Tuple.h:4345
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const vtkm::internal::remove_cvref< T16 > & GetImpl(vtkm::internal::IndexTag< 16 >) const
Definition: Tuple.h:3764
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
vtkm::internal::remove_cvref< T19 > & GetImpl(vtkm::internal::IndexTag< 19 >)
Definition: Tuple.h:4411
vtkm::Tuple< T0, T1 >::Get
auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:423
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >)
Definition: Tuple.h:2326
vtkm::Tuple< T0, T1, T2, T3, T4 >::Tuple
Tuple(A0 &&a0, A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4)
Definition: Tuple.h:812
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15))
Definition: Tuple.h:3253
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Value7
T7 Value7
Definition: Tuple.h:1472
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::Get
auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:4809
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Value17
T17 Value17
Definition: Tuple.h:4072
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >) const
Definition: Tuple.h:2806
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
const vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >) const
Definition: Tuple.h:932
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Get
auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:1962
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::ElementType
vtkm::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 > > ElementType
Definition: Tuple.h:2655
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >) const
Definition: Tuple.h:3632
vtkm::Tuple< T0 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:336
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Transform
auto Transform(Function &&f) -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:2230
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Get
auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:3528
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >)
Definition: Tuple.h:3337
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Transform
auto Transform(Function &&f) -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:2995
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const vtkm::internal::remove_cvref< T12 > & GetImpl(vtkm::internal::IndexTag< 12 >) const
Definition: Tuple.h:3429
vtkm::Tuple< T0, T1, T2, T3, T4 >::Value3
T3 Value3
Definition: Tuple.h:768
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Value6
T6 Value6
Definition: Tuple.h:1278
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Get
auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:3237
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Tuple
Tuple(A0 &&a0, A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5, A6 &&a6, A7 &&a7, A8 &&a8, A9 &&a9)
Definition: Tuple.h:1722
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Value4
T4 Value4
Definition: Tuple.h:3929
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Get
auto Get() -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:2685
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value12
T12 Value12
Definition: Tuple.h:3423
vtkm::Tuple< T0, T1, T2, T3, T4 >::GetImpl
vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >)
Definition: Tuple.h:737
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Value8
T8 Value8
Definition: Tuple.h:1483
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
vtkm::internal::remove_cvref< T15 > & GetImpl(vtkm::internal::IndexTag< 15 >)
Definition: Tuple.h:4367
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >)
Definition: Tuple.h:3080
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
const vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >) const
Definition: Tuple.h:1902
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
vtkm::internal::remove_cvref< T12 > & GetImpl(vtkm::internal::IndexTag< 12 >)
Definition: Tuple.h:3425
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >)
Definition: Tuple.h:1397
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Transform
auto Transform(Function &&f) -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:2473
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::Value2
T2 Value2
Definition: Tuple.h:904
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >) const
Definition: Tuple.h:4206
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >)
Definition: Tuple.h:1087
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Value7
T7 Value7
Definition: Tuple.h:1874
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >)
Definition: Tuple.h:1865
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >)
Definition: Tuple.h:4301
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const vtkm::internal::remove_cvref< T10 > & GetImpl(vtkm::internal::IndexTag< 10 >) const
Definition: Tuple.h:4316
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Value4
T4 Value4
Definition: Tuple.h:1085
DecayHelpers.h
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:1992
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >) const
Definition: Tuple.h:2751
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >)
Definition: Tuple.h:3650
vtkm::Tuple< T0, T1, T2, T3, T4 >::Get
auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:828
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::Transform
auto Transform(Function &&f) const -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:1031
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Get
auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:4473
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:3861
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Transform
auto Transform(Function &&f) const -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:1787
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >)
Definition: Tuple.h:3315
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >) const
Definition: Tuple.h:3654
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >) const
Definition: Tuple.h:2529
vtkm::Tuple< T0, T1 >::Tuple
Tuple(A0 &&a0, A1 &&a1)
Definition: Tuple.h:410
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >) const
Definition: Tuple.h:3396
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
const vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >) const
Definition: Tuple.h:1662
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value5
T5 Value5
Definition: Tuple.h:3346
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Tuple
Tuple(A0 &&a0, A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5, A6 &&a6, A7 &&a7, A8 &&a8, A9 &&a9, A10 &&a10, A11 &&a11, A12 &&a12, A13 &&a13, A14 &&a14, A15 &&a15, A16 &&a16, A17 &&a17, A18 &&a18, A19 &&a19)
Definition: Tuple.h:4442
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const vtkm::internal::remove_cvref< T14 > & GetImpl(vtkm::internal::IndexTag< 14 >) const
Definition: Tuple.h:4045
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12))
Definition: Tuple.h:2444
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
vtkm::internal::remove_cvref< T10 > & GetImpl(vtkm::internal::IndexTag< 10 >)
Definition: Tuple.h:2359
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::ElementType
vtkm::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 > > ElementType
Definition: Tuple.h:2159
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Transform
auto Transform(Function &&f) -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:1573
vtkm::Tuple< T0, T1, T2, T3 >::Value2
T2 Value2
Definition: Tuple.h:622
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >)
Definition: Tuple.h:1474
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
const vtkm::internal::remove_cvref< T11 > & GetImpl(vtkm::internal::IndexTag< 11 >) const
Definition: Tuple.h:4656
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
vtkm::internal::remove_cvref< T13 > & GetImpl(vtkm::internal::IndexTag< 13 >)
Definition: Tuple.h:2890
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value13
T13 Value13
Definition: Tuple.h:3155
vtkm::Tuple< T0 >::Transform
auto Transform(Function &&f) const -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:356
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::ElementType
vtkm::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 > > ElementType
Definition: Tuple.h:3489
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
vtkm::internal::remove_cvref< T15 > & GetImpl(vtkm::internal::IndexTag< 15 >)
Definition: Tuple.h:4696
VTKM_SUPPRESS_EXEC_WARNINGS
#define VTKM_SUPPRESS_EXEC_WARNINGS
Definition: ExportMacros.h:53
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:2217
IndexTag.h
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >) const
Definition: Tuple.h:4294
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value8
T8 Value8
Definition: Tuple.h:3379
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >) const
Definition: Tuple.h:3117
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:1566
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
vtkm::internal::remove_cvref< T4 > & GetImpl(vtkm::internal::IndexTag< 4 >)
Definition: Tuple.h:4575
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:1371
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const vtkm::internal::remove_cvref< T13 > & GetImpl(vtkm::internal::IndexTag< 13 >) const
Definition: Tuple.h:4034
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::Get
auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:987
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >) const
Definition: Tuple.h:3621
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
const vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >) const
Definition: Tuple.h:1467
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
vtkm::internal::remove_cvref< T12 > & GetImpl(vtkm::internal::IndexTag< 12 >)
Definition: Tuple.h:2624
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value3
T3 Value3
Definition: Tuple.h:2778
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
vtkm::internal::remove_cvref< T15 > & GetImpl(vtkm::internal::IndexTag< 15 >)
Definition: Tuple.h:4052
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >) const
Definition: Tuple.h:4305
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
const vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >) const
Definition: Tuple.h:1229
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >) const
Definition: Tuple.h:3051
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Tuple
Tuple(A0 &&a0, A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5, A6 &&a6, A7 &&a7, A8 &&a8, A9 &&a9, A10 &&a10, A11 &&a11, A12 &&a12, A13 &&a13, A14 &&a14)
Definition: Tuple.h:2932
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value7
T7 Value7
Definition: Tuple.h:3089
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Get
auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:1341
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
const vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >) const
Definition: Tuple.h:1240
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >)
Definition: Tuple.h:1832
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Value6
T6 Value6
Definition: Tuple.h:1656
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Value7
T7 Value7
Definition: Tuple.h:3659
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Transform
auto Transform(Function &&f) const -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:3002
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Transform
auto Transform(Function &&f) const -> decltype(vtkm::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:1202
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const vtkm::internal::remove_cvref< T15 > & GetImpl(vtkm::internal::IndexTag< 15 >) const
Definition: Tuple.h:4056
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >)
Definition: Tuple.h:2337
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
vtkm::internal::remove_cvref< T18 > & GetImpl(vtkm::internal::IndexTag< 18 >)
Definition: Tuple.h:4400
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const vtkm::internal::remove_cvref< T10 > & GetImpl(vtkm::internal::IndexTag< 10 >) const
Definition: Tuple.h:2132
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
vtkm::internal::remove_cvref< T9 > & GetImpl(vtkm::internal::IndexTag< 9 >)
Definition: Tuple.h:3986
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Value9
T9 Value9
Definition: Tuple.h:1896
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >) const
Definition: Tuple.h:2110
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
vtkm::internal::remove_cvref< T0 > & GetImpl(vtkm::internal::IndexTag< 0 >)
Definition: Tuple.h:3014
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16, Value17, Value18, Value19))
Definition: Tuple.h:4489
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >)
Definition: Tuple.h:1485
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
vtkm::internal::remove_cvref< T14 > & GetImpl(vtkm::internal::IndexTag< 14 >)
Definition: Tuple.h:4356
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const vtkm::internal::remove_cvref< T3 > & GetImpl(vtkm::internal::IndexTag< 3 >) const
Definition: Tuple.h:2055
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Get
auto Get() const -> decltype(this->GetImpl(vtkm::internal::IndexTag< Index >
Definition: Tuple.h:1158
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const vtkm::internal::remove_cvref< T12 > & GetImpl(vtkm::internal::IndexTag< 12 >) const
Definition: Tuple.h:2628
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
const vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >) const
Definition: Tuple.h:1869
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >)
Definition: Tuple.h:3672
vtkm::Tuple< T0, T1 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:453
vtkm::Tuple< T0, T1, T2, T3 >::Value3
T3 Value3
Definition: Tuple.h:633
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value0
T0 Value0
Definition: Tuple.h:3291
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
vtkm::internal::remove_cvref< T5 > & GetImpl(vtkm::internal::IndexTag< 5 >)
Definition: Tuple.h:2802
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
vtkm::internal::remove_cvref< T1 > & GetImpl(vtkm::internal::IndexTag< 1 >)
Definition: Tuple.h:1408
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Value4
T4 Value4
Definition: Tuple.h:1439
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Value14
T14 Value14
Definition: Tuple.h:4039
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const vtkm::internal::remove_cvref< T8 > & GetImpl(vtkm::internal::IndexTag< 8 >) const
Definition: Tuple.h:3979
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const vtkm::internal::remove_cvref< T6 > & GetImpl(vtkm::internal::IndexTag< 6 >) const
Definition: Tuple.h:2319
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::Value3
T3 Value3
Definition: Tuple.h:3615
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Value1
T1 Value1
Definition: Tuple.h:1406
vtkm::Tuple< T0, T1, T2, T3, T4, T5 >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2, Value3, Value4, Value5))
Definition: Tuple.h:1003
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::ElementType
vtkm::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... > > ElementType
Definition: Tuple.h:4772
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
const vtkm::internal::remove_cvref< T7 > & GetImpl(vtkm::internal::IndexTag< 7 >) const
Definition: Tuple.h:1478
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
vtkm::internal::remove_cvref< T2 > & GetImpl(vtkm::internal::IndexTag< 2 >)
Definition: Tuple.h:1821
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
vtkm::internal::remove_cvref< T11 > & GetImpl(vtkm::internal::IndexTag< 11 >)
Definition: Tuple.h:4652
vtkm::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::Value6
T6 Value6
Definition: Tuple.h:4266