Viskores  1.0
Tuple.h
Go to the documentation of this file.
1 //============================================================================
2 // The contents of this file are covered by the Viskores license. See
3 // LICENSE.txt for details.
4 //
5 // By contributing to this file, all contributors agree to the Developer
6 // Certificate of Origin Version 1.1 (DCO 1.1) as stated in DCO.txt.
7 //============================================================================
8 
9 //============================================================================
10 // Copyright (c) Kitware, Inc.
11 // All rights reserved.
12 // See LICENSE.txt for details.
13 //
14 // This software is distributed WITHOUT ANY WARRANTY; without even
15 // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
16 // PURPOSE. See the above copyright notice for more information.
17 //============================================================================
18 // **** DO NOT EDIT THIS FILE!!! ****
19 // This file is automatically generated by Tuple.h.in
20 
21 #ifndef viskores_Tuple_h
22 #define viskores_Tuple_h
23 
24 #include <viskores/Types.h>
25 
28 
29 
30 
31 namespace viskores
32 {
33 
42 template <typename... Ts>
43 class Tuple;
44 
49 template <typename TupleType>
50 using TupleSize = std::integral_constant<viskores::IdComponent, TupleType::Size>;
51 
54 template <typename TupleType>
55 using tuple_size = std::integral_constant<std::size_t, static_cast<std::size_t>(TupleType::Size)>;
56 
57 namespace detail
58 {
59 
60 template <viskores::IdComponent Index, typename TupleType>
61 struct TupleElementImpl
62 {
63  using type = decltype(TupleType::ElementTypeI(viskores::internal::IndexTag<Index>{}));
64 };
65 
66 } // namespace detail
67 
70 template <viskores::IdComponent Index, typename TupleType>
71 using TupleElement = typename detail::TupleElementImpl<Index, TupleType>::type;
72 
75 template <std::size_t Index, typename TupleType>
77 {
79 };
80 
83 template <std::size_t Index, typename TupleType>
85 
88 template <viskores::IdComponent Index, typename... Ts>
90 #ifndef VISKORES_DOXYGEN_ONLY
91  // Breathe (for Sphinx) has problems parsing this declarator id.
92  -> decltype(tuple.template Get<Index>())
93 #endif
94 {
95  return tuple.template Get<Index>();
96 }
97 
100 template <viskores::IdComponent Index, typename... Ts>
102 #ifndef VISKORES_DOXYGEN_ONLY
103  // Breathe (for Sphinx) has problems parsing this declarator id.
104  -> decltype(tuple.template Get<Index>())
105 #endif
106 {
107  return tuple.template Get<Index>();
108 }
109 
112 template <std::size_t Index, typename... Ts>
114  -> decltype(viskores::Get<static_cast<viskores::IdComponent>(Index)>(tuple))
115 {
116  return viskores::Get<static_cast<viskores::IdComponent>(Index)>(tuple);
117 }
118 
121 template <std::size_t Index, typename... Ts>
123  -> decltype(viskores::Get<static_cast<viskores::IdComponent>(Index)>(tuple))
124 {
125  return viskores::Get<static_cast<viskores::IdComponent>(Index)>(tuple);
126 }
127 
131 template <typename... Ts>
133 {
134  return viskores::Tuple<typename std::decay<Ts>::type...>(std::forward<Ts>(args)...);
135 }
136 
140 template <typename... Ts>
141 VISKORES_EXEC_CONT auto make_tuple(Ts&&... args) -> decltype(viskores::MakeTuple(std::forward<Ts>(args)...))
142 {
143  return viskores::MakeTuple(std::forward<Ts>(args)...);
144 }
145 
147 namespace detail
148 {
149 struct TupleTransformFunctor
150 {
152  template <typename Function, typename... Ts>
153  VISKORES_EXEC_CONT auto operator()(Function&& f, Ts&&... args)
154  -> decltype(viskores::MakeTuple(f(std::forward<Ts>(args))...))
155  {
156  return viskores::MakeTuple(f(std::forward<Ts>(args))...);
157  }
158 };
159 
160 struct TupleForEachFunctor
161 {
163  template <typename Function, typename... Ts>
164  VISKORES_EXEC_CONT void operator()(Function&& f, Ts&&... args)
165  {
166  (void)std::initializer_list<bool>{ (f(std::forward<Ts>(args)), false)... };
167  }
168 };
169 
170 } // namespace detail
172 
182 template <typename... Ts, typename Function, typename... Args>
183 VISKORES_EXEC_CONT auto Apply(const viskores::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 
190 template <typename... Ts, typename Function, typename... Args>
191 VISKORES_EXEC_CONT auto Apply(viskores::Tuple<Ts...>& tuple, Function&& f, Args&&... args)
192  -> decltype(tuple.Apply(std::forward<Function>(f), std::forward<Args>(args)...))
193 {
194  return tuple.Apply(std::forward<Function>(f), std::forward<Args>(args)...);
195 }
196 
200 template <typename... Ts, typename Function>
201 VISKORES_EXEC_CONT void ForEach(const viskores::Tuple<Ts...>& tuple, Function&& f)
202 {
203  return viskores::Apply(tuple, detail::TupleForEachFunctor{}, std::forward<Function>(f));
204 }
205 
207 template <typename... Ts, typename Function>
209 {
210  return viskores::Apply(tuple, detail::TupleForEachFunctor{}, std::forward<Function>(f));
211 }
212 
220 template <typename TupleType, typename Function>
221 VISKORES_EXEC_CONT auto Transform(const TupleType&& tuple, Function&& f)
222  -> decltype(Apply(tuple, detail::TupleTransformFunctor(), std::forward<Function>(f)))
223 {
224  return Apply(tuple, detail::TupleTransformFunctor(), std::forward<Function>(f));
225 }
226 
227 template <typename TupleType, typename Function>
228 VISKORES_EXEC_CONT auto Transform(TupleType&& tuple, Function&& f)
229  -> decltype(Apply(tuple, detail::TupleTransformFunctor(), std::forward<Function>(f)))
230 {
231  return Apply(tuple, detail::TupleTransformFunctor(), std::forward<Function>(f));
232 }
234 
235 template <>
236 class Tuple<>
237 {
238 public:
239  static constexpr viskores::IdComponent Size = 0;
240 
242  template <typename Function, typename... Args>
243  VISKORES_EXEC_CONT auto Apply(Function&& f, Args&&... args)
244  -> decltype(f(std::forward<Args>(args)...))
245  {
246  return f(std::forward<Args>(args)...);
247  }
249  template <typename Function, typename... Args>
250  VISKORES_EXEC_CONT auto Apply(Function&& f, Args&&... args) const
251  -> decltype(f(std::forward<Args>(args)...))
252  {
253  return f(std::forward<Args>(args)...);
254  }
255 
257  template <typename Function>
258  VISKORES_EXEC_CONT void ForEach(Function&&) const
259  {
260  }
261 
263  template <typename Function>
265  {
266  return viskores::Tuple<>{};
267  }
268 };
269 
270 // clang-format off
271 
272 template<typename T0>
273 class Tuple<T0>
274 {
275  T0 Value0;
276  static T0 ElementTypeI(viskores::internal::IndexTag<0>);
277  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>)
278  {
279  return this->Value0;
280  }
281  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>) const
282  {
283  return this->Value0;
284  }
285 
286 
287  // Invalid indices
288  template <viskores::IdComponent Index>
289  static viskores::internal::NullType ElementTypeI(viskores::internal::IndexTag<Index>);
290 
291  template <viskores::IdComponent, typename>
292  friend struct detail::TupleElementImpl;
293 
294 public:
295  static constexpr viskores::IdComponent Size = 1;
296  template <viskores::IdComponent Index>
298 
299  Tuple() = default;
300  Tuple(Tuple&&) = default;
301  Tuple(const Tuple&) = default;
302  ~Tuple() = default;
303  Tuple& operator=(Tuple&&) = default;
304  Tuple& operator=(const Tuple&) = default;
305 
307  template <typename A0>
309  : Value0(std::forward<A0>(a0))
310  {
311  }
312 
313  template <viskores::IdComponent Index>
314  VISKORES_EXEC_CONT auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
315  {
316  return this->GetImpl(viskores::internal::IndexTag<Index>{});
317  }
318 
319  template <viskores::IdComponent Index>
320  VISKORES_EXEC_CONT auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
321  {
322  return this->GetImpl(viskores::internal::IndexTag<Index>{});
323  }
324 
326  template <typename Function, typename... Args>
328  auto Apply(Function&& f, Args&&... args)
329  -> decltype(f(std::forward<Args>(args)..., Value0))
330  {
331  return f(std::forward<Args>(args)..., Value0);
332  }
334  template <typename Function, typename... Args>
336  auto Apply(Function&& f, Args&&... args) const
337  -> decltype(f(std::forward<Args>(args)..., Value0))
338  {
339  return f(std::forward<Args>(args)..., Value0);
340  }
341 
343  template <typename Function>
344  VISKORES_EXEC_CONT void ForEach(Function&& f)
345  {
346  viskores::ForEach(*this, std::forward<Function>(f));
347  }
349  template <typename Function>
350  VISKORES_EXEC_CONT void ForEach(Function&& f) const
351  {
352  viskores::ForEach(*this, std::forward<Function>(f));
353  }
354 
356  template <typename Function>
357  VISKORES_EXEC_CONT auto Transform(Function&& f)
358  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
359  {
360  return viskores::Transform(*this, std::forward<Function>(f));
361  }
363  template <typename Function>
364  VISKORES_EXEC_CONT auto Transform(Function&& f) const
365  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
366  {
367  return viskores::Transform(*this, std::forward<Function>(f));
368  }
369 };
370 
371 template<typename T0, typename T1>
372 class Tuple<T0, T1>
373 {
374  T0 Value0;
375  static T0 ElementTypeI(viskores::internal::IndexTag<0>);
376  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>)
377  {
378  return this->Value0;
379  }
380  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>) const
381  {
382  return this->Value0;
383  }
384 
385  T1 Value1;
386  static T1 ElementTypeI(viskores::internal::IndexTag<1>);
387  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>)
388  {
389  return this->Value1;
390  }
391  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>) const
392  {
393  return this->Value1;
394  }
395 
396 
397  // Invalid indices
398  template <viskores::IdComponent Index>
399  static viskores::internal::NullType ElementTypeI(viskores::internal::IndexTag<Index>);
400 
401  template <viskores::IdComponent, typename>
402  friend struct detail::TupleElementImpl;
403 
404 public:
405  static constexpr viskores::IdComponent Size = 2;
406  template <viskores::IdComponent Index>
408 
409  Tuple() = default;
410  Tuple(Tuple&&) = default;
411  Tuple(const Tuple&) = default;
412  ~Tuple() = default;
413  Tuple& operator=(Tuple&&) = default;
414  Tuple& operator=(const Tuple&) = default;
415 
417  template <typename A0, typename A1>
418  VISKORES_EXEC_CONT Tuple(A0&& a0, A1&& a1)
419  : Value0(std::forward<A0>(a0))
420  , Value1(std::forward<A1>(a1))
421  {
422  }
423 
424  template <viskores::IdComponent Index>
425  VISKORES_EXEC_CONT auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
426  {
427  return this->GetImpl(viskores::internal::IndexTag<Index>{});
428  }
429 
430  template <viskores::IdComponent Index>
431  VISKORES_EXEC_CONT auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
432  {
433  return this->GetImpl(viskores::internal::IndexTag<Index>{});
434  }
435 
437  template <typename Function, typename... Args>
439  auto Apply(Function&& f, Args&&... args)
440  -> decltype(f(std::forward<Args>(args)..., Value0, Value1))
441  {
442  return f(std::forward<Args>(args)..., Value0, Value1);
443  }
445  template <typename Function, typename... Args>
447  auto Apply(Function&& f, Args&&... args) const
448  -> decltype(f(std::forward<Args>(args)..., Value0, Value1))
449  {
450  return f(std::forward<Args>(args)..., Value0, Value1);
451  }
452 
454  template <typename Function>
455  VISKORES_EXEC_CONT void ForEach(Function&& f)
456  {
457  viskores::ForEach(*this, std::forward<Function>(f));
458  }
460  template <typename Function>
461  VISKORES_EXEC_CONT void ForEach(Function&& f) const
462  {
463  viskores::ForEach(*this, std::forward<Function>(f));
464  }
465 
467  template <typename Function>
468  VISKORES_EXEC_CONT auto Transform(Function&& f)
469  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
470  {
471  return viskores::Transform(*this, std::forward<Function>(f));
472  }
474  template <typename Function>
475  VISKORES_EXEC_CONT auto Transform(Function&& f) const
476  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
477  {
478  return viskores::Transform(*this, std::forward<Function>(f));
479  }
480 };
481 
482 template<typename T0, typename T1, typename T2>
483 class Tuple<T0, T1, T2>
484 {
485  T0 Value0;
486  static T0 ElementTypeI(viskores::internal::IndexTag<0>);
487  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>)
488  {
489  return this->Value0;
490  }
491  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>) const
492  {
493  return this->Value0;
494  }
495 
496  T1 Value1;
497  static T1 ElementTypeI(viskores::internal::IndexTag<1>);
498  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>)
499  {
500  return this->Value1;
501  }
502  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>) const
503  {
504  return this->Value1;
505  }
506 
507  T2 Value2;
508  static T2 ElementTypeI(viskores::internal::IndexTag<2>);
509  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>)
510  {
511  return this->Value2;
512  }
513  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>) const
514  {
515  return this->Value2;
516  }
517 
518 
519  // Invalid indices
520  template <viskores::IdComponent Index>
521  static viskores::internal::NullType ElementTypeI(viskores::internal::IndexTag<Index>);
522 
523  template <viskores::IdComponent, typename>
524  friend struct detail::TupleElementImpl;
525 
526 public:
527  static constexpr viskores::IdComponent Size = 3;
528  template <viskores::IdComponent Index>
530 
531  Tuple() = default;
532  Tuple(Tuple&&) = default;
533  Tuple(const Tuple&) = default;
534  ~Tuple() = default;
535  Tuple& operator=(Tuple&&) = default;
536  Tuple& operator=(const Tuple&) = default;
537 
539  template <typename A0, typename A1, typename A2>
540  VISKORES_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2)
541  : Value0(std::forward<A0>(a0))
542  , Value1(std::forward<A1>(a1))
543  , Value2(std::forward<A2>(a2))
544  {
545  }
546 
547  template <viskores::IdComponent Index>
548  VISKORES_EXEC_CONT auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
549  {
550  return this->GetImpl(viskores::internal::IndexTag<Index>{});
551  }
552 
553  template <viskores::IdComponent Index>
554  VISKORES_EXEC_CONT auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
555  {
556  return this->GetImpl(viskores::internal::IndexTag<Index>{});
557  }
558 
560  template <typename Function, typename... Args>
562  auto Apply(Function&& f, Args&&... args)
563  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2))
564  {
565  return f(std::forward<Args>(args)..., Value0, Value1, Value2);
566  }
568  template <typename Function, typename... Args>
570  auto Apply(Function&& f, Args&&... args) const
571  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2))
572  {
573  return f(std::forward<Args>(args)..., Value0, Value1, Value2);
574  }
575 
577  template <typename Function>
578  VISKORES_EXEC_CONT void ForEach(Function&& f)
579  {
580  viskores::ForEach(*this, std::forward<Function>(f));
581  }
583  template <typename Function>
584  VISKORES_EXEC_CONT void ForEach(Function&& f) const
585  {
586  viskores::ForEach(*this, std::forward<Function>(f));
587  }
588 
590  template <typename Function>
591  VISKORES_EXEC_CONT auto Transform(Function&& f)
592  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
593  {
594  return viskores::Transform(*this, std::forward<Function>(f));
595  }
597  template <typename Function>
598  VISKORES_EXEC_CONT auto Transform(Function&& f) const
599  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
600  {
601  return viskores::Transform(*this, std::forward<Function>(f));
602  }
603 };
604 
605 template<typename T0, typename T1, typename T2, typename T3>
606 class Tuple<T0, T1, T2, T3>
607 {
608  T0 Value0;
609  static T0 ElementTypeI(viskores::internal::IndexTag<0>);
610  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>)
611  {
612  return this->Value0;
613  }
614  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>) const
615  {
616  return this->Value0;
617  }
618 
619  T1 Value1;
620  static T1 ElementTypeI(viskores::internal::IndexTag<1>);
621  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>)
622  {
623  return this->Value1;
624  }
625  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>) const
626  {
627  return this->Value1;
628  }
629 
630  T2 Value2;
631  static T2 ElementTypeI(viskores::internal::IndexTag<2>);
632  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>)
633  {
634  return this->Value2;
635  }
636  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>) const
637  {
638  return this->Value2;
639  }
640 
641  T3 Value3;
642  static T3 ElementTypeI(viskores::internal::IndexTag<3>);
643  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>)
644  {
645  return this->Value3;
646  }
647  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>) const
648  {
649  return this->Value3;
650  }
651 
652 
653  // Invalid indices
654  template <viskores::IdComponent Index>
655  static viskores::internal::NullType ElementTypeI(viskores::internal::IndexTag<Index>);
656 
657  template <viskores::IdComponent, typename>
658  friend struct detail::TupleElementImpl;
659 
660 public:
661  static constexpr viskores::IdComponent Size = 4;
662  template <viskores::IdComponent Index>
664 
665  Tuple() = default;
666  Tuple(Tuple&&) = default;
667  Tuple(const Tuple&) = default;
668  ~Tuple() = default;
669  Tuple& operator=(Tuple&&) = default;
670  Tuple& operator=(const Tuple&) = default;
671 
673  template <typename A0, typename A1, typename A2, typename A3>
674  VISKORES_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3)
675  : Value0(std::forward<A0>(a0))
676  , Value1(std::forward<A1>(a1))
677  , Value2(std::forward<A2>(a2))
678  , Value3(std::forward<A3>(a3))
679  {
680  }
681 
682  template <viskores::IdComponent Index>
683  VISKORES_EXEC_CONT auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
684  {
685  return this->GetImpl(viskores::internal::IndexTag<Index>{});
686  }
687 
688  template <viskores::IdComponent Index>
689  VISKORES_EXEC_CONT auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
690  {
691  return this->GetImpl(viskores::internal::IndexTag<Index>{});
692  }
693 
695  template <typename Function, typename... Args>
697  auto Apply(Function&& f, Args&&... args)
698  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3))
699  {
700  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3);
701  }
703  template <typename Function, typename... Args>
705  auto Apply(Function&& f, Args&&... args) const
706  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3))
707  {
708  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3);
709  }
710 
712  template <typename Function>
713  VISKORES_EXEC_CONT void ForEach(Function&& f)
714  {
715  viskores::ForEach(*this, std::forward<Function>(f));
716  }
718  template <typename Function>
719  VISKORES_EXEC_CONT void ForEach(Function&& f) const
720  {
721  viskores::ForEach(*this, std::forward<Function>(f));
722  }
723 
725  template <typename Function>
726  VISKORES_EXEC_CONT auto Transform(Function&& f)
727  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
728  {
729  return viskores::Transform(*this, std::forward<Function>(f));
730  }
732  template <typename Function>
733  VISKORES_EXEC_CONT auto Transform(Function&& f) const
734  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
735  {
736  return viskores::Transform(*this, std::forward<Function>(f));
737  }
738 };
739 
740 template<typename T0, typename T1, typename T2, typename T3, typename T4>
741 class Tuple<T0, T1, T2, T3, T4>
742 {
743  T0 Value0;
744  static T0 ElementTypeI(viskores::internal::IndexTag<0>);
745  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>)
746  {
747  return this->Value0;
748  }
749  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>) const
750  {
751  return this->Value0;
752  }
753 
754  T1 Value1;
755  static T1 ElementTypeI(viskores::internal::IndexTag<1>);
756  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>)
757  {
758  return this->Value1;
759  }
760  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>) const
761  {
762  return this->Value1;
763  }
764 
765  T2 Value2;
766  static T2 ElementTypeI(viskores::internal::IndexTag<2>);
767  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>)
768  {
769  return this->Value2;
770  }
771  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>) const
772  {
773  return this->Value2;
774  }
775 
776  T3 Value3;
777  static T3 ElementTypeI(viskores::internal::IndexTag<3>);
778  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>)
779  {
780  return this->Value3;
781  }
782  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>) const
783  {
784  return this->Value3;
785  }
786 
787  T4 Value4;
788  static T4 ElementTypeI(viskores::internal::IndexTag<4>);
789  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>)
790  {
791  return this->Value4;
792  }
793  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>) const
794  {
795  return this->Value4;
796  }
797 
798 
799  // Invalid indices
800  template <viskores::IdComponent Index>
801  static viskores::internal::NullType ElementTypeI(viskores::internal::IndexTag<Index>);
802 
803  template <viskores::IdComponent, typename>
804  friend struct detail::TupleElementImpl;
805 
806 public:
807  static constexpr viskores::IdComponent Size = 5;
808  template <viskores::IdComponent Index>
810 
811  Tuple() = default;
812  Tuple(Tuple&&) = default;
813  Tuple(const Tuple&) = default;
814  ~Tuple() = default;
815  Tuple& operator=(Tuple&&) = default;
816  Tuple& operator=(const Tuple&) = default;
817 
819  template <typename A0, typename A1, typename A2, typename A3, typename A4>
820  VISKORES_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3, A4&& a4)
821  : Value0(std::forward<A0>(a0))
822  , Value1(std::forward<A1>(a1))
823  , Value2(std::forward<A2>(a2))
824  , Value3(std::forward<A3>(a3))
825  , Value4(std::forward<A4>(a4))
826  {
827  }
828 
829  template <viskores::IdComponent Index>
830  VISKORES_EXEC_CONT auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
831  {
832  return this->GetImpl(viskores::internal::IndexTag<Index>{});
833  }
834 
835  template <viskores::IdComponent Index>
836  VISKORES_EXEC_CONT auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
837  {
838  return this->GetImpl(viskores::internal::IndexTag<Index>{});
839  }
840 
842  template <typename Function, typename... Args>
844  auto Apply(Function&& f, Args&&... args)
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  }
850  template <typename Function, typename... Args>
852  auto Apply(Function&& f, Args&&... args) const
853  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4))
854  {
855  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4);
856  }
857 
859  template <typename Function>
860  VISKORES_EXEC_CONT void ForEach(Function&& f)
861  {
862  viskores::ForEach(*this, std::forward<Function>(f));
863  }
865  template <typename Function>
866  VISKORES_EXEC_CONT void ForEach(Function&& f) const
867  {
868  viskores::ForEach(*this, std::forward<Function>(f));
869  }
870 
872  template <typename Function>
873  VISKORES_EXEC_CONT auto Transform(Function&& f)
874  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
875  {
876  return viskores::Transform(*this, std::forward<Function>(f));
877  }
879  template <typename Function>
880  VISKORES_EXEC_CONT auto Transform(Function&& f) const
881  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
882  {
883  return viskores::Transform(*this, std::forward<Function>(f));
884  }
885 };
886 
887 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
888 class Tuple<T0, T1, T2, T3, T4, T5>
889 {
890  T0 Value0;
891  static T0 ElementTypeI(viskores::internal::IndexTag<0>);
892  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>)
893  {
894  return this->Value0;
895  }
896  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>) const
897  {
898  return this->Value0;
899  }
900 
901  T1 Value1;
902  static T1 ElementTypeI(viskores::internal::IndexTag<1>);
903  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>)
904  {
905  return this->Value1;
906  }
907  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>) const
908  {
909  return this->Value1;
910  }
911 
912  T2 Value2;
913  static T2 ElementTypeI(viskores::internal::IndexTag<2>);
914  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>)
915  {
916  return this->Value2;
917  }
918  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>) const
919  {
920  return this->Value2;
921  }
922 
923  T3 Value3;
924  static T3 ElementTypeI(viskores::internal::IndexTag<3>);
925  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>)
926  {
927  return this->Value3;
928  }
929  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>) const
930  {
931  return this->Value3;
932  }
933 
934  T4 Value4;
935  static T4 ElementTypeI(viskores::internal::IndexTag<4>);
936  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>)
937  {
938  return this->Value4;
939  }
940  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>) const
941  {
942  return this->Value4;
943  }
944 
945  T5 Value5;
946  static T5 ElementTypeI(viskores::internal::IndexTag<5>);
947  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>)
948  {
949  return this->Value5;
950  }
951  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>) const
952  {
953  return this->Value5;
954  }
955 
956 
957  // Invalid indices
958  template <viskores::IdComponent Index>
959  static viskores::internal::NullType ElementTypeI(viskores::internal::IndexTag<Index>);
960 
961  template <viskores::IdComponent, typename>
962  friend struct detail::TupleElementImpl;
963 
964 public:
965  static constexpr viskores::IdComponent Size = 6;
966  template <viskores::IdComponent Index>
968 
969  Tuple() = default;
970  Tuple(Tuple&&) = default;
971  Tuple(const Tuple&) = default;
972  ~Tuple() = default;
973  Tuple& operator=(Tuple&&) = default;
974  Tuple& operator=(const Tuple&) = default;
975 
977  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
978  VISKORES_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3, A4&& a4, A5&& a5)
979  : Value0(std::forward<A0>(a0))
980  , Value1(std::forward<A1>(a1))
981  , Value2(std::forward<A2>(a2))
982  , Value3(std::forward<A3>(a3))
983  , Value4(std::forward<A4>(a4))
984  , Value5(std::forward<A5>(a5))
985  {
986  }
987 
988  template <viskores::IdComponent Index>
989  VISKORES_EXEC_CONT auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
990  {
991  return this->GetImpl(viskores::internal::IndexTag<Index>{});
992  }
993 
994  template <viskores::IdComponent Index>
995  VISKORES_EXEC_CONT auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
996  {
997  return this->GetImpl(viskores::internal::IndexTag<Index>{});
998  }
999 
1001  template <typename Function, typename... Args>
1003  auto Apply(Function&& f, Args&&... args)
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  }
1009  template <typename Function, typename... Args>
1011  auto Apply(Function&& f, Args&&... args) const
1012  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5))
1013  {
1014  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5);
1015  }
1016 
1018  template <typename Function>
1019  VISKORES_EXEC_CONT void ForEach(Function&& f)
1020  {
1021  viskores::ForEach(*this, std::forward<Function>(f));
1022  }
1024  template <typename Function>
1025  VISKORES_EXEC_CONT void ForEach(Function&& f) const
1026  {
1027  viskores::ForEach(*this, std::forward<Function>(f));
1028  }
1029 
1031  template <typename Function>
1032  VISKORES_EXEC_CONT auto Transform(Function&& f)
1033  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
1034  {
1035  return viskores::Transform(*this, std::forward<Function>(f));
1036  }
1038  template <typename Function>
1039  VISKORES_EXEC_CONT auto Transform(Function&& f) const
1040  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
1041  {
1042  return viskores::Transform(*this, std::forward<Function>(f));
1043  }
1044 };
1045 
1046 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
1047 class Tuple<T0, T1, T2, T3, T4, T5, T6>
1048 {
1050  static T0 ElementTypeI(viskores::internal::IndexTag<0>);
1051  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>)
1052  {
1053  return this->Value0;
1054  }
1055  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>) const
1056  {
1057  return this->Value0;
1058  }
1059 
1061  static T1 ElementTypeI(viskores::internal::IndexTag<1>);
1062  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>)
1063  {
1064  return this->Value1;
1065  }
1066  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>) const
1067  {
1068  return this->Value1;
1069  }
1070 
1072  static T2 ElementTypeI(viskores::internal::IndexTag<2>);
1073  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>)
1074  {
1075  return this->Value2;
1076  }
1077  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>) const
1078  {
1079  return this->Value2;
1080  }
1081 
1083  static T3 ElementTypeI(viskores::internal::IndexTag<3>);
1084  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>)
1085  {
1086  return this->Value3;
1087  }
1088  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>) const
1089  {
1090  return this->Value3;
1091  }
1092 
1094  static T4 ElementTypeI(viskores::internal::IndexTag<4>);
1095  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>)
1096  {
1097  return this->Value4;
1098  }
1099  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>) const
1100  {
1101  return this->Value4;
1102  }
1103 
1105  static T5 ElementTypeI(viskores::internal::IndexTag<5>);
1106  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>)
1107  {
1108  return this->Value5;
1109  }
1110  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>) const
1111  {
1112  return this->Value5;
1113  }
1114 
1116  static T6 ElementTypeI(viskores::internal::IndexTag<6>);
1117  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>)
1118  {
1119  return this->Value6;
1120  }
1121  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>) const
1122  {
1123  return this->Value6;
1124  }
1125 
1126 
1127  // Invalid indices
1128  template <viskores::IdComponent Index>
1129  static viskores::internal::NullType ElementTypeI(viskores::internal::IndexTag<Index>);
1130 
1131  template <viskores::IdComponent, typename>
1132  friend struct detail::TupleElementImpl;
1133 
1134 public:
1135  static constexpr viskores::IdComponent Size = 7;
1136  template <viskores::IdComponent Index>
1138 
1139  Tuple() = default;
1140  Tuple(Tuple&&) = default;
1141  Tuple(const Tuple&) = default;
1142  ~Tuple() = default;
1143  Tuple& operator=(Tuple&&) = default;
1144  Tuple& operator=(const Tuple&) = default;
1145 
1147  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1148  VISKORES_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3, A4&& a4, A5&& a5, A6&& a6)
1149  : Value0(std::forward<A0>(a0))
1150  , Value1(std::forward<A1>(a1))
1151  , Value2(std::forward<A2>(a2))
1152  , Value3(std::forward<A3>(a3))
1153  , Value4(std::forward<A4>(a4))
1154  , Value5(std::forward<A5>(a5))
1155  , Value6(std::forward<A6>(a6))
1156  {
1157  }
1158 
1159  template <viskores::IdComponent Index>
1160  VISKORES_EXEC_CONT auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
1161  {
1162  return this->GetImpl(viskores::internal::IndexTag<Index>{});
1163  }
1164 
1165  template <viskores::IdComponent Index>
1166  VISKORES_EXEC_CONT auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
1167  {
1168  return this->GetImpl(viskores::internal::IndexTag<Index>{});
1169  }
1170 
1172  template <typename Function, typename... Args>
1174  auto Apply(Function&& f, Args&&... args)
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  }
1180  template <typename Function, typename... Args>
1182  auto Apply(Function&& f, Args&&... args) const
1183  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6))
1184  {
1185  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6);
1186  }
1187 
1189  template <typename Function>
1190  VISKORES_EXEC_CONT void ForEach(Function&& f)
1191  {
1192  viskores::ForEach(*this, std::forward<Function>(f));
1193  }
1195  template <typename Function>
1196  VISKORES_EXEC_CONT void ForEach(Function&& f) const
1197  {
1198  viskores::ForEach(*this, std::forward<Function>(f));
1199  }
1200 
1202  template <typename Function>
1203  VISKORES_EXEC_CONT auto Transform(Function&& f)
1204  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
1205  {
1206  return viskores::Transform(*this, std::forward<Function>(f));
1207  }
1209  template <typename Function>
1210  VISKORES_EXEC_CONT auto Transform(Function&& f) const
1211  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
1212  {
1213  return viskores::Transform(*this, std::forward<Function>(f));
1214  }
1215 };
1216 
1217 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
1218 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7>
1219 {
1221  static T0 ElementTypeI(viskores::internal::IndexTag<0>);
1222  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>)
1223  {
1224  return this->Value0;
1225  }
1226  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>) const
1227  {
1228  return this->Value0;
1229  }
1230 
1232  static T1 ElementTypeI(viskores::internal::IndexTag<1>);
1233  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>)
1234  {
1235  return this->Value1;
1236  }
1237  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>) const
1238  {
1239  return this->Value1;
1240  }
1241 
1243  static T2 ElementTypeI(viskores::internal::IndexTag<2>);
1244  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>)
1245  {
1246  return this->Value2;
1247  }
1248  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>) const
1249  {
1250  return this->Value2;
1251  }
1252 
1254  static T3 ElementTypeI(viskores::internal::IndexTag<3>);
1255  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>)
1256  {
1257  return this->Value3;
1258  }
1259  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>) const
1260  {
1261  return this->Value3;
1262  }
1263 
1265  static T4 ElementTypeI(viskores::internal::IndexTag<4>);
1266  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>)
1267  {
1268  return this->Value4;
1269  }
1270  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>) const
1271  {
1272  return this->Value4;
1273  }
1274 
1276  static T5 ElementTypeI(viskores::internal::IndexTag<5>);
1277  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>)
1278  {
1279  return this->Value5;
1280  }
1281  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>) const
1282  {
1283  return this->Value5;
1284  }
1285 
1287  static T6 ElementTypeI(viskores::internal::IndexTag<6>);
1288  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>)
1289  {
1290  return this->Value6;
1291  }
1292  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>) const
1293  {
1294  return this->Value6;
1295  }
1296 
1298  static T7 ElementTypeI(viskores::internal::IndexTag<7>);
1299  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>)
1300  {
1301  return this->Value7;
1302  }
1303  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>) const
1304  {
1305  return this->Value7;
1306  }
1307 
1308 
1309  // Invalid indices
1310  template <viskores::IdComponent Index>
1311  static viskores::internal::NullType ElementTypeI(viskores::internal::IndexTag<Index>);
1312 
1313  template <viskores::IdComponent, typename>
1314  friend struct detail::TupleElementImpl;
1315 
1316 public:
1317  static constexpr viskores::IdComponent Size = 8;
1318  template <viskores::IdComponent Index>
1320 
1321  Tuple() = default;
1322  Tuple(Tuple&&) = default;
1323  Tuple(const Tuple&) = default;
1324  ~Tuple() = default;
1325  Tuple& operator=(Tuple&&) = default;
1326  Tuple& operator=(const Tuple&) = default;
1327 
1329  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1330  VISKORES_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3, A4&& a4, A5&& a5, A6&& a6, A7&& a7)
1331  : Value0(std::forward<A0>(a0))
1332  , Value1(std::forward<A1>(a1))
1333  , Value2(std::forward<A2>(a2))
1334  , Value3(std::forward<A3>(a3))
1335  , Value4(std::forward<A4>(a4))
1336  , Value5(std::forward<A5>(a5))
1337  , Value6(std::forward<A6>(a6))
1338  , Value7(std::forward<A7>(a7))
1339  {
1340  }
1341 
1342  template <viskores::IdComponent Index>
1343  VISKORES_EXEC_CONT auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
1344  {
1345  return this->GetImpl(viskores::internal::IndexTag<Index>{});
1346  }
1347 
1348  template <viskores::IdComponent Index>
1349  VISKORES_EXEC_CONT auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
1350  {
1351  return this->GetImpl(viskores::internal::IndexTag<Index>{});
1352  }
1353 
1355  template <typename Function, typename... Args>
1357  auto Apply(Function&& f, Args&&... args)
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  }
1363  template <typename Function, typename... Args>
1365  auto Apply(Function&& f, Args&&... args) const
1366  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7))
1367  {
1368  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7);
1369  }
1370 
1372  template <typename Function>
1373  VISKORES_EXEC_CONT void ForEach(Function&& f)
1374  {
1375  viskores::ForEach(*this, std::forward<Function>(f));
1376  }
1378  template <typename Function>
1379  VISKORES_EXEC_CONT void ForEach(Function&& f) const
1380  {
1381  viskores::ForEach(*this, std::forward<Function>(f));
1382  }
1383 
1385  template <typename Function>
1386  VISKORES_EXEC_CONT auto Transform(Function&& f)
1387  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
1388  {
1389  return viskores::Transform(*this, std::forward<Function>(f));
1390  }
1392  template <typename Function>
1393  VISKORES_EXEC_CONT auto Transform(Function&& f) const
1394  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
1395  {
1396  return viskores::Transform(*this, std::forward<Function>(f));
1397  }
1398 };
1399 
1400 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
1401 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8>
1402 {
1404  static T0 ElementTypeI(viskores::internal::IndexTag<0>);
1405  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>)
1406  {
1407  return this->Value0;
1408  }
1409  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>) const
1410  {
1411  return this->Value0;
1412  }
1413 
1415  static T1 ElementTypeI(viskores::internal::IndexTag<1>);
1416  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>)
1417  {
1418  return this->Value1;
1419  }
1420  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>) const
1421  {
1422  return this->Value1;
1423  }
1424 
1426  static T2 ElementTypeI(viskores::internal::IndexTag<2>);
1427  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>)
1428  {
1429  return this->Value2;
1430  }
1431  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>) const
1432  {
1433  return this->Value2;
1434  }
1435 
1437  static T3 ElementTypeI(viskores::internal::IndexTag<3>);
1438  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>)
1439  {
1440  return this->Value3;
1441  }
1442  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>) const
1443  {
1444  return this->Value3;
1445  }
1446 
1448  static T4 ElementTypeI(viskores::internal::IndexTag<4>);
1449  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>)
1450  {
1451  return this->Value4;
1452  }
1453  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>) const
1454  {
1455  return this->Value4;
1456  }
1457 
1459  static T5 ElementTypeI(viskores::internal::IndexTag<5>);
1460  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>)
1461  {
1462  return this->Value5;
1463  }
1464  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>) const
1465  {
1466  return this->Value5;
1467  }
1468 
1470  static T6 ElementTypeI(viskores::internal::IndexTag<6>);
1471  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>)
1472  {
1473  return this->Value6;
1474  }
1475  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>) const
1476  {
1477  return this->Value6;
1478  }
1479 
1481  static T7 ElementTypeI(viskores::internal::IndexTag<7>);
1482  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>)
1483  {
1484  return this->Value7;
1485  }
1486  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>) const
1487  {
1488  return this->Value7;
1489  }
1490 
1492  static T8 ElementTypeI(viskores::internal::IndexTag<8>);
1493  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>)
1494  {
1495  return this->Value8;
1496  }
1497  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>) const
1498  {
1499  return this->Value8;
1500  }
1501 
1502 
1503  // Invalid indices
1504  template <viskores::IdComponent Index>
1505  static viskores::internal::NullType ElementTypeI(viskores::internal::IndexTag<Index>);
1506 
1507  template <viskores::IdComponent, typename>
1508  friend struct detail::TupleElementImpl;
1509 
1510 public:
1511  static constexpr viskores::IdComponent Size = 9;
1512  template <viskores::IdComponent Index>
1514 
1515  Tuple() = default;
1516  Tuple(Tuple&&) = default;
1517  Tuple(const Tuple&) = default;
1518  ~Tuple() = default;
1519  Tuple& operator=(Tuple&&) = default;
1520  Tuple& operator=(const Tuple&) = default;
1521 
1523  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
1524  VISKORES_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3, A4&& a4, A5&& a5, A6&& a6, A7&& a7, A8&& a8)
1525  : Value0(std::forward<A0>(a0))
1526  , Value1(std::forward<A1>(a1))
1527  , Value2(std::forward<A2>(a2))
1528  , Value3(std::forward<A3>(a3))
1529  , Value4(std::forward<A4>(a4))
1530  , Value5(std::forward<A5>(a5))
1531  , Value6(std::forward<A6>(a6))
1532  , Value7(std::forward<A7>(a7))
1533  , Value8(std::forward<A8>(a8))
1534  {
1535  }
1536 
1537  template <viskores::IdComponent Index>
1538  VISKORES_EXEC_CONT auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
1539  {
1540  return this->GetImpl(viskores::internal::IndexTag<Index>{});
1541  }
1542 
1543  template <viskores::IdComponent Index>
1544  VISKORES_EXEC_CONT auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
1545  {
1546  return this->GetImpl(viskores::internal::IndexTag<Index>{});
1547  }
1548 
1550  template <typename Function, typename... Args>
1552  auto Apply(Function&& f, Args&&... args)
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  }
1558  template <typename Function, typename... Args>
1560  auto Apply(Function&& f, Args&&... args) const
1561  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8))
1562  {
1563  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8);
1564  }
1565 
1567  template <typename Function>
1568  VISKORES_EXEC_CONT void ForEach(Function&& f)
1569  {
1570  viskores::ForEach(*this, std::forward<Function>(f));
1571  }
1573  template <typename Function>
1574  VISKORES_EXEC_CONT void ForEach(Function&& f) const
1575  {
1576  viskores::ForEach(*this, std::forward<Function>(f));
1577  }
1578 
1580  template <typename Function>
1581  VISKORES_EXEC_CONT auto Transform(Function&& f)
1582  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
1583  {
1584  return viskores::Transform(*this, std::forward<Function>(f));
1585  }
1587  template <typename Function>
1588  VISKORES_EXEC_CONT auto Transform(Function&& f) const
1589  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
1590  {
1591  return viskores::Transform(*this, std::forward<Function>(f));
1592  }
1593 };
1594 
1595 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
1596 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>
1597 {
1599  static T0 ElementTypeI(viskores::internal::IndexTag<0>);
1600  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>)
1601  {
1602  return this->Value0;
1603  }
1604  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>) const
1605  {
1606  return this->Value0;
1607  }
1608 
1610  static T1 ElementTypeI(viskores::internal::IndexTag<1>);
1611  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>)
1612  {
1613  return this->Value1;
1614  }
1615  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>) const
1616  {
1617  return this->Value1;
1618  }
1619 
1621  static T2 ElementTypeI(viskores::internal::IndexTag<2>);
1622  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>)
1623  {
1624  return this->Value2;
1625  }
1626  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>) const
1627  {
1628  return this->Value2;
1629  }
1630 
1632  static T3 ElementTypeI(viskores::internal::IndexTag<3>);
1633  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>)
1634  {
1635  return this->Value3;
1636  }
1637  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>) const
1638  {
1639  return this->Value3;
1640  }
1641 
1643  static T4 ElementTypeI(viskores::internal::IndexTag<4>);
1644  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>)
1645  {
1646  return this->Value4;
1647  }
1648  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>) const
1649  {
1650  return this->Value4;
1651  }
1652 
1654  static T5 ElementTypeI(viskores::internal::IndexTag<5>);
1655  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>)
1656  {
1657  return this->Value5;
1658  }
1659  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>) const
1660  {
1661  return this->Value5;
1662  }
1663 
1665  static T6 ElementTypeI(viskores::internal::IndexTag<6>);
1666  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>)
1667  {
1668  return this->Value6;
1669  }
1670  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>) const
1671  {
1672  return this->Value6;
1673  }
1674 
1676  static T7 ElementTypeI(viskores::internal::IndexTag<7>);
1677  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>)
1678  {
1679  return this->Value7;
1680  }
1681  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>) const
1682  {
1683  return this->Value7;
1684  }
1685 
1687  static T8 ElementTypeI(viskores::internal::IndexTag<8>);
1688  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>)
1689  {
1690  return this->Value8;
1691  }
1692  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>) const
1693  {
1694  return this->Value8;
1695  }
1696 
1698  static T9 ElementTypeI(viskores::internal::IndexTag<9>);
1699  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>)
1700  {
1701  return this->Value9;
1702  }
1703  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>) const
1704  {
1705  return this->Value9;
1706  }
1707 
1708 
1709  // Invalid indices
1710  template <viskores::IdComponent Index>
1711  static viskores::internal::NullType ElementTypeI(viskores::internal::IndexTag<Index>);
1712 
1713  template <viskores::IdComponent, typename>
1714  friend struct detail::TupleElementImpl;
1715 
1716 public:
1717  static constexpr viskores::IdComponent Size = 10;
1718  template <viskores::IdComponent Index>
1720 
1721  Tuple() = default;
1722  Tuple(Tuple&&) = default;
1723  Tuple(const Tuple&) = default;
1724  ~Tuple() = default;
1725  Tuple& operator=(Tuple&&) = default;
1726  Tuple& operator=(const Tuple&) = default;
1727 
1729  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
1730  VISKORES_EXEC_CONT Tuple(A0&& a0, A1&& a1, A2&& a2, A3&& a3, A4&& a4, A5&& a5, A6&& a6, A7&& a7, A8&& a8, A9&& a9)
1731  : Value0(std::forward<A0>(a0))
1732  , Value1(std::forward<A1>(a1))
1733  , Value2(std::forward<A2>(a2))
1734  , Value3(std::forward<A3>(a3))
1735  , Value4(std::forward<A4>(a4))
1736  , Value5(std::forward<A5>(a5))
1737  , Value6(std::forward<A6>(a6))
1738  , Value7(std::forward<A7>(a7))
1739  , Value8(std::forward<A8>(a8))
1740  , Value9(std::forward<A9>(a9))
1741  {
1742  }
1743 
1744  template <viskores::IdComponent Index>
1745  VISKORES_EXEC_CONT auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
1746  {
1747  return this->GetImpl(viskores::internal::IndexTag<Index>{});
1748  }
1749 
1750  template <viskores::IdComponent Index>
1751  VISKORES_EXEC_CONT auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
1752  {
1753  return this->GetImpl(viskores::internal::IndexTag<Index>{});
1754  }
1755 
1757  template <typename Function, typename... Args>
1759  auto Apply(Function&& f, Args&&... args)
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  }
1765  template <typename Function, typename... Args>
1767  auto Apply(Function&& f, Args&&... args) const
1768  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9))
1769  {
1770  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9);
1771  }
1772 
1774  template <typename Function>
1775  VISKORES_EXEC_CONT void ForEach(Function&& f)
1776  {
1777  viskores::ForEach(*this, std::forward<Function>(f));
1778  }
1780  template <typename Function>
1781  VISKORES_EXEC_CONT void ForEach(Function&& f) const
1782  {
1783  viskores::ForEach(*this, std::forward<Function>(f));
1784  }
1785 
1787  template <typename Function>
1788  VISKORES_EXEC_CONT auto Transform(Function&& f)
1789  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
1790  {
1791  return viskores::Transform(*this, std::forward<Function>(f));
1792  }
1794  template <typename Function>
1795  VISKORES_EXEC_CONT auto Transform(Function&& f) const
1796  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
1797  {
1798  return viskores::Transform(*this, std::forward<Function>(f));
1799  }
1800 };
1801 
1802 template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
1803 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
1804 {
1806  static T0 ElementTypeI(viskores::internal::IndexTag<0>);
1807  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>)
1808  {
1809  return this->Value0;
1810  }
1811  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>) const
1812  {
1813  return this->Value0;
1814  }
1815 
1817  static T1 ElementTypeI(viskores::internal::IndexTag<1>);
1818  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>)
1819  {
1820  return this->Value1;
1821  }
1822  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>) const
1823  {
1824  return this->Value1;
1825  }
1826 
1828  static T2 ElementTypeI(viskores::internal::IndexTag<2>);
1829  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>)
1830  {
1831  return this->Value2;
1832  }
1833  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>) const
1834  {
1835  return this->Value2;
1836  }
1837 
1839  static T3 ElementTypeI(viskores::internal::IndexTag<3>);
1840  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>)
1841  {
1842  return this->Value3;
1843  }
1844  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>) const
1845  {
1846  return this->Value3;
1847  }
1848 
1850  static T4 ElementTypeI(viskores::internal::IndexTag<4>);
1851  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>)
1852  {
1853  return this->Value4;
1854  }
1855  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>) const
1856  {
1857  return this->Value4;
1858  }
1859 
1861  static T5 ElementTypeI(viskores::internal::IndexTag<5>);
1862  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>)
1863  {
1864  return this->Value5;
1865  }
1866  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>) const
1867  {
1868  return this->Value5;
1869  }
1870 
1872  static T6 ElementTypeI(viskores::internal::IndexTag<6>);
1873  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>)
1874  {
1875  return this->Value6;
1876  }
1877  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>) const
1878  {
1879  return this->Value6;
1880  }
1881 
1883  static T7 ElementTypeI(viskores::internal::IndexTag<7>);
1884  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>)
1885  {
1886  return this->Value7;
1887  }
1888  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>) const
1889  {
1890  return this->Value7;
1891  }
1892 
1894  static T8 ElementTypeI(viskores::internal::IndexTag<8>);
1895  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>)
1896  {
1897  return this->Value8;
1898  }
1899  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>) const
1900  {
1901  return this->Value8;
1902  }
1903 
1905  static T9 ElementTypeI(viskores::internal::IndexTag<9>);
1906  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>)
1907  {
1908  return this->Value9;
1909  }
1910  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>) const
1911  {
1912  return this->Value9;
1913  }
1914 
1915  T10 Value10;
1916  static T10 ElementTypeI(viskores::internal::IndexTag<10>);
1917  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T10>& GetImpl(viskores::internal::IndexTag<10>)
1918  {
1919  return this->Value10;
1920  }
1921  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T10>& GetImpl(viskores::internal::IndexTag<10>) const
1922  {
1923  return this->Value10;
1924  }
1925 
1926 
1927  // Invalid indices
1928  template <viskores::IdComponent Index>
1929  static viskores::internal::NullType ElementTypeI(viskores::internal::IndexTag<Index>);
1930 
1931  template <viskores::IdComponent, typename>
1932  friend struct detail::TupleElementImpl;
1933 
1934 public:
1935  static constexpr viskores::IdComponent Size = 11;
1936  template <viskores::IdComponent Index>
1938 
1939  Tuple() = default;
1940  Tuple(Tuple&&) = default;
1941  Tuple(const Tuple&) = default;
1942  ~Tuple() = default;
1943  Tuple& operator=(Tuple&&) = default;
1944  Tuple& operator=(const Tuple&) = default;
1945 
1947  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10>
1948  VISKORES_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)
1949  : Value0(std::forward<A0>(a0))
1950  , Value1(std::forward<A1>(a1))
1951  , Value2(std::forward<A2>(a2))
1952  , Value3(std::forward<A3>(a3))
1953  , Value4(std::forward<A4>(a4))
1954  , Value5(std::forward<A5>(a5))
1955  , Value6(std::forward<A6>(a6))
1956  , Value7(std::forward<A7>(a7))
1957  , Value8(std::forward<A8>(a8))
1958  , Value9(std::forward<A9>(a9))
1959  , Value10(std::forward<A10>(a10))
1960  {
1961  }
1962 
1963  template <viskores::IdComponent Index>
1964  VISKORES_EXEC_CONT auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
1965  {
1966  return this->GetImpl(viskores::internal::IndexTag<Index>{});
1967  }
1968 
1969  template <viskores::IdComponent Index>
1970  VISKORES_EXEC_CONT auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
1971  {
1972  return this->GetImpl(viskores::internal::IndexTag<Index>{});
1973  }
1974 
1976  template <typename Function, typename... Args>
1978  auto Apply(Function&& f, Args&&... args)
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  }
1984  template <typename Function, typename... Args>
1986  auto Apply(Function&& f, Args&&... args) const
1987  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10))
1988  {
1989  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10);
1990  }
1991 
1993  template <typename Function>
1994  VISKORES_EXEC_CONT void ForEach(Function&& f)
1995  {
1996  viskores::ForEach(*this, std::forward<Function>(f));
1997  }
1999  template <typename Function>
2000  VISKORES_EXEC_CONT void ForEach(Function&& f) const
2001  {
2002  viskores::ForEach(*this, std::forward<Function>(f));
2003  }
2004 
2006  template <typename Function>
2007  VISKORES_EXEC_CONT auto Transform(Function&& f)
2008  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
2009  {
2010  return viskores::Transform(*this, std::forward<Function>(f));
2011  }
2013  template <typename Function>
2014  VISKORES_EXEC_CONT auto Transform(Function&& f) const
2015  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
2016  {
2017  return viskores::Transform(*this, std::forward<Function>(f));
2018  }
2019 };
2020 
2021 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>
2022 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>
2023 {
2025  static T0 ElementTypeI(viskores::internal::IndexTag<0>);
2026  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>)
2027  {
2028  return this->Value0;
2029  }
2030  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>) const
2031  {
2032  return this->Value0;
2033  }
2034 
2036  static T1 ElementTypeI(viskores::internal::IndexTag<1>);
2037  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>)
2038  {
2039  return this->Value1;
2040  }
2041  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>) const
2042  {
2043  return this->Value1;
2044  }
2045 
2047  static T2 ElementTypeI(viskores::internal::IndexTag<2>);
2048  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>)
2049  {
2050  return this->Value2;
2051  }
2052  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>) const
2053  {
2054  return this->Value2;
2055  }
2056 
2058  static T3 ElementTypeI(viskores::internal::IndexTag<3>);
2059  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>)
2060  {
2061  return this->Value3;
2062  }
2063  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>) const
2064  {
2065  return this->Value3;
2066  }
2067 
2069  static T4 ElementTypeI(viskores::internal::IndexTag<4>);
2070  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>)
2071  {
2072  return this->Value4;
2073  }
2074  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>) const
2075  {
2076  return this->Value4;
2077  }
2078 
2080  static T5 ElementTypeI(viskores::internal::IndexTag<5>);
2081  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>)
2082  {
2083  return this->Value5;
2084  }
2085  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>) const
2086  {
2087  return this->Value5;
2088  }
2089 
2091  static T6 ElementTypeI(viskores::internal::IndexTag<6>);
2092  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>)
2093  {
2094  return this->Value6;
2095  }
2096  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>) const
2097  {
2098  return this->Value6;
2099  }
2100 
2102  static T7 ElementTypeI(viskores::internal::IndexTag<7>);
2103  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>)
2104  {
2105  return this->Value7;
2106  }
2107  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>) const
2108  {
2109  return this->Value7;
2110  }
2111 
2113  static T8 ElementTypeI(viskores::internal::IndexTag<8>);
2114  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>)
2115  {
2116  return this->Value8;
2117  }
2118  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>) const
2119  {
2120  return this->Value8;
2121  }
2122 
2124  static T9 ElementTypeI(viskores::internal::IndexTag<9>);
2125  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>)
2126  {
2127  return this->Value9;
2128  }
2129  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>) const
2130  {
2131  return this->Value9;
2132  }
2133 
2134  T10 Value10;
2135  static T10 ElementTypeI(viskores::internal::IndexTag<10>);
2136  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T10>& GetImpl(viskores::internal::IndexTag<10>)
2137  {
2138  return this->Value10;
2139  }
2140  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T10>& GetImpl(viskores::internal::IndexTag<10>) const
2141  {
2142  return this->Value10;
2143  }
2144 
2145  T11 Value11;
2146  static T11 ElementTypeI(viskores::internal::IndexTag<11>);
2147  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T11>& GetImpl(viskores::internal::IndexTag<11>)
2148  {
2149  return this->Value11;
2150  }
2151  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T11>& GetImpl(viskores::internal::IndexTag<11>) const
2152  {
2153  return this->Value11;
2154  }
2155 
2156 
2157  // Invalid indices
2158  template <viskores::IdComponent Index>
2159  static viskores::internal::NullType ElementTypeI(viskores::internal::IndexTag<Index>);
2160 
2161  template <viskores::IdComponent, typename>
2162  friend struct detail::TupleElementImpl;
2163 
2164 public:
2165  static constexpr viskores::IdComponent Size = 12;
2166  template <viskores::IdComponent Index>
2168 
2169  Tuple() = default;
2170  Tuple(Tuple&&) = default;
2171  Tuple(const Tuple&) = default;
2172  ~Tuple() = default;
2173  Tuple& operator=(Tuple&&) = default;
2174  Tuple& operator=(const Tuple&) = default;
2175 
2177  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>
2178  VISKORES_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)
2179  : Value0(std::forward<A0>(a0))
2180  , Value1(std::forward<A1>(a1))
2181  , Value2(std::forward<A2>(a2))
2182  , Value3(std::forward<A3>(a3))
2183  , Value4(std::forward<A4>(a4))
2184  , Value5(std::forward<A5>(a5))
2185  , Value6(std::forward<A6>(a6))
2186  , Value7(std::forward<A7>(a7))
2187  , Value8(std::forward<A8>(a8))
2188  , Value9(std::forward<A9>(a9))
2189  , Value10(std::forward<A10>(a10))
2190  , Value11(std::forward<A11>(a11))
2191  {
2192  }
2193 
2194  template <viskores::IdComponent Index>
2195  VISKORES_EXEC_CONT auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
2196  {
2197  return this->GetImpl(viskores::internal::IndexTag<Index>{});
2198  }
2199 
2200  template <viskores::IdComponent Index>
2201  VISKORES_EXEC_CONT auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
2202  {
2203  return this->GetImpl(viskores::internal::IndexTag<Index>{});
2204  }
2205 
2207  template <typename Function, typename... Args>
2209  auto Apply(Function&& f, Args&&... args)
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  }
2215  template <typename Function, typename... Args>
2217  auto Apply(Function&& f, Args&&... args) const
2218  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11))
2219  {
2220  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11);
2221  }
2222 
2224  template <typename Function>
2225  VISKORES_EXEC_CONT void ForEach(Function&& f)
2226  {
2227  viskores::ForEach(*this, std::forward<Function>(f));
2228  }
2230  template <typename Function>
2231  VISKORES_EXEC_CONT void ForEach(Function&& f) const
2232  {
2233  viskores::ForEach(*this, std::forward<Function>(f));
2234  }
2235 
2237  template <typename Function>
2238  VISKORES_EXEC_CONT auto Transform(Function&& f)
2239  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
2240  {
2241  return viskores::Transform(*this, std::forward<Function>(f));
2242  }
2244  template <typename Function>
2245  VISKORES_EXEC_CONT auto Transform(Function&& f) const
2246  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
2247  {
2248  return viskores::Transform(*this, std::forward<Function>(f));
2249  }
2250 };
2251 
2252 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>
2253 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>
2254 {
2256  static T0 ElementTypeI(viskores::internal::IndexTag<0>);
2257  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>)
2258  {
2259  return this->Value0;
2260  }
2261  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>) const
2262  {
2263  return this->Value0;
2264  }
2265 
2267  static T1 ElementTypeI(viskores::internal::IndexTag<1>);
2268  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>)
2269  {
2270  return this->Value1;
2271  }
2272  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>) const
2273  {
2274  return this->Value1;
2275  }
2276 
2278  static T2 ElementTypeI(viskores::internal::IndexTag<2>);
2279  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>)
2280  {
2281  return this->Value2;
2282  }
2283  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>) const
2284  {
2285  return this->Value2;
2286  }
2287 
2289  static T3 ElementTypeI(viskores::internal::IndexTag<3>);
2290  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>)
2291  {
2292  return this->Value3;
2293  }
2294  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>) const
2295  {
2296  return this->Value3;
2297  }
2298 
2300  static T4 ElementTypeI(viskores::internal::IndexTag<4>);
2301  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>)
2302  {
2303  return this->Value4;
2304  }
2305  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>) const
2306  {
2307  return this->Value4;
2308  }
2309 
2311  static T5 ElementTypeI(viskores::internal::IndexTag<5>);
2312  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>)
2313  {
2314  return this->Value5;
2315  }
2316  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>) const
2317  {
2318  return this->Value5;
2319  }
2320 
2322  static T6 ElementTypeI(viskores::internal::IndexTag<6>);
2323  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>)
2324  {
2325  return this->Value6;
2326  }
2327  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>) const
2328  {
2329  return this->Value6;
2330  }
2331 
2333  static T7 ElementTypeI(viskores::internal::IndexTag<7>);
2334  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>)
2335  {
2336  return this->Value7;
2337  }
2338  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>) const
2339  {
2340  return this->Value7;
2341  }
2342 
2344  static T8 ElementTypeI(viskores::internal::IndexTag<8>);
2345  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>)
2346  {
2347  return this->Value8;
2348  }
2349  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>) const
2350  {
2351  return this->Value8;
2352  }
2353 
2355  static T9 ElementTypeI(viskores::internal::IndexTag<9>);
2356  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>)
2357  {
2358  return this->Value9;
2359  }
2360  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>) const
2361  {
2362  return this->Value9;
2363  }
2364 
2365  T10 Value10;
2366  static T10 ElementTypeI(viskores::internal::IndexTag<10>);
2367  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T10>& GetImpl(viskores::internal::IndexTag<10>)
2368  {
2369  return this->Value10;
2370  }
2371  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T10>& GetImpl(viskores::internal::IndexTag<10>) const
2372  {
2373  return this->Value10;
2374  }
2375 
2376  T11 Value11;
2377  static T11 ElementTypeI(viskores::internal::IndexTag<11>);
2378  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T11>& GetImpl(viskores::internal::IndexTag<11>)
2379  {
2380  return this->Value11;
2381  }
2382  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T11>& GetImpl(viskores::internal::IndexTag<11>) const
2383  {
2384  return this->Value11;
2385  }
2386 
2387  T12 Value12;
2388  static T12 ElementTypeI(viskores::internal::IndexTag<12>);
2389  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T12>& GetImpl(viskores::internal::IndexTag<12>)
2390  {
2391  return this->Value12;
2392  }
2393  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T12>& GetImpl(viskores::internal::IndexTag<12>) const
2394  {
2395  return this->Value12;
2396  }
2397 
2398 
2399  // Invalid indices
2400  template <viskores::IdComponent Index>
2401  static viskores::internal::NullType ElementTypeI(viskores::internal::IndexTag<Index>);
2402 
2403  template <viskores::IdComponent, typename>
2404  friend struct detail::TupleElementImpl;
2405 
2406 public:
2407  static constexpr viskores::IdComponent Size = 13;
2408  template <viskores::IdComponent Index>
2410 
2411  Tuple() = default;
2412  Tuple(Tuple&&) = default;
2413  Tuple(const Tuple&) = default;
2414  ~Tuple() = default;
2415  Tuple& operator=(Tuple&&) = default;
2416  Tuple& operator=(const Tuple&) = default;
2417 
2419  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>
2420  VISKORES_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)
2421  : Value0(std::forward<A0>(a0))
2422  , Value1(std::forward<A1>(a1))
2423  , Value2(std::forward<A2>(a2))
2424  , Value3(std::forward<A3>(a3))
2425  , Value4(std::forward<A4>(a4))
2426  , Value5(std::forward<A5>(a5))
2427  , Value6(std::forward<A6>(a6))
2428  , Value7(std::forward<A7>(a7))
2429  , Value8(std::forward<A8>(a8))
2430  , Value9(std::forward<A9>(a9))
2431  , Value10(std::forward<A10>(a10))
2432  , Value11(std::forward<A11>(a11))
2433  , Value12(std::forward<A12>(a12))
2434  {
2435  }
2436 
2437  template <viskores::IdComponent Index>
2438  VISKORES_EXEC_CONT auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
2439  {
2440  return this->GetImpl(viskores::internal::IndexTag<Index>{});
2441  }
2442 
2443  template <viskores::IdComponent Index>
2444  VISKORES_EXEC_CONT auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
2445  {
2446  return this->GetImpl(viskores::internal::IndexTag<Index>{});
2447  }
2448 
2450  template <typename Function, typename... Args>
2452  auto Apply(Function&& f, Args&&... args)
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  }
2458  template <typename Function, typename... Args>
2460  auto Apply(Function&& f, Args&&... args) const
2461  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12))
2462  {
2463  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12);
2464  }
2465 
2467  template <typename Function>
2468  VISKORES_EXEC_CONT void ForEach(Function&& f)
2469  {
2470  viskores::ForEach(*this, std::forward<Function>(f));
2471  }
2473  template <typename Function>
2474  VISKORES_EXEC_CONT void ForEach(Function&& f) const
2475  {
2476  viskores::ForEach(*this, std::forward<Function>(f));
2477  }
2478 
2480  template <typename Function>
2481  VISKORES_EXEC_CONT auto Transform(Function&& f)
2482  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
2483  {
2484  return viskores::Transform(*this, std::forward<Function>(f));
2485  }
2487  template <typename Function>
2488  VISKORES_EXEC_CONT auto Transform(Function&& f) const
2489  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
2490  {
2491  return viskores::Transform(*this, std::forward<Function>(f));
2492  }
2493 };
2494 
2495 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>
2496 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>
2497 {
2499  static T0 ElementTypeI(viskores::internal::IndexTag<0>);
2500  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>)
2501  {
2502  return this->Value0;
2503  }
2504  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>) const
2505  {
2506  return this->Value0;
2507  }
2508 
2510  static T1 ElementTypeI(viskores::internal::IndexTag<1>);
2511  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>)
2512  {
2513  return this->Value1;
2514  }
2515  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>) const
2516  {
2517  return this->Value1;
2518  }
2519 
2521  static T2 ElementTypeI(viskores::internal::IndexTag<2>);
2522  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>)
2523  {
2524  return this->Value2;
2525  }
2526  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>) const
2527  {
2528  return this->Value2;
2529  }
2530 
2532  static T3 ElementTypeI(viskores::internal::IndexTag<3>);
2533  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>)
2534  {
2535  return this->Value3;
2536  }
2537  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>) const
2538  {
2539  return this->Value3;
2540  }
2541 
2543  static T4 ElementTypeI(viskores::internal::IndexTag<4>);
2544  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>)
2545  {
2546  return this->Value4;
2547  }
2548  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>) const
2549  {
2550  return this->Value4;
2551  }
2552 
2554  static T5 ElementTypeI(viskores::internal::IndexTag<5>);
2555  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>)
2556  {
2557  return this->Value5;
2558  }
2559  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>) const
2560  {
2561  return this->Value5;
2562  }
2563 
2565  static T6 ElementTypeI(viskores::internal::IndexTag<6>);
2566  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>)
2567  {
2568  return this->Value6;
2569  }
2570  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>) const
2571  {
2572  return this->Value6;
2573  }
2574 
2576  static T7 ElementTypeI(viskores::internal::IndexTag<7>);
2577  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>)
2578  {
2579  return this->Value7;
2580  }
2581  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>) const
2582  {
2583  return this->Value7;
2584  }
2585 
2587  static T8 ElementTypeI(viskores::internal::IndexTag<8>);
2588  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>)
2589  {
2590  return this->Value8;
2591  }
2592  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>) const
2593  {
2594  return this->Value8;
2595  }
2596 
2598  static T9 ElementTypeI(viskores::internal::IndexTag<9>);
2599  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>)
2600  {
2601  return this->Value9;
2602  }
2603  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>) const
2604  {
2605  return this->Value9;
2606  }
2607 
2608  T10 Value10;
2609  static T10 ElementTypeI(viskores::internal::IndexTag<10>);
2610  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T10>& GetImpl(viskores::internal::IndexTag<10>)
2611  {
2612  return this->Value10;
2613  }
2614  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T10>& GetImpl(viskores::internal::IndexTag<10>) const
2615  {
2616  return this->Value10;
2617  }
2618 
2619  T11 Value11;
2620  static T11 ElementTypeI(viskores::internal::IndexTag<11>);
2621  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T11>& GetImpl(viskores::internal::IndexTag<11>)
2622  {
2623  return this->Value11;
2624  }
2625  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T11>& GetImpl(viskores::internal::IndexTag<11>) const
2626  {
2627  return this->Value11;
2628  }
2629 
2630  T12 Value12;
2631  static T12 ElementTypeI(viskores::internal::IndexTag<12>);
2632  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T12>& GetImpl(viskores::internal::IndexTag<12>)
2633  {
2634  return this->Value12;
2635  }
2636  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T12>& GetImpl(viskores::internal::IndexTag<12>) const
2637  {
2638  return this->Value12;
2639  }
2640 
2641  T13 Value13;
2642  static T13 ElementTypeI(viskores::internal::IndexTag<13>);
2643  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T13>& GetImpl(viskores::internal::IndexTag<13>)
2644  {
2645  return this->Value13;
2646  }
2647  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T13>& GetImpl(viskores::internal::IndexTag<13>) const
2648  {
2649  return this->Value13;
2650  }
2651 
2652 
2653  // Invalid indices
2654  template <viskores::IdComponent Index>
2655  static viskores::internal::NullType ElementTypeI(viskores::internal::IndexTag<Index>);
2656 
2657  template <viskores::IdComponent, typename>
2658  friend struct detail::TupleElementImpl;
2659 
2660 public:
2661  static constexpr viskores::IdComponent Size = 14;
2662  template <viskores::IdComponent Index>
2664 
2665  Tuple() = default;
2666  Tuple(Tuple&&) = default;
2667  Tuple(const Tuple&) = default;
2668  ~Tuple() = default;
2669  Tuple& operator=(Tuple&&) = default;
2670  Tuple& operator=(const Tuple&) = default;
2671 
2673  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>
2674  VISKORES_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)
2675  : Value0(std::forward<A0>(a0))
2676  , Value1(std::forward<A1>(a1))
2677  , Value2(std::forward<A2>(a2))
2678  , Value3(std::forward<A3>(a3))
2679  , Value4(std::forward<A4>(a4))
2680  , Value5(std::forward<A5>(a5))
2681  , Value6(std::forward<A6>(a6))
2682  , Value7(std::forward<A7>(a7))
2683  , Value8(std::forward<A8>(a8))
2684  , Value9(std::forward<A9>(a9))
2685  , Value10(std::forward<A10>(a10))
2686  , Value11(std::forward<A11>(a11))
2687  , Value12(std::forward<A12>(a12))
2688  , Value13(std::forward<A13>(a13))
2689  {
2690  }
2691 
2692  template <viskores::IdComponent Index>
2693  VISKORES_EXEC_CONT auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
2694  {
2695  return this->GetImpl(viskores::internal::IndexTag<Index>{});
2696  }
2697 
2698  template <viskores::IdComponent Index>
2699  VISKORES_EXEC_CONT auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
2700  {
2701  return this->GetImpl(viskores::internal::IndexTag<Index>{});
2702  }
2703 
2705  template <typename Function, typename... Args>
2707  auto Apply(Function&& f, Args&&... args)
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  }
2713  template <typename Function, typename... Args>
2715  auto Apply(Function&& f, Args&&... args) const
2716  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13))
2717  {
2718  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13);
2719  }
2720 
2722  template <typename Function>
2723  VISKORES_EXEC_CONT void ForEach(Function&& f)
2724  {
2725  viskores::ForEach(*this, std::forward<Function>(f));
2726  }
2728  template <typename Function>
2729  VISKORES_EXEC_CONT void ForEach(Function&& f) const
2730  {
2731  viskores::ForEach(*this, std::forward<Function>(f));
2732  }
2733 
2735  template <typename Function>
2736  VISKORES_EXEC_CONT auto Transform(Function&& f)
2737  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
2738  {
2739  return viskores::Transform(*this, std::forward<Function>(f));
2740  }
2742  template <typename Function>
2743  VISKORES_EXEC_CONT auto Transform(Function&& f) const
2744  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
2745  {
2746  return viskores::Transform(*this, std::forward<Function>(f));
2747  }
2748 };
2749 
2750 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>
2751 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>
2752 {
2754  static T0 ElementTypeI(viskores::internal::IndexTag<0>);
2755  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>)
2756  {
2757  return this->Value0;
2758  }
2759  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>) const
2760  {
2761  return this->Value0;
2762  }
2763 
2765  static T1 ElementTypeI(viskores::internal::IndexTag<1>);
2766  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>)
2767  {
2768  return this->Value1;
2769  }
2770  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>) const
2771  {
2772  return this->Value1;
2773  }
2774 
2776  static T2 ElementTypeI(viskores::internal::IndexTag<2>);
2777  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>)
2778  {
2779  return this->Value2;
2780  }
2781  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>) const
2782  {
2783  return this->Value2;
2784  }
2785 
2787  static T3 ElementTypeI(viskores::internal::IndexTag<3>);
2788  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>)
2789  {
2790  return this->Value3;
2791  }
2792  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>) const
2793  {
2794  return this->Value3;
2795  }
2796 
2798  static T4 ElementTypeI(viskores::internal::IndexTag<4>);
2799  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>)
2800  {
2801  return this->Value4;
2802  }
2803  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>) const
2804  {
2805  return this->Value4;
2806  }
2807 
2809  static T5 ElementTypeI(viskores::internal::IndexTag<5>);
2810  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>)
2811  {
2812  return this->Value5;
2813  }
2814  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>) const
2815  {
2816  return this->Value5;
2817  }
2818 
2820  static T6 ElementTypeI(viskores::internal::IndexTag<6>);
2821  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>)
2822  {
2823  return this->Value6;
2824  }
2825  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>) const
2826  {
2827  return this->Value6;
2828  }
2829 
2831  static T7 ElementTypeI(viskores::internal::IndexTag<7>);
2832  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>)
2833  {
2834  return this->Value7;
2835  }
2836  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>) const
2837  {
2838  return this->Value7;
2839  }
2840 
2842  static T8 ElementTypeI(viskores::internal::IndexTag<8>);
2843  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>)
2844  {
2845  return this->Value8;
2846  }
2847  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>) const
2848  {
2849  return this->Value8;
2850  }
2851 
2853  static T9 ElementTypeI(viskores::internal::IndexTag<9>);
2854  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>)
2855  {
2856  return this->Value9;
2857  }
2858  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>) const
2859  {
2860  return this->Value9;
2861  }
2862 
2863  T10 Value10;
2864  static T10 ElementTypeI(viskores::internal::IndexTag<10>);
2865  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T10>& GetImpl(viskores::internal::IndexTag<10>)
2866  {
2867  return this->Value10;
2868  }
2869  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T10>& GetImpl(viskores::internal::IndexTag<10>) const
2870  {
2871  return this->Value10;
2872  }
2873 
2874  T11 Value11;
2875  static T11 ElementTypeI(viskores::internal::IndexTag<11>);
2876  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T11>& GetImpl(viskores::internal::IndexTag<11>)
2877  {
2878  return this->Value11;
2879  }
2880  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T11>& GetImpl(viskores::internal::IndexTag<11>) const
2881  {
2882  return this->Value11;
2883  }
2884 
2885  T12 Value12;
2886  static T12 ElementTypeI(viskores::internal::IndexTag<12>);
2887  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T12>& GetImpl(viskores::internal::IndexTag<12>)
2888  {
2889  return this->Value12;
2890  }
2891  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T12>& GetImpl(viskores::internal::IndexTag<12>) const
2892  {
2893  return this->Value12;
2894  }
2895 
2896  T13 Value13;
2897  static T13 ElementTypeI(viskores::internal::IndexTag<13>);
2898  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T13>& GetImpl(viskores::internal::IndexTag<13>)
2899  {
2900  return this->Value13;
2901  }
2902  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T13>& GetImpl(viskores::internal::IndexTag<13>) const
2903  {
2904  return this->Value13;
2905  }
2906 
2907  T14 Value14;
2908  static T14 ElementTypeI(viskores::internal::IndexTag<14>);
2909  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T14>& GetImpl(viskores::internal::IndexTag<14>)
2910  {
2911  return this->Value14;
2912  }
2913  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T14>& GetImpl(viskores::internal::IndexTag<14>) const
2914  {
2915  return this->Value14;
2916  }
2917 
2918 
2919  // Invalid indices
2920  template <viskores::IdComponent Index>
2921  static viskores::internal::NullType ElementTypeI(viskores::internal::IndexTag<Index>);
2922 
2923  template <viskores::IdComponent, typename>
2924  friend struct detail::TupleElementImpl;
2925 
2926 public:
2927  static constexpr viskores::IdComponent Size = 15;
2928  template <viskores::IdComponent Index>
2930 
2931  Tuple() = default;
2932  Tuple(Tuple&&) = default;
2933  Tuple(const Tuple&) = default;
2934  ~Tuple() = default;
2935  Tuple& operator=(Tuple&&) = default;
2936  Tuple& operator=(const Tuple&) = default;
2937 
2939  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>
2940  VISKORES_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)
2941  : Value0(std::forward<A0>(a0))
2942  , Value1(std::forward<A1>(a1))
2943  , Value2(std::forward<A2>(a2))
2944  , Value3(std::forward<A3>(a3))
2945  , Value4(std::forward<A4>(a4))
2946  , Value5(std::forward<A5>(a5))
2947  , Value6(std::forward<A6>(a6))
2948  , Value7(std::forward<A7>(a7))
2949  , Value8(std::forward<A8>(a8))
2950  , Value9(std::forward<A9>(a9))
2951  , Value10(std::forward<A10>(a10))
2952  , Value11(std::forward<A11>(a11))
2953  , Value12(std::forward<A12>(a12))
2954  , Value13(std::forward<A13>(a13))
2955  , Value14(std::forward<A14>(a14))
2956  {
2957  }
2958 
2959  template <viskores::IdComponent Index>
2960  VISKORES_EXEC_CONT auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
2961  {
2962  return this->GetImpl(viskores::internal::IndexTag<Index>{});
2963  }
2964 
2965  template <viskores::IdComponent Index>
2966  VISKORES_EXEC_CONT auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
2967  {
2968  return this->GetImpl(viskores::internal::IndexTag<Index>{});
2969  }
2970 
2972  template <typename Function, typename... Args>
2974  auto Apply(Function&& f, Args&&... args)
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  }
2980  template <typename Function, typename... Args>
2982  auto Apply(Function&& f, Args&&... args) const
2983  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14))
2984  {
2985  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14);
2986  }
2987 
2989  template <typename Function>
2990  VISKORES_EXEC_CONT void ForEach(Function&& f)
2991  {
2992  viskores::ForEach(*this, std::forward<Function>(f));
2993  }
2995  template <typename Function>
2996  VISKORES_EXEC_CONT void ForEach(Function&& f) const
2997  {
2998  viskores::ForEach(*this, std::forward<Function>(f));
2999  }
3000 
3002  template <typename Function>
3003  VISKORES_EXEC_CONT auto Transform(Function&& f)
3004  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
3005  {
3006  return viskores::Transform(*this, std::forward<Function>(f));
3007  }
3009  template <typename Function>
3010  VISKORES_EXEC_CONT auto Transform(Function&& f) const
3011  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
3012  {
3013  return viskores::Transform(*this, std::forward<Function>(f));
3014  }
3015 };
3016 
3017 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>
3018 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>
3019 {
3021  static T0 ElementTypeI(viskores::internal::IndexTag<0>);
3022  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>)
3023  {
3024  return this->Value0;
3025  }
3026  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>) const
3027  {
3028  return this->Value0;
3029  }
3030 
3032  static T1 ElementTypeI(viskores::internal::IndexTag<1>);
3033  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>)
3034  {
3035  return this->Value1;
3036  }
3037  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>) const
3038  {
3039  return this->Value1;
3040  }
3041 
3043  static T2 ElementTypeI(viskores::internal::IndexTag<2>);
3044  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>)
3045  {
3046  return this->Value2;
3047  }
3048  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>) const
3049  {
3050  return this->Value2;
3051  }
3052 
3054  static T3 ElementTypeI(viskores::internal::IndexTag<3>);
3055  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>)
3056  {
3057  return this->Value3;
3058  }
3059  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>) const
3060  {
3061  return this->Value3;
3062  }
3063 
3065  static T4 ElementTypeI(viskores::internal::IndexTag<4>);
3066  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>)
3067  {
3068  return this->Value4;
3069  }
3070  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>) const
3071  {
3072  return this->Value4;
3073  }
3074 
3076  static T5 ElementTypeI(viskores::internal::IndexTag<5>);
3077  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>)
3078  {
3079  return this->Value5;
3080  }
3081  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>) const
3082  {
3083  return this->Value5;
3084  }
3085 
3087  static T6 ElementTypeI(viskores::internal::IndexTag<6>);
3088  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>)
3089  {
3090  return this->Value6;
3091  }
3092  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>) const
3093  {
3094  return this->Value6;
3095  }
3096 
3098  static T7 ElementTypeI(viskores::internal::IndexTag<7>);
3099  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>)
3100  {
3101  return this->Value7;
3102  }
3103  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>) const
3104  {
3105  return this->Value7;
3106  }
3107 
3109  static T8 ElementTypeI(viskores::internal::IndexTag<8>);
3110  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>)
3111  {
3112  return this->Value8;
3113  }
3114  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>) const
3115  {
3116  return this->Value8;
3117  }
3118 
3120  static T9 ElementTypeI(viskores::internal::IndexTag<9>);
3121  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>)
3122  {
3123  return this->Value9;
3124  }
3125  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>) const
3126  {
3127  return this->Value9;
3128  }
3129 
3130  T10 Value10;
3131  static T10 ElementTypeI(viskores::internal::IndexTag<10>);
3132  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T10>& GetImpl(viskores::internal::IndexTag<10>)
3133  {
3134  return this->Value10;
3135  }
3136  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T10>& GetImpl(viskores::internal::IndexTag<10>) const
3137  {
3138  return this->Value10;
3139  }
3140 
3141  T11 Value11;
3142  static T11 ElementTypeI(viskores::internal::IndexTag<11>);
3143  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T11>& GetImpl(viskores::internal::IndexTag<11>)
3144  {
3145  return this->Value11;
3146  }
3147  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T11>& GetImpl(viskores::internal::IndexTag<11>) const
3148  {
3149  return this->Value11;
3150  }
3151 
3152  T12 Value12;
3153  static T12 ElementTypeI(viskores::internal::IndexTag<12>);
3154  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T12>& GetImpl(viskores::internal::IndexTag<12>)
3155  {
3156  return this->Value12;
3157  }
3158  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T12>& GetImpl(viskores::internal::IndexTag<12>) const
3159  {
3160  return this->Value12;
3161  }
3162 
3163  T13 Value13;
3164  static T13 ElementTypeI(viskores::internal::IndexTag<13>);
3165  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T13>& GetImpl(viskores::internal::IndexTag<13>)
3166  {
3167  return this->Value13;
3168  }
3169  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T13>& GetImpl(viskores::internal::IndexTag<13>) const
3170  {
3171  return this->Value13;
3172  }
3173 
3174  T14 Value14;
3175  static T14 ElementTypeI(viskores::internal::IndexTag<14>);
3176  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T14>& GetImpl(viskores::internal::IndexTag<14>)
3177  {
3178  return this->Value14;
3179  }
3180  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T14>& GetImpl(viskores::internal::IndexTag<14>) const
3181  {
3182  return this->Value14;
3183  }
3184 
3185  T15 Value15;
3186  static T15 ElementTypeI(viskores::internal::IndexTag<15>);
3187  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T15>& GetImpl(viskores::internal::IndexTag<15>)
3188  {
3189  return this->Value15;
3190  }
3191  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T15>& GetImpl(viskores::internal::IndexTag<15>) const
3192  {
3193  return this->Value15;
3194  }
3195 
3196 
3197  // Invalid indices
3198  template <viskores::IdComponent Index>
3199  static viskores::internal::NullType ElementTypeI(viskores::internal::IndexTag<Index>);
3200 
3201  template <viskores::IdComponent, typename>
3202  friend struct detail::TupleElementImpl;
3203 
3204 public:
3205  static constexpr viskores::IdComponent Size = 16;
3206  template <viskores::IdComponent Index>
3208 
3209  Tuple() = default;
3210  Tuple(Tuple&&) = default;
3211  Tuple(const Tuple&) = default;
3212  ~Tuple() = default;
3213  Tuple& operator=(Tuple&&) = default;
3214  Tuple& operator=(const Tuple&) = default;
3215 
3217  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>
3218  VISKORES_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)
3219  : Value0(std::forward<A0>(a0))
3220  , Value1(std::forward<A1>(a1))
3221  , Value2(std::forward<A2>(a2))
3222  , Value3(std::forward<A3>(a3))
3223  , Value4(std::forward<A4>(a4))
3224  , Value5(std::forward<A5>(a5))
3225  , Value6(std::forward<A6>(a6))
3226  , Value7(std::forward<A7>(a7))
3227  , Value8(std::forward<A8>(a8))
3228  , Value9(std::forward<A9>(a9))
3229  , Value10(std::forward<A10>(a10))
3230  , Value11(std::forward<A11>(a11))
3231  , Value12(std::forward<A12>(a12))
3232  , Value13(std::forward<A13>(a13))
3233  , Value14(std::forward<A14>(a14))
3234  , Value15(std::forward<A15>(a15))
3235  {
3236  }
3237 
3238  template <viskores::IdComponent Index>
3239  VISKORES_EXEC_CONT auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
3240  {
3241  return this->GetImpl(viskores::internal::IndexTag<Index>{});
3242  }
3243 
3244  template <viskores::IdComponent Index>
3245  VISKORES_EXEC_CONT auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
3246  {
3247  return this->GetImpl(viskores::internal::IndexTag<Index>{});
3248  }
3249 
3251  template <typename Function, typename... Args>
3253  auto Apply(Function&& f, Args&&... args)
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  }
3259  template <typename Function, typename... Args>
3261  auto Apply(Function&& f, Args&&... args) const
3262  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15))
3263  {
3264  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15);
3265  }
3266 
3268  template <typename Function>
3269  VISKORES_EXEC_CONT void ForEach(Function&& f)
3270  {
3271  viskores::ForEach(*this, std::forward<Function>(f));
3272  }
3274  template <typename Function>
3275  VISKORES_EXEC_CONT void ForEach(Function&& f) const
3276  {
3277  viskores::ForEach(*this, std::forward<Function>(f));
3278  }
3279 
3281  template <typename Function>
3282  VISKORES_EXEC_CONT auto Transform(Function&& f)
3283  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
3284  {
3285  return viskores::Transform(*this, std::forward<Function>(f));
3286  }
3288  template <typename Function>
3289  VISKORES_EXEC_CONT auto Transform(Function&& f) const
3290  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
3291  {
3292  return viskores::Transform(*this, std::forward<Function>(f));
3293  }
3294 };
3295 
3296 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>
3297 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>
3298 {
3300  static T0 ElementTypeI(viskores::internal::IndexTag<0>);
3301  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>)
3302  {
3303  return this->Value0;
3304  }
3305  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>) const
3306  {
3307  return this->Value0;
3308  }
3309 
3311  static T1 ElementTypeI(viskores::internal::IndexTag<1>);
3312  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>)
3313  {
3314  return this->Value1;
3315  }
3316  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>) const
3317  {
3318  return this->Value1;
3319  }
3320 
3322  static T2 ElementTypeI(viskores::internal::IndexTag<2>);
3323  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>)
3324  {
3325  return this->Value2;
3326  }
3327  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>) const
3328  {
3329  return this->Value2;
3330  }
3331 
3333  static T3 ElementTypeI(viskores::internal::IndexTag<3>);
3334  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>)
3335  {
3336  return this->Value3;
3337  }
3338  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>) const
3339  {
3340  return this->Value3;
3341  }
3342 
3344  static T4 ElementTypeI(viskores::internal::IndexTag<4>);
3345  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>)
3346  {
3347  return this->Value4;
3348  }
3349  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>) const
3350  {
3351  return this->Value4;
3352  }
3353 
3355  static T5 ElementTypeI(viskores::internal::IndexTag<5>);
3356  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>)
3357  {
3358  return this->Value5;
3359  }
3360  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>) const
3361  {
3362  return this->Value5;
3363  }
3364 
3366  static T6 ElementTypeI(viskores::internal::IndexTag<6>);
3367  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>)
3368  {
3369  return this->Value6;
3370  }
3371  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>) const
3372  {
3373  return this->Value6;
3374  }
3375 
3377  static T7 ElementTypeI(viskores::internal::IndexTag<7>);
3378  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>)
3379  {
3380  return this->Value7;
3381  }
3382  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>) const
3383  {
3384  return this->Value7;
3385  }
3386 
3388  static T8 ElementTypeI(viskores::internal::IndexTag<8>);
3389  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>)
3390  {
3391  return this->Value8;
3392  }
3393  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>) const
3394  {
3395  return this->Value8;
3396  }
3397 
3399  static T9 ElementTypeI(viskores::internal::IndexTag<9>);
3400  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>)
3401  {
3402  return this->Value9;
3403  }
3404  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>) const
3405  {
3406  return this->Value9;
3407  }
3408 
3409  T10 Value10;
3410  static T10 ElementTypeI(viskores::internal::IndexTag<10>);
3411  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T10>& GetImpl(viskores::internal::IndexTag<10>)
3412  {
3413  return this->Value10;
3414  }
3415  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T10>& GetImpl(viskores::internal::IndexTag<10>) const
3416  {
3417  return this->Value10;
3418  }
3419 
3420  T11 Value11;
3421  static T11 ElementTypeI(viskores::internal::IndexTag<11>);
3422  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T11>& GetImpl(viskores::internal::IndexTag<11>)
3423  {
3424  return this->Value11;
3425  }
3426  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T11>& GetImpl(viskores::internal::IndexTag<11>) const
3427  {
3428  return this->Value11;
3429  }
3430 
3431  T12 Value12;
3432  static T12 ElementTypeI(viskores::internal::IndexTag<12>);
3433  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T12>& GetImpl(viskores::internal::IndexTag<12>)
3434  {
3435  return this->Value12;
3436  }
3437  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T12>& GetImpl(viskores::internal::IndexTag<12>) const
3438  {
3439  return this->Value12;
3440  }
3441 
3442  T13 Value13;
3443  static T13 ElementTypeI(viskores::internal::IndexTag<13>);
3444  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T13>& GetImpl(viskores::internal::IndexTag<13>)
3445  {
3446  return this->Value13;
3447  }
3448  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T13>& GetImpl(viskores::internal::IndexTag<13>) const
3449  {
3450  return this->Value13;
3451  }
3452 
3453  T14 Value14;
3454  static T14 ElementTypeI(viskores::internal::IndexTag<14>);
3455  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T14>& GetImpl(viskores::internal::IndexTag<14>)
3456  {
3457  return this->Value14;
3458  }
3459  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T14>& GetImpl(viskores::internal::IndexTag<14>) const
3460  {
3461  return this->Value14;
3462  }
3463 
3464  T15 Value15;
3465  static T15 ElementTypeI(viskores::internal::IndexTag<15>);
3466  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T15>& GetImpl(viskores::internal::IndexTag<15>)
3467  {
3468  return this->Value15;
3469  }
3470  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T15>& GetImpl(viskores::internal::IndexTag<15>) const
3471  {
3472  return this->Value15;
3473  }
3474 
3475  T16 Value16;
3476  static T16 ElementTypeI(viskores::internal::IndexTag<16>);
3477  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T16>& GetImpl(viskores::internal::IndexTag<16>)
3478  {
3479  return this->Value16;
3480  }
3481  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T16>& GetImpl(viskores::internal::IndexTag<16>) const
3482  {
3483  return this->Value16;
3484  }
3485 
3486 
3487  // Invalid indices
3488  template <viskores::IdComponent Index>
3489  static viskores::internal::NullType ElementTypeI(viskores::internal::IndexTag<Index>);
3490 
3491  template <viskores::IdComponent, typename>
3492  friend struct detail::TupleElementImpl;
3493 
3494 public:
3495  static constexpr viskores::IdComponent Size = 17;
3496  template <viskores::IdComponent Index>
3498 
3499  Tuple() = default;
3500  Tuple(Tuple&&) = default;
3501  Tuple(const Tuple&) = default;
3502  ~Tuple() = default;
3503  Tuple& operator=(Tuple&&) = default;
3504  Tuple& operator=(const Tuple&) = default;
3505 
3507  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>
3508  VISKORES_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)
3509  : Value0(std::forward<A0>(a0))
3510  , Value1(std::forward<A1>(a1))
3511  , Value2(std::forward<A2>(a2))
3512  , Value3(std::forward<A3>(a3))
3513  , Value4(std::forward<A4>(a4))
3514  , Value5(std::forward<A5>(a5))
3515  , Value6(std::forward<A6>(a6))
3516  , Value7(std::forward<A7>(a7))
3517  , Value8(std::forward<A8>(a8))
3518  , Value9(std::forward<A9>(a9))
3519  , Value10(std::forward<A10>(a10))
3520  , Value11(std::forward<A11>(a11))
3521  , Value12(std::forward<A12>(a12))
3522  , Value13(std::forward<A13>(a13))
3523  , Value14(std::forward<A14>(a14))
3524  , Value15(std::forward<A15>(a15))
3525  , Value16(std::forward<A16>(a16))
3526  {
3527  }
3528 
3529  template <viskores::IdComponent Index>
3530  VISKORES_EXEC_CONT auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
3531  {
3532  return this->GetImpl(viskores::internal::IndexTag<Index>{});
3533  }
3534 
3535  template <viskores::IdComponent Index>
3536  VISKORES_EXEC_CONT auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
3537  {
3538  return this->GetImpl(viskores::internal::IndexTag<Index>{});
3539  }
3540 
3542  template <typename Function, typename... Args>
3544  auto Apply(Function&& f, Args&&... args)
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  }
3550  template <typename Function, typename... Args>
3552  auto Apply(Function&& f, Args&&... args) const
3553  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16))
3554  {
3555  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16);
3556  }
3557 
3559  template <typename Function>
3560  VISKORES_EXEC_CONT void ForEach(Function&& f)
3561  {
3562  viskores::ForEach(*this, std::forward<Function>(f));
3563  }
3565  template <typename Function>
3566  VISKORES_EXEC_CONT void ForEach(Function&& f) const
3567  {
3568  viskores::ForEach(*this, std::forward<Function>(f));
3569  }
3570 
3572  template <typename Function>
3573  VISKORES_EXEC_CONT auto Transform(Function&& f)
3574  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
3575  {
3576  return viskores::Transform(*this, std::forward<Function>(f));
3577  }
3579  template <typename Function>
3580  VISKORES_EXEC_CONT auto Transform(Function&& f) const
3581  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
3582  {
3583  return viskores::Transform(*this, std::forward<Function>(f));
3584  }
3585 };
3586 
3587 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>
3588 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>
3589 {
3591  static T0 ElementTypeI(viskores::internal::IndexTag<0>);
3592  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>)
3593  {
3594  return this->Value0;
3595  }
3596  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>) const
3597  {
3598  return this->Value0;
3599  }
3600 
3602  static T1 ElementTypeI(viskores::internal::IndexTag<1>);
3603  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>)
3604  {
3605  return this->Value1;
3606  }
3607  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>) const
3608  {
3609  return this->Value1;
3610  }
3611 
3613  static T2 ElementTypeI(viskores::internal::IndexTag<2>);
3614  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>)
3615  {
3616  return this->Value2;
3617  }
3618  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>) const
3619  {
3620  return this->Value2;
3621  }
3622 
3624  static T3 ElementTypeI(viskores::internal::IndexTag<3>);
3625  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>)
3626  {
3627  return this->Value3;
3628  }
3629  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>) const
3630  {
3631  return this->Value3;
3632  }
3633 
3635  static T4 ElementTypeI(viskores::internal::IndexTag<4>);
3636  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>)
3637  {
3638  return this->Value4;
3639  }
3640  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>) const
3641  {
3642  return this->Value4;
3643  }
3644 
3646  static T5 ElementTypeI(viskores::internal::IndexTag<5>);
3647  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>)
3648  {
3649  return this->Value5;
3650  }
3651  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>) const
3652  {
3653  return this->Value5;
3654  }
3655 
3657  static T6 ElementTypeI(viskores::internal::IndexTag<6>);
3658  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>)
3659  {
3660  return this->Value6;
3661  }
3662  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>) const
3663  {
3664  return this->Value6;
3665  }
3666 
3668  static T7 ElementTypeI(viskores::internal::IndexTag<7>);
3669  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>)
3670  {
3671  return this->Value7;
3672  }
3673  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>) const
3674  {
3675  return this->Value7;
3676  }
3677 
3679  static T8 ElementTypeI(viskores::internal::IndexTag<8>);
3680  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>)
3681  {
3682  return this->Value8;
3683  }
3684  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>) const
3685  {
3686  return this->Value8;
3687  }
3688 
3690  static T9 ElementTypeI(viskores::internal::IndexTag<9>);
3691  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>)
3692  {
3693  return this->Value9;
3694  }
3695  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>) const
3696  {
3697  return this->Value9;
3698  }
3699 
3700  T10 Value10;
3701  static T10 ElementTypeI(viskores::internal::IndexTag<10>);
3702  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T10>& GetImpl(viskores::internal::IndexTag<10>)
3703  {
3704  return this->Value10;
3705  }
3706  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T10>& GetImpl(viskores::internal::IndexTag<10>) const
3707  {
3708  return this->Value10;
3709  }
3710 
3711  T11 Value11;
3712  static T11 ElementTypeI(viskores::internal::IndexTag<11>);
3713  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T11>& GetImpl(viskores::internal::IndexTag<11>)
3714  {
3715  return this->Value11;
3716  }
3717  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T11>& GetImpl(viskores::internal::IndexTag<11>) const
3718  {
3719  return this->Value11;
3720  }
3721 
3722  T12 Value12;
3723  static T12 ElementTypeI(viskores::internal::IndexTag<12>);
3724  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T12>& GetImpl(viskores::internal::IndexTag<12>)
3725  {
3726  return this->Value12;
3727  }
3728  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T12>& GetImpl(viskores::internal::IndexTag<12>) const
3729  {
3730  return this->Value12;
3731  }
3732 
3733  T13 Value13;
3734  static T13 ElementTypeI(viskores::internal::IndexTag<13>);
3735  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T13>& GetImpl(viskores::internal::IndexTag<13>)
3736  {
3737  return this->Value13;
3738  }
3739  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T13>& GetImpl(viskores::internal::IndexTag<13>) const
3740  {
3741  return this->Value13;
3742  }
3743 
3744  T14 Value14;
3745  static T14 ElementTypeI(viskores::internal::IndexTag<14>);
3746  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T14>& GetImpl(viskores::internal::IndexTag<14>)
3747  {
3748  return this->Value14;
3749  }
3750  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T14>& GetImpl(viskores::internal::IndexTag<14>) const
3751  {
3752  return this->Value14;
3753  }
3754 
3755  T15 Value15;
3756  static T15 ElementTypeI(viskores::internal::IndexTag<15>);
3757  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T15>& GetImpl(viskores::internal::IndexTag<15>)
3758  {
3759  return this->Value15;
3760  }
3761  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T15>& GetImpl(viskores::internal::IndexTag<15>) const
3762  {
3763  return this->Value15;
3764  }
3765 
3766  T16 Value16;
3767  static T16 ElementTypeI(viskores::internal::IndexTag<16>);
3768  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T16>& GetImpl(viskores::internal::IndexTag<16>)
3769  {
3770  return this->Value16;
3771  }
3772  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T16>& GetImpl(viskores::internal::IndexTag<16>) const
3773  {
3774  return this->Value16;
3775  }
3776 
3777  T17 Value17;
3778  static T17 ElementTypeI(viskores::internal::IndexTag<17>);
3779  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T17>& GetImpl(viskores::internal::IndexTag<17>)
3780  {
3781  return this->Value17;
3782  }
3783  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T17>& GetImpl(viskores::internal::IndexTag<17>) const
3784  {
3785  return this->Value17;
3786  }
3787 
3788 
3789  // Invalid indices
3790  template <viskores::IdComponent Index>
3791  static viskores::internal::NullType ElementTypeI(viskores::internal::IndexTag<Index>);
3792 
3793  template <viskores::IdComponent, typename>
3794  friend struct detail::TupleElementImpl;
3795 
3796 public:
3797  static constexpr viskores::IdComponent Size = 18;
3798  template <viskores::IdComponent Index>
3800 
3801  Tuple() = default;
3802  Tuple(Tuple&&) = default;
3803  Tuple(const Tuple&) = default;
3804  ~Tuple() = default;
3805  Tuple& operator=(Tuple&&) = default;
3806  Tuple& operator=(const Tuple&) = default;
3807 
3809  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>
3810  VISKORES_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)
3811  : Value0(std::forward<A0>(a0))
3812  , Value1(std::forward<A1>(a1))
3813  , Value2(std::forward<A2>(a2))
3814  , Value3(std::forward<A3>(a3))
3815  , Value4(std::forward<A4>(a4))
3816  , Value5(std::forward<A5>(a5))
3817  , Value6(std::forward<A6>(a6))
3818  , Value7(std::forward<A7>(a7))
3819  , Value8(std::forward<A8>(a8))
3820  , Value9(std::forward<A9>(a9))
3821  , Value10(std::forward<A10>(a10))
3822  , Value11(std::forward<A11>(a11))
3823  , Value12(std::forward<A12>(a12))
3824  , Value13(std::forward<A13>(a13))
3825  , Value14(std::forward<A14>(a14))
3826  , Value15(std::forward<A15>(a15))
3827  , Value16(std::forward<A16>(a16))
3828  , Value17(std::forward<A17>(a17))
3829  {
3830  }
3831 
3832  template <viskores::IdComponent Index>
3833  VISKORES_EXEC_CONT auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
3834  {
3835  return this->GetImpl(viskores::internal::IndexTag<Index>{});
3836  }
3837 
3838  template <viskores::IdComponent Index>
3839  VISKORES_EXEC_CONT auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
3840  {
3841  return this->GetImpl(viskores::internal::IndexTag<Index>{});
3842  }
3843 
3845  template <typename Function, typename... Args>
3847  auto Apply(Function&& f, Args&&... args)
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  }
3853  template <typename Function, typename... Args>
3855  auto Apply(Function&& f, Args&&... args) const
3856  -> decltype(f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16, Value17))
3857  {
3858  return f(std::forward<Args>(args)..., Value0, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Value11, Value12, Value13, Value14, Value15, Value16, Value17);
3859  }
3860 
3862  template <typename Function>
3863  VISKORES_EXEC_CONT void ForEach(Function&& f)
3864  {
3865  viskores::ForEach(*this, std::forward<Function>(f));
3866  }
3868  template <typename Function>
3869  VISKORES_EXEC_CONT void ForEach(Function&& f) const
3870  {
3871  viskores::ForEach(*this, std::forward<Function>(f));
3872  }
3873 
3875  template <typename Function>
3876  VISKORES_EXEC_CONT auto Transform(Function&& f)
3877  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
3878  {
3879  return viskores::Transform(*this, std::forward<Function>(f));
3880  }
3882  template <typename Function>
3883  VISKORES_EXEC_CONT auto Transform(Function&& f) const
3884  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
3885  {
3886  return viskores::Transform(*this, std::forward<Function>(f));
3887  }
3888 };
3889 
3890 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>
3891 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>
3892 {
3894  static T0 ElementTypeI(viskores::internal::IndexTag<0>);
3895  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>)
3896  {
3897  return this->Value0;
3898  }
3899  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>) const
3900  {
3901  return this->Value0;
3902  }
3903 
3905  static T1 ElementTypeI(viskores::internal::IndexTag<1>);
3906  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>)
3907  {
3908  return this->Value1;
3909  }
3910  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>) const
3911  {
3912  return this->Value1;
3913  }
3914 
3916  static T2 ElementTypeI(viskores::internal::IndexTag<2>);
3917  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>)
3918  {
3919  return this->Value2;
3920  }
3921  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>) const
3922  {
3923  return this->Value2;
3924  }
3925 
3927  static T3 ElementTypeI(viskores::internal::IndexTag<3>);
3928  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>)
3929  {
3930  return this->Value3;
3931  }
3932  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>) const
3933  {
3934  return this->Value3;
3935  }
3936 
3938  static T4 ElementTypeI(viskores::internal::IndexTag<4>);
3939  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>)
3940  {
3941  return this->Value4;
3942  }
3943  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>) const
3944  {
3945  return this->Value4;
3946  }
3947 
3949  static T5 ElementTypeI(viskores::internal::IndexTag<5>);
3950  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>)
3951  {
3952  return this->Value5;
3953  }
3954  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>) const
3955  {
3956  return this->Value5;
3957  }
3958 
3960  static T6 ElementTypeI(viskores::internal::IndexTag<6>);
3961  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>)
3962  {
3963  return this->Value6;
3964  }
3965  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>) const
3966  {
3967  return this->Value6;
3968  }
3969 
3971  static T7 ElementTypeI(viskores::internal::IndexTag<7>);
3972  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>)
3973  {
3974  return this->Value7;
3975  }
3976  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>) const
3977  {
3978  return this->Value7;
3979  }
3980 
3982  static T8 ElementTypeI(viskores::internal::IndexTag<8>);
3983  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>)
3984  {
3985  return this->Value8;
3986  }
3987  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>) const
3988  {
3989  return this->Value8;
3990  }
3991 
3993  static T9 ElementTypeI(viskores::internal::IndexTag<9>);
3994  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>)
3995  {
3996  return this->Value9;
3997  }
3998  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>) const
3999  {
4000  return this->Value9;
4001  }
4002 
4003  T10 Value10;
4004  static T10 ElementTypeI(viskores::internal::IndexTag<10>);
4005  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T10>& GetImpl(viskores::internal::IndexTag<10>)
4006  {
4007  return this->Value10;
4008  }
4009  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T10>& GetImpl(viskores::internal::IndexTag<10>) const
4010  {
4011  return this->Value10;
4012  }
4013 
4014  T11 Value11;
4015  static T11 ElementTypeI(viskores::internal::IndexTag<11>);
4016  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T11>& GetImpl(viskores::internal::IndexTag<11>)
4017  {
4018  return this->Value11;
4019  }
4020  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T11>& GetImpl(viskores::internal::IndexTag<11>) const
4021  {
4022  return this->Value11;
4023  }
4024 
4025  T12 Value12;
4026  static T12 ElementTypeI(viskores::internal::IndexTag<12>);
4027  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T12>& GetImpl(viskores::internal::IndexTag<12>)
4028  {
4029  return this->Value12;
4030  }
4031  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T12>& GetImpl(viskores::internal::IndexTag<12>) const
4032  {
4033  return this->Value12;
4034  }
4035 
4036  T13 Value13;
4037  static T13 ElementTypeI(viskores::internal::IndexTag<13>);
4038  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T13>& GetImpl(viskores::internal::IndexTag<13>)
4039  {
4040  return this->Value13;
4041  }
4042  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T13>& GetImpl(viskores::internal::IndexTag<13>) const
4043  {
4044  return this->Value13;
4045  }
4046 
4047  T14 Value14;
4048  static T14 ElementTypeI(viskores::internal::IndexTag<14>);
4049  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T14>& GetImpl(viskores::internal::IndexTag<14>)
4050  {
4051  return this->Value14;
4052  }
4053  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T14>& GetImpl(viskores::internal::IndexTag<14>) const
4054  {
4055  return this->Value14;
4056  }
4057 
4058  T15 Value15;
4059  static T15 ElementTypeI(viskores::internal::IndexTag<15>);
4060  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T15>& GetImpl(viskores::internal::IndexTag<15>)
4061  {
4062  return this->Value15;
4063  }
4064  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T15>& GetImpl(viskores::internal::IndexTag<15>) const
4065  {
4066  return this->Value15;
4067  }
4068 
4069  T16 Value16;
4070  static T16 ElementTypeI(viskores::internal::IndexTag<16>);
4071  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T16>& GetImpl(viskores::internal::IndexTag<16>)
4072  {
4073  return this->Value16;
4074  }
4075  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T16>& GetImpl(viskores::internal::IndexTag<16>) const
4076  {
4077  return this->Value16;
4078  }
4079 
4080  T17 Value17;
4081  static T17 ElementTypeI(viskores::internal::IndexTag<17>);
4082  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T17>& GetImpl(viskores::internal::IndexTag<17>)
4083  {
4084  return this->Value17;
4085  }
4086  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T17>& GetImpl(viskores::internal::IndexTag<17>) const
4087  {
4088  return this->Value17;
4089  }
4090 
4091  T18 Value18;
4092  static T18 ElementTypeI(viskores::internal::IndexTag<18>);
4093  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T18>& GetImpl(viskores::internal::IndexTag<18>)
4094  {
4095  return this->Value18;
4096  }
4097  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T18>& GetImpl(viskores::internal::IndexTag<18>) const
4098  {
4099  return this->Value18;
4100  }
4101 
4102 
4103  // Invalid indices
4104  template <viskores::IdComponent Index>
4105  static viskores::internal::NullType ElementTypeI(viskores::internal::IndexTag<Index>);
4106 
4107  template <viskores::IdComponent, typename>
4108  friend struct detail::TupleElementImpl;
4109 
4110 public:
4111  static constexpr viskores::IdComponent Size = 19;
4112  template <viskores::IdComponent Index>
4114 
4115  Tuple() = default;
4116  Tuple(Tuple&&) = default;
4117  Tuple(const Tuple&) = default;
4118  ~Tuple() = default;
4119  Tuple& operator=(Tuple&&) = default;
4120  Tuple& operator=(const Tuple&) = default;
4121 
4123  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>
4124  VISKORES_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)
4125  : Value0(std::forward<A0>(a0))
4126  , Value1(std::forward<A1>(a1))
4127  , Value2(std::forward<A2>(a2))
4128  , Value3(std::forward<A3>(a3))
4129  , Value4(std::forward<A4>(a4))
4130  , Value5(std::forward<A5>(a5))
4131  , Value6(std::forward<A6>(a6))
4132  , Value7(std::forward<A7>(a7))
4133  , Value8(std::forward<A8>(a8))
4134  , Value9(std::forward<A9>(a9))
4135  , Value10(std::forward<A10>(a10))
4136  , Value11(std::forward<A11>(a11))
4137  , Value12(std::forward<A12>(a12))
4138  , Value13(std::forward<A13>(a13))
4139  , Value14(std::forward<A14>(a14))
4140  , Value15(std::forward<A15>(a15))
4141  , Value16(std::forward<A16>(a16))
4142  , Value17(std::forward<A17>(a17))
4143  , Value18(std::forward<A18>(a18))
4144  {
4145  }
4146 
4147  template <viskores::IdComponent Index>
4148  VISKORES_EXEC_CONT auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
4149  {
4150  return this->GetImpl(viskores::internal::IndexTag<Index>{});
4151  }
4152 
4153  template <viskores::IdComponent Index>
4154  VISKORES_EXEC_CONT auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
4155  {
4156  return this->GetImpl(viskores::internal::IndexTag<Index>{});
4157  }
4158 
4160  template <typename Function, typename... Args>
4162  auto Apply(Function&& f, Args&&... args)
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  }
4168  template <typename Function, typename... Args>
4170  auto Apply(Function&& f, Args&&... args) const
4171  -> 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))
4172  {
4173  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);
4174  }
4175 
4177  template <typename Function>
4178  VISKORES_EXEC_CONT void ForEach(Function&& f)
4179  {
4180  viskores::ForEach(*this, std::forward<Function>(f));
4181  }
4183  template <typename Function>
4184  VISKORES_EXEC_CONT void ForEach(Function&& f) const
4185  {
4186  viskores::ForEach(*this, std::forward<Function>(f));
4187  }
4188 
4190  template <typename Function>
4191  VISKORES_EXEC_CONT auto Transform(Function&& f)
4192  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
4193  {
4194  return viskores::Transform(*this, std::forward<Function>(f));
4195  }
4197  template <typename Function>
4198  VISKORES_EXEC_CONT auto Transform(Function&& f) const
4199  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
4200  {
4201  return viskores::Transform(*this, std::forward<Function>(f));
4202  }
4203 };
4204 
4205 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>
4206 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>
4207 {
4209  static T0 ElementTypeI(viskores::internal::IndexTag<0>);
4210  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>)
4211  {
4212  return this->Value0;
4213  }
4214  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>) const
4215  {
4216  return this->Value0;
4217  }
4218 
4220  static T1 ElementTypeI(viskores::internal::IndexTag<1>);
4221  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>)
4222  {
4223  return this->Value1;
4224  }
4225  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>) const
4226  {
4227  return this->Value1;
4228  }
4229 
4231  static T2 ElementTypeI(viskores::internal::IndexTag<2>);
4232  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>)
4233  {
4234  return this->Value2;
4235  }
4236  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>) const
4237  {
4238  return this->Value2;
4239  }
4240 
4242  static T3 ElementTypeI(viskores::internal::IndexTag<3>);
4243  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>)
4244  {
4245  return this->Value3;
4246  }
4247  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>) const
4248  {
4249  return this->Value3;
4250  }
4251 
4253  static T4 ElementTypeI(viskores::internal::IndexTag<4>);
4254  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>)
4255  {
4256  return this->Value4;
4257  }
4258  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>) const
4259  {
4260  return this->Value4;
4261  }
4262 
4264  static T5 ElementTypeI(viskores::internal::IndexTag<5>);
4265  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>)
4266  {
4267  return this->Value5;
4268  }
4269  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>) const
4270  {
4271  return this->Value5;
4272  }
4273 
4275  static T6 ElementTypeI(viskores::internal::IndexTag<6>);
4276  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>)
4277  {
4278  return this->Value6;
4279  }
4280  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>) const
4281  {
4282  return this->Value6;
4283  }
4284 
4286  static T7 ElementTypeI(viskores::internal::IndexTag<7>);
4287  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>)
4288  {
4289  return this->Value7;
4290  }
4291  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>) const
4292  {
4293  return this->Value7;
4294  }
4295 
4297  static T8 ElementTypeI(viskores::internal::IndexTag<8>);
4298  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>)
4299  {
4300  return this->Value8;
4301  }
4302  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>) const
4303  {
4304  return this->Value8;
4305  }
4306 
4308  static T9 ElementTypeI(viskores::internal::IndexTag<9>);
4309  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>)
4310  {
4311  return this->Value9;
4312  }
4313  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>) const
4314  {
4315  return this->Value9;
4316  }
4317 
4318  T10 Value10;
4319  static T10 ElementTypeI(viskores::internal::IndexTag<10>);
4320  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T10>& GetImpl(viskores::internal::IndexTag<10>)
4321  {
4322  return this->Value10;
4323  }
4324  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T10>& GetImpl(viskores::internal::IndexTag<10>) const
4325  {
4326  return this->Value10;
4327  }
4328 
4329  T11 Value11;
4330  static T11 ElementTypeI(viskores::internal::IndexTag<11>);
4331  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T11>& GetImpl(viskores::internal::IndexTag<11>)
4332  {
4333  return this->Value11;
4334  }
4335  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T11>& GetImpl(viskores::internal::IndexTag<11>) const
4336  {
4337  return this->Value11;
4338  }
4339 
4340  T12 Value12;
4341  static T12 ElementTypeI(viskores::internal::IndexTag<12>);
4342  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T12>& GetImpl(viskores::internal::IndexTag<12>)
4343  {
4344  return this->Value12;
4345  }
4346  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T12>& GetImpl(viskores::internal::IndexTag<12>) const
4347  {
4348  return this->Value12;
4349  }
4350 
4351  T13 Value13;
4352  static T13 ElementTypeI(viskores::internal::IndexTag<13>);
4353  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T13>& GetImpl(viskores::internal::IndexTag<13>)
4354  {
4355  return this->Value13;
4356  }
4357  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T13>& GetImpl(viskores::internal::IndexTag<13>) const
4358  {
4359  return this->Value13;
4360  }
4361 
4362  T14 Value14;
4363  static T14 ElementTypeI(viskores::internal::IndexTag<14>);
4364  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T14>& GetImpl(viskores::internal::IndexTag<14>)
4365  {
4366  return this->Value14;
4367  }
4368  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T14>& GetImpl(viskores::internal::IndexTag<14>) const
4369  {
4370  return this->Value14;
4371  }
4372 
4373  T15 Value15;
4374  static T15 ElementTypeI(viskores::internal::IndexTag<15>);
4375  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T15>& GetImpl(viskores::internal::IndexTag<15>)
4376  {
4377  return this->Value15;
4378  }
4379  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T15>& GetImpl(viskores::internal::IndexTag<15>) const
4380  {
4381  return this->Value15;
4382  }
4383 
4384  T16 Value16;
4385  static T16 ElementTypeI(viskores::internal::IndexTag<16>);
4386  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T16>& GetImpl(viskores::internal::IndexTag<16>)
4387  {
4388  return this->Value16;
4389  }
4390  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T16>& GetImpl(viskores::internal::IndexTag<16>) const
4391  {
4392  return this->Value16;
4393  }
4394 
4395  T17 Value17;
4396  static T17 ElementTypeI(viskores::internal::IndexTag<17>);
4397  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T17>& GetImpl(viskores::internal::IndexTag<17>)
4398  {
4399  return this->Value17;
4400  }
4401  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T17>& GetImpl(viskores::internal::IndexTag<17>) const
4402  {
4403  return this->Value17;
4404  }
4405 
4406  T18 Value18;
4407  static T18 ElementTypeI(viskores::internal::IndexTag<18>);
4408  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T18>& GetImpl(viskores::internal::IndexTag<18>)
4409  {
4410  return this->Value18;
4411  }
4412  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T18>& GetImpl(viskores::internal::IndexTag<18>) const
4413  {
4414  return this->Value18;
4415  }
4416 
4417  T19 Value19;
4418  static T19 ElementTypeI(viskores::internal::IndexTag<19>);
4419  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T19>& GetImpl(viskores::internal::IndexTag<19>)
4420  {
4421  return this->Value19;
4422  }
4423  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T19>& GetImpl(viskores::internal::IndexTag<19>) const
4424  {
4425  return this->Value19;
4426  }
4427 
4428 
4429  // Invalid indices
4430  template <viskores::IdComponent Index>
4431  static viskores::internal::NullType ElementTypeI(viskores::internal::IndexTag<Index>);
4432 
4433  template <viskores::IdComponent, typename>
4434  friend struct detail::TupleElementImpl;
4435 
4436 public:
4437  static constexpr viskores::IdComponent Size = 20;
4438  template <viskores::IdComponent Index>
4440 
4441  Tuple() = default;
4442  Tuple(Tuple&&) = default;
4443  Tuple(const Tuple&) = default;
4444  ~Tuple() = default;
4445  Tuple& operator=(Tuple&&) = default;
4446  Tuple& operator=(const Tuple&) = default;
4447 
4449  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>
4450  VISKORES_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)
4451  : Value0(std::forward<A0>(a0))
4452  , Value1(std::forward<A1>(a1))
4453  , Value2(std::forward<A2>(a2))
4454  , Value3(std::forward<A3>(a3))
4455  , Value4(std::forward<A4>(a4))
4456  , Value5(std::forward<A5>(a5))
4457  , Value6(std::forward<A6>(a6))
4458  , Value7(std::forward<A7>(a7))
4459  , Value8(std::forward<A8>(a8))
4460  , Value9(std::forward<A9>(a9))
4461  , Value10(std::forward<A10>(a10))
4462  , Value11(std::forward<A11>(a11))
4463  , Value12(std::forward<A12>(a12))
4464  , Value13(std::forward<A13>(a13))
4465  , Value14(std::forward<A14>(a14))
4466  , Value15(std::forward<A15>(a15))
4467  , Value16(std::forward<A16>(a16))
4468  , Value17(std::forward<A17>(a17))
4469  , Value18(std::forward<A18>(a18))
4470  , Value19(std::forward<A19>(a19))
4471  {
4472  }
4473 
4474  template <viskores::IdComponent Index>
4475  VISKORES_EXEC_CONT auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
4476  {
4477  return this->GetImpl(viskores::internal::IndexTag<Index>{});
4478  }
4479 
4480  template <viskores::IdComponent Index>
4481  VISKORES_EXEC_CONT auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
4482  {
4483  return this->GetImpl(viskores::internal::IndexTag<Index>{});
4484  }
4485 
4487  template <typename Function, typename... Args>
4489  auto Apply(Function&& f, Args&&... args)
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  }
4495  template <typename Function, typename... Args>
4497  auto Apply(Function&& f, Args&&... args) const
4498  -> 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))
4499  {
4500  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);
4501  }
4502 
4504  template <typename Function>
4505  VISKORES_EXEC_CONT void ForEach(Function&& f)
4506  {
4507  viskores::ForEach(*this, std::forward<Function>(f));
4508  }
4510  template <typename Function>
4511  VISKORES_EXEC_CONT void ForEach(Function&& f) const
4512  {
4513  viskores::ForEach(*this, std::forward<Function>(f));
4514  }
4515 
4517  template <typename Function>
4518  VISKORES_EXEC_CONT auto Transform(Function&& f)
4519  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
4520  {
4521  return viskores::Transform(*this, std::forward<Function>(f));
4522  }
4524  template <typename Function>
4525  VISKORES_EXEC_CONT auto Transform(Function&& f) const
4526  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
4527  {
4528  return viskores::Transform(*this, std::forward<Function>(f));
4529  }
4530 };
4531 
4532 
4533 // Fallback case for tuples with > 20 items.
4534 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>
4535 class Tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts...>
4536 {
4538  static T0 ElementTypeI(viskores::internal::IndexTag<0>);
4539  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>)
4540  {
4541  return this->Value0;
4542  }
4543  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T0>& GetImpl(viskores::internal::IndexTag<0>) const
4544  {
4545  return this->Value0;
4546  }
4547 
4549  static T1 ElementTypeI(viskores::internal::IndexTag<1>);
4550  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>)
4551  {
4552  return this->Value1;
4553  }
4554  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T1>& GetImpl(viskores::internal::IndexTag<1>) const
4555  {
4556  return this->Value1;
4557  }
4558 
4560  static T2 ElementTypeI(viskores::internal::IndexTag<2>);
4561  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>)
4562  {
4563  return this->Value2;
4564  }
4565  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T2>& GetImpl(viskores::internal::IndexTag<2>) const
4566  {
4567  return this->Value2;
4568  }
4569 
4571  static T3 ElementTypeI(viskores::internal::IndexTag<3>);
4572  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>)
4573  {
4574  return this->Value3;
4575  }
4576  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T3>& GetImpl(viskores::internal::IndexTag<3>) const
4577  {
4578  return this->Value3;
4579  }
4580 
4582  static T4 ElementTypeI(viskores::internal::IndexTag<4>);
4583  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>)
4584  {
4585  return this->Value4;
4586  }
4587  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T4>& GetImpl(viskores::internal::IndexTag<4>) const
4588  {
4589  return this->Value4;
4590  }
4591 
4593  static T5 ElementTypeI(viskores::internal::IndexTag<5>);
4594  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>)
4595  {
4596  return this->Value5;
4597  }
4598  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T5>& GetImpl(viskores::internal::IndexTag<5>) const
4599  {
4600  return this->Value5;
4601  }
4602 
4604  static T6 ElementTypeI(viskores::internal::IndexTag<6>);
4605  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>)
4606  {
4607  return this->Value6;
4608  }
4609  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T6>& GetImpl(viskores::internal::IndexTag<6>) const
4610  {
4611  return this->Value6;
4612  }
4613 
4615  static T7 ElementTypeI(viskores::internal::IndexTag<7>);
4616  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>)
4617  {
4618  return this->Value7;
4619  }
4620  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T7>& GetImpl(viskores::internal::IndexTag<7>) const
4621  {
4622  return this->Value7;
4623  }
4624 
4626  static T8 ElementTypeI(viskores::internal::IndexTag<8>);
4627  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>)
4628  {
4629  return this->Value8;
4630  }
4631  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T8>& GetImpl(viskores::internal::IndexTag<8>) const
4632  {
4633  return this->Value8;
4634  }
4635 
4637  static T9 ElementTypeI(viskores::internal::IndexTag<9>);
4638  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>)
4639  {
4640  return this->Value9;
4641  }
4642  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T9>& GetImpl(viskores::internal::IndexTag<9>) const
4643  {
4644  return this->Value9;
4645  }
4646 
4647  T10 Value10;
4648  static T10 ElementTypeI(viskores::internal::IndexTag<10>);
4649  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T10>& GetImpl(viskores::internal::IndexTag<10>)
4650  {
4651  return this->Value10;
4652  }
4653  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T10>& GetImpl(viskores::internal::IndexTag<10>) const
4654  {
4655  return this->Value10;
4656  }
4657 
4658  T11 Value11;
4659  static T11 ElementTypeI(viskores::internal::IndexTag<11>);
4660  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T11>& GetImpl(viskores::internal::IndexTag<11>)
4661  {
4662  return this->Value11;
4663  }
4664  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T11>& GetImpl(viskores::internal::IndexTag<11>) const
4665  {
4666  return this->Value11;
4667  }
4668 
4669  T12 Value12;
4670  static T12 ElementTypeI(viskores::internal::IndexTag<12>);
4671  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T12>& GetImpl(viskores::internal::IndexTag<12>)
4672  {
4673  return this->Value12;
4674  }
4675  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T12>& GetImpl(viskores::internal::IndexTag<12>) const
4676  {
4677  return this->Value12;
4678  }
4679 
4680  T13 Value13;
4681  static T13 ElementTypeI(viskores::internal::IndexTag<13>);
4682  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T13>& GetImpl(viskores::internal::IndexTag<13>)
4683  {
4684  return this->Value13;
4685  }
4686  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T13>& GetImpl(viskores::internal::IndexTag<13>) const
4687  {
4688  return this->Value13;
4689  }
4690 
4691  T14 Value14;
4692  static T14 ElementTypeI(viskores::internal::IndexTag<14>);
4693  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T14>& GetImpl(viskores::internal::IndexTag<14>)
4694  {
4695  return this->Value14;
4696  }
4697  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T14>& GetImpl(viskores::internal::IndexTag<14>) const
4698  {
4699  return this->Value14;
4700  }
4701 
4702  T15 Value15;
4703  static T15 ElementTypeI(viskores::internal::IndexTag<15>);
4704  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T15>& GetImpl(viskores::internal::IndexTag<15>)
4705  {
4706  return this->Value15;
4707  }
4708  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T15>& GetImpl(viskores::internal::IndexTag<15>) const
4709  {
4710  return this->Value15;
4711  }
4712 
4713  T16 Value16;
4714  static T16 ElementTypeI(viskores::internal::IndexTag<16>);
4715  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T16>& GetImpl(viskores::internal::IndexTag<16>)
4716  {
4717  return this->Value16;
4718  }
4719  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T16>& GetImpl(viskores::internal::IndexTag<16>) const
4720  {
4721  return this->Value16;
4722  }
4723 
4724  T17 Value17;
4725  static T17 ElementTypeI(viskores::internal::IndexTag<17>);
4726  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T17>& GetImpl(viskores::internal::IndexTag<17>)
4727  {
4728  return this->Value17;
4729  }
4730  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T17>& GetImpl(viskores::internal::IndexTag<17>) const
4731  {
4732  return this->Value17;
4733  }
4734 
4735  T18 Value18;
4736  static T18 ElementTypeI(viskores::internal::IndexTag<18>);
4737  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T18>& GetImpl(viskores::internal::IndexTag<18>)
4738  {
4739  return this->Value18;
4740  }
4741  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T18>& GetImpl(viskores::internal::IndexTag<18>) const
4742  {
4743  return this->Value18;
4744  }
4745 
4746  T19 Value19;
4747  static T19 ElementTypeI(viskores::internal::IndexTag<19>);
4748  VISKORES_EXEC_CONT viskores::internal::remove_cvref<T19>& GetImpl(viskores::internal::IndexTag<19>)
4749  {
4750  return this->Value19;
4751  }
4752  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<T19>& GetImpl(viskores::internal::IndexTag<19>) const
4753  {
4754  return this->Value19;
4755  }
4756 
4757 
4758  // Implement the "extra" objects in a sub-Tuple
4761 
4762  template <viskores::IdComponent Index>
4764  ElementTypeI(viskores::internal::IndexTag<Index>);
4765 
4766  template <typename viskores::IdComponent Index>
4767  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<viskores::TupleElement<Index - 20, RemainingValuesType>>&
4768  GetImpl(viskores::internal::IndexTag<Index>) { return viskores::Get<Index - 20>(this->RemainingValues); }
4769  template <typename viskores::IdComponent Index>
4770  VISKORES_EXEC_CONT const viskores::internal::remove_cvref<viskores::TupleElement<Index - 20, RemainingValuesType>>&
4771  GetImpl(viskores::internal::IndexTag<Index>) const { return viskores::Get<Index - 20>(this->RemainingValues); }
4772 
4773  template <viskores::IdComponent, typename>
4774  friend struct detail::TupleElementImpl;
4775 
4776 public:
4777  static constexpr viskores::IdComponent Size =
4778  21 + static_cast<viskores::IdComponent>(sizeof...(Ts));
4779  template <viskores::IdComponent Index>
4780  using ElementType = viskores::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...>>;
4781 
4782  Tuple() = default;
4783  Tuple(Tuple&&) = default;
4784  Tuple(const Tuple&) = default;
4785  ~Tuple() = default;
4786  Tuple& operator=(Tuple&&) = default;
4787  Tuple& operator=(const Tuple&) = default;
4788 
4790  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>
4791  VISKORES_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)
4792  : Value0(std::forward<A0>(a0))
4793  , Value1(std::forward<A1>(a1))
4794  , Value2(std::forward<A2>(a2))
4795  , Value3(std::forward<A3>(a3))
4796  , Value4(std::forward<A4>(a4))
4797  , Value5(std::forward<A5>(a5))
4798  , Value6(std::forward<A6>(a6))
4799  , Value7(std::forward<A7>(a7))
4800  , Value8(std::forward<A8>(a8))
4801  , Value9(std::forward<A9>(a9))
4802  , Value10(std::forward<A10>(a10))
4803  , Value11(std::forward<A11>(a11))
4804  , Value12(std::forward<A12>(a12))
4805  , Value13(std::forward<A13>(a13))
4806  , Value14(std::forward<A14>(a14))
4807  , Value15(std::forward<A15>(a15))
4808  , Value16(std::forward<A16>(a16))
4809  , Value17(std::forward<A17>(a17))
4810  , Value18(std::forward<A18>(a18))
4811  , Value19(std::forward<A19>(a19))
4812  , RemainingValues(std::forward<As>(remainingArgs)...)
4813  {
4814  }
4815 
4816  template <viskores::IdComponent Index>
4817  VISKORES_EXEC_CONT auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
4818  {
4819  return this->GetImpl(viskores::internal::IndexTag<Index>{});
4820  }
4821 
4822  template <viskores::IdComponent Index>
4823  VISKORES_EXEC_CONT auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag<Index>{}))
4824  {
4825  return this->GetImpl(viskores::internal::IndexTag<Index>{});
4826  }
4827 
4829  template <typename Function, typename... Args>
4831  auto Apply(Function&& f, Args&&... args)
4832  -> decltype(this->RemainingValues.Apply(std::forward<Function>(f),
4833  std::forward<Args>(args)...,
4834  this->Value0,
4835  this->Value1,
4836  this->Value2,
4837  this->Value3,
4838  this->Value4,
4839  this->Value5,
4840  this->Value6,
4841  this->Value7,
4842  this->Value8,
4843  this->Value9,
4844  this->Value10,
4845  this->Value11,
4846  this->Value12,
4847  this->Value13,
4848  this->Value14,
4849  this->Value15,
4850  this->Value16,
4851  this->Value17,
4852  this->Value18,
4853  this->Value19))
4854  {
4855  return this->RemainingValues.Apply(std::forward<Function>(f),
4856  std::forward<Args>(args)...,
4857  this->Value0,
4858  this->Value1,
4859  this->Value2,
4860  this->Value3,
4861  this->Value4,
4862  this->Value5,
4863  this->Value6,
4864  this->Value7,
4865  this->Value8,
4866  this->Value9,
4867  this->Value10,
4868  this->Value11,
4869  this->Value12,
4870  this->Value13,
4871  this->Value14,
4872  this->Value15,
4873  this->Value16,
4874  this->Value17,
4875  this->Value18,
4876  this->Value19);
4877  }
4879  template <typename Function, typename... Args>
4881  auto Apply(Function&& f, Args&&... args) const
4882  -> decltype(this->RemainingValues.Apply(std::forward<Function>(f),
4883  std::forward<Args>(args)...,
4884  this->Value0,
4885  this->Value1,
4886  this->Value2,
4887  this->Value3,
4888  this->Value4,
4889  this->Value5,
4890  this->Value6,
4891  this->Value7,
4892  this->Value8,
4893  this->Value9,
4894  this->Value10,
4895  this->Value11,
4896  this->Value12,
4897  this->Value13,
4898  this->Value14,
4899  this->Value15,
4900  this->Value16,
4901  this->Value17,
4902  this->Value18,
4903  this->Value19))
4904  {
4905  return this->RemainingValues.Apply(std::forward<Function>(f),
4906  std::forward<Args>(args)...,
4907  this->Value0,
4908  this->Value1,
4909  this->Value2,
4910  this->Value3,
4911  this->Value4,
4912  this->Value5,
4913  this->Value6,
4914  this->Value7,
4915  this->Value8,
4916  this->Value9,
4917  this->Value10,
4918  this->Value11,
4919  this->Value12,
4920  this->Value13,
4921  this->Value14,
4922  this->Value15,
4923  this->Value16,
4924  this->Value17,
4925  this->Value18,
4926  this->Value19);
4927  }
4928 
4930  template <typename Function>
4931  VISKORES_EXEC_CONT void ForEach(Function&& f)
4932  {
4933  viskores::ForEach(*this, std::forward<Function>(f));
4934  }
4936  template <typename Function>
4937  VISKORES_EXEC_CONT void ForEach(Function&& f) const
4938  {
4939  viskores::ForEach(*this, std::forward<Function>(f));
4940  }
4941 
4943  template <typename Function>
4944  VISKORES_EXEC_CONT auto Transform(Function&& f)
4945  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
4946  {
4947  return viskores::Transform(*this, std::forward<Function>(f));
4948  }
4950  template <typename Function>
4951  VISKORES_EXEC_CONT auto Transform(Function&& f) const
4952  -> decltype(viskores::Transform(*this, std::forward<Function>(f)))
4953  {
4954  return viskores::Transform(*this, std::forward<Function>(f));
4955  }
4956 };
4957 
4959 
4960 // clang-format on
4961 
4962 } // namespace viskores
4963 
4964 #endif //viskores_Tuple_h
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >)
Definition: Tuple.h:4594
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >)
Definition: Tuple.h:3066
viskores::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:3959
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:2225
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >)
Definition: Tuple.h:4539
viskores::Tuple< T0, T1 >::ElementType
viskores::TupleElement< Index, Tuple< T0, T1 > > ElementType
Definition: Tuple.h:407
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >) const
Definition: Tuple.h:2548
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
const viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >) const
Definition: Tuple.h:1844
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
const viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >) const
Definition: Tuple.h:1226
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >) const
Definition: Tuple.h:2063
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Value4
T4 Value4
Definition: Tuple.h:1849
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >) const
Definition: Tuple.h:3393
viskores::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:4252
viskores::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:4680
viskores::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:4384
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >)
Definition: Tuple.h:4254
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const viskores::internal::remove_cvref< T15 > & GetImpl(viskores::internal::IndexTag< 15 >) const
Definition: Tuple.h:3470
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >)
Definition: Tuple.h:2037
viskores::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:4489
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >)
Definition: Tuple.h:3334
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >) const
Definition: Tuple.h:3070
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:2474
viskores::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(viskores::internal::IndexTag< Index >
Definition: Tuple.h:4817
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Value5
T5 Value5
Definition: Tuple.h:1104
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >) const
Definition: Tuple.h:2781
viskores::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:3560
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::ElementType
viskores::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7 > > ElementType
Definition: Tuple.h:1319
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >)
Definition: Tuple.h:3658
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
viskores::internal::remove_cvref< T15 > & GetImpl(viskores::internal::IndexTag< 15 >)
Definition: Tuple.h:3757
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
viskores::internal::remove_cvref< T10 > & GetImpl(viskores::internal::IndexTag< 10 >)
Definition: Tuple.h:4320
viskores::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:3992
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value3
T3 Value3
Definition: Tuple.h:2288
viskores::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:3689
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const viskores::internal::remove_cvref< T14 > & GetImpl(viskores::internal::IndexTag< 14 >) const
Definition: Tuple.h:2913
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
const viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >) const
Definition: Tuple.h:1270
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value9
T9 Value9
Definition: Tuple.h:2123
viskores::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 viskores::internal::remove_cvref< T13 > & GetImpl(viskores::internal::IndexTag< 13 >) const
Definition: Tuple.h:4686
viskores::Apply
auto Apply(const viskores::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 viskores::Tuple as arguments.
Definition: Tuple.h:183
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Transform
auto Transform(Function &&f) -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:1386
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >) const
Definition: Tuple.h:2074
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:2231
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value15
T15 Value15
Definition: Tuple.h:3464
viskores::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 viskores::internal::remove_cvref< viskores::TupleElement< Index - 20, RemainingValuesType > > & GetImpl(viskores::internal::IndexTag< Index >)
Definition: Tuple.h:4768
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Value8
T8 Value8
Definition: Tuple.h:1893
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const viskores::internal::remove_cvref< T12 > & GetImpl(viskores::internal::IndexTag< 12 >) const
Definition: Tuple.h:4346
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
const viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >) const
Definition: Tuple.h:1486
viskores::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:3601
viskores::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 viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >) const
Definition: Tuple.h:4598
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >) const
Definition: Tuple.h:3673
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value7
T7 Value7
Definition: Tuple.h:3376
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >) const
Definition: Tuple.h:4225
viskores::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 viskores::internal::remove_cvref< T19 > & GetImpl(viskores::internal::IndexTag< 19 >) const
Definition: Tuple.h:4752
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Value0
T0 Value0
Definition: Tuple.h:1049
viskores::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:2178
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >) const
Definition: Tuple.h:2825
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value10
T10 Value10
Definition: Tuple.h:2365
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >)
Definition: Tuple.h:2268
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Transform
auto Transform(Function &&f) const -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:1588
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Value2
T2 Value2
Definition: Tuple.h:1425
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
viskores::internal::remove_cvref< T17 > & GetImpl(viskores::internal::IndexTag< 17 >)
Definition: Tuple.h:4082
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value1
T1 Value1
Definition: Tuple.h:3310
viskores::Tuple< T0, T1 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:461
viskores::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:4881
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >)
Definition: Tuple.h:2103
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::ElementType
viskores::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 > > ElementType
Definition: Tuple.h:1719
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >)
Definition: Tuple.h:1906
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value6
T6 Value6
Definition: Tuple.h:3086
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >)
Definition: Tuple.h:1222
viskores::Tuple< T0, T1, T2 >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2))
Definition: Tuple.h:570
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >) const
Definition: Tuple.h:3910
viskores::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:3590
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Value6
T6 Value6
Definition: Tuple.h:1115
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >)
Definition: Tuple.h:2290
viskores::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 viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >) const
Definition: Tuple.h:4642
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >)
Definition: Tuple.h:2081
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >) const
Definition: Tuple.h:3976
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value11
T11 Value11
Definition: Tuple.h:2376
viskores::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:4592
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Transform
auto Transform(Function &&f) const -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:2488
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >)
Definition: Tuple.h:4572
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::Get
auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:995
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >)
Definition: Tuple.h:2356
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
const viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >) const
Definition: Tuple.h:1442
viskores::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(viskores::internal::IndexTag< Index >
Definition: Tuple.h:4148
viskores::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:3711
viskores::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:1948
viskores::Tuple< T0, T1, T2, T3 >::GetImpl
const viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >) const
Definition: Tuple.h:625
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value13
T13 Value13
Definition: Tuple.h:3442
viskores::Tuple< T0, T1, T2 >::ElementType
viskores::TupleElement< Index, Tuple< T0, T1, T2 > > ElementType
Definition: Tuple.h:529
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
viskores::internal::remove_cvref< T15 > & GetImpl(viskores::internal::IndexTag< 15 >)
Definition: Tuple.h:3466
viskores::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:4417
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Transform
auto Transform(Function &&f) -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:3003
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >)
Definition: Tuple.h:3917
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >)
Definition: Tuple.h:2777
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
viskores::internal::remove_cvref< T13 > & GetImpl(viskores::internal::IndexTag< 13 >)
Definition: Tuple.h:4353
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
viskores::internal::remove_cvref< T11 > & GetImpl(viskores::internal::IndexTag< 11 >)
Definition: Tuple.h:4660
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
const viskores::internal::remove_cvref< T10 > & GetImpl(viskores::internal::IndexTag< 10 >) const
Definition: Tuple.h:1921
viskores::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:3634
viskores::tuple_element_t
typename tuple_element< Index, TupleType >::type tuple_element_t
Compatible with std::tuple_element_t for viskores::Tuple.
Definition: Tuple.h:84
viskores::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:3656
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >)
Definition: Tuple.h:4583
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >) const
Definition: Tuple.h:4313
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value5
T5 Value5
Definition: Tuple.h:2808
viskores::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(viskores::internal::IndexTag< Index >
Definition: Tuple.h:4475
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >) const
Definition: Tuple.h:3092
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::Value3
T3 Value3
Definition: Tuple.h:923
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:1190
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Value7
T7 Value7
Definition: Tuple.h:1480
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Transform
auto Transform(Function &&f) const -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:3289
viskores::Tuple< T0, T1, T2, T3, T4 >::Value2
T2 Value2
Definition: Tuple.h:765
viskores::Tuple< T0, T1, T2, T3 >::Value2
T2 Value2
Definition: Tuple.h:630
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >)
Definition: Tuple.h:4276
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >) const
Definition: Tuple.h:3607
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >)
Definition: Tuple.h:2832
viskores::MakeTuple
auto MakeTuple(Ts &&... args) -> viskores::Tuple< typename std::decay< Ts >::type... >
Creates a new viskores::Tuple with the given types.
Definition: Tuple.h:132
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >)
Definition: Tuple.h:4221
viskores::tuple_element::type
TupleElement< static_cast< viskores::IdComponent >(Index), TupleType > type
Definition: Tuple.h:78
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:1568
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
viskores::internal::remove_cvref< T11 > & GetImpl(viskores::internal::IndexTag< 11 >)
Definition: Tuple.h:4331
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >)
Definition: Tuple.h:1862
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Get
auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:2699
Types.h
viskores::Transform
auto Transform(const TupleType &&tuple, Function &&f) -> decltype(Apply(tuple, detail::TupleTransformFunctor(), std::forward< Function >(f)))
Construct a new viskores::Tuple by applying a function to each value.
Definition: Tuple.h:221
viskores::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(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:4525
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value8
T8 Value8
Definition: Tuple.h:2112
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Value9
T9 Value9
Definition: Tuple.h:1904
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >) const
Definition: Tuple.h:4269
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Get
auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:1538
viskores::make_tuple
auto make_tuple(Ts &&... args) -> decltype(viskores::MakeTuple(std::forward< Ts >(args)...))
Compatible with std::make_tuple for viskores::Tuple.
Definition: Tuple.h:141
viskores::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:3269
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >)
Definition: Tuple.h:947
viskores::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:4318
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value7
T7 Value7
Definition: Tuple.h:2830
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >)
Definition: Tuple.h:2312
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const viskores::internal::remove_cvref< T10 > & GetImpl(viskores::internal::IndexTag< 10 >) const
Definition: Tuple.h:2614
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::Value4
T4 Value4
Definition: Tuple.h:934
viskores::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:2420
viskores::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:4746
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >)
Definition: Tuple.h:1840
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Value4
T4 Value4
Definition: Tuple.h:1447
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value2
T2 Value2
Definition: Tuple.h:2046
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value16
T16 Value16
Definition: Tuple.h:3475
viskores::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:3915
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >) const
Definition: Tuple.h:3349
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value1
T1 Value1
Definition: Tuple.h:3031
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >) const
Definition: Tuple.h:4302
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const viskores::internal::remove_cvref< T11 > & GetImpl(viskores::internal::IndexTag< 11 >) const
Definition: Tuple.h:4020
viskores::Tuple< T0, T1, T2 >::Value2
T2 Value2
Definition: Tuple.h:507
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value6
T6 Value6
Definition: Tuple.h:3365
viskores::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:4647
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >)
Definition: Tuple.h:3928
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >)
Definition: Tuple.h:3389
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Value10
T10 Value10
Definition: Tuple.h:1915
viskores::Tuple< T0, T1, T2, T3, T4 >::Transform
auto Transform(Function &&f) -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:873
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >) const
Definition: Tuple.h:2836
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Transform
auto Transform(Function &&f) const -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:3010
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const viskores::internal::remove_cvref< T19 > & GetImpl(viskores::internal::IndexTag< 19 >) const
Definition: Tuple.h:4423
viskores::Tuple< T0, T1, T2, T3, T4 >::GetImpl
viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >)
Definition: Tuple.h:756
viskores::Tuple< T0, T1, T2 >::GetImpl
viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >)
Definition: Tuple.h:487
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >)
Definition: Tuple.h:3669
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >)
Definition: Tuple.h:2854
viskores::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 viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >) const
Definition: Tuple.h:4565
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >) const
Definition: Tuple.h:3114
viskores::Tuple< T0, T1, T2, T3 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:713
viskores::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 viskores::internal::remove_cvref< T17 > & GetImpl(viskores::internal::IndexTag< 17 >) const
Definition: Tuple.h:4730
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >)
Definition: Tuple.h:4605
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value5
T5 Value5
Definition: Tuple.h:2310
viskores::ForEach
void ForEach(const viskores::Tuple< Ts... > &tuple, Function &&f)
Call a function with each value of the given tuple.
Definition: Tuple.h:201
viskores::Tuple< T0, T1 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:455
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const viskores::internal::remove_cvref< T15 > & GetImpl(viskores::internal::IndexTag< 15 >) const
Definition: Tuple.h:3191
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Value4
T4 Value4
Definition: Tuple.h:1264
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >)
Definition: Tuple.h:3323
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >) const
Definition: Tuple.h:2559
viskores::TupleElement
typename detail::TupleElementImpl< Index, TupleType >::type TupleElement
Becomes the type of the given index for the given viskores::Tuple.
Definition: Tuple.h:71
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::Transform
auto Transform(Function &&f) -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:1032
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const viskores::internal::remove_cvref< T13 > & GetImpl(viskores::internal::IndexTag< 13 >) const
Definition: Tuple.h:3739
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Value6
T6 Value6
Definition: Tuple.h:1871
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const viskores::internal::remove_cvref< T10 > & GetImpl(viskores::internal::IndexTag< 10 >) const
Definition: Tuple.h:2140
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value10
T10 Value10
Definition: Tuple.h:2134
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value9
T9 Value9
Definition: Tuple.h:2852
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:2990
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Transform
auto Transform(Function &&f) -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:2481
viskores::Tuple< T0, T1, T2, T3, T4 >::GetImpl
const viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >) const
Definition: Tuple.h:771
viskores::Tuple< T0, T1, T2 >::GetImpl
const viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >) const
Definition: Tuple.h:502
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
const viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >) const
Definition: Tuple.h:1303
viskores::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:4603
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value11
T11 Value11
Definition: Tuple.h:2145
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
viskores::internal::remove_cvref< T14 > & GetImpl(viskores::internal::IndexTag< 14 >)
Definition: Tuple.h:3176
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
const viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >) const
Definition: Tuple.h:896
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const viskores::internal::remove_cvref< T16 > & GetImpl(viskores::internal::IndexTag< 16 >) const
Definition: Tuple.h:3481
viskores::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:4058
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
viskores::internal::remove_cvref< T12 > & GetImpl(viskores::internal::IndexTag< 12 >)
Definition: Tuple.h:2632
viskores::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:4230
viskores::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:4831
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Transform
auto Transform(Function &&f) const -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:1210
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >) const
Definition: Tuple.h:3921
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const viskores::internal::remove_cvref< T11 > & GetImpl(viskores::internal::IndexTag< 11 >) const
Definition: Tuple.h:4335
viskores::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:4362
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const viskores::internal::remove_cvref< T17 > & GetImpl(viskores::internal::IndexTag< 17 >) const
Definition: Tuple.h:4086
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const viskores::internal::remove_cvref< T16 > & GetImpl(viskores::internal::IndexTag< 16 >) const
Definition: Tuple.h:4075
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Get
auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:1349
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
viskores::internal::remove_cvref< T11 > & GetImpl(viskores::internal::IndexTag< 11 >)
Definition: Tuple.h:2621
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::ElementType
viskores::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 > > ElementType
Definition: Tuple.h:1937
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Value8
T8 Value8
Definition: Tuple.h:1491
viskores::Tuple< T0, T1, T2, T3 >::GetImpl
viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >)
Definition: Tuple.h:621
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value12
T12 Value12
Definition: Tuple.h:2630
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >)
Definition: Tuple.h:3022
viskores::Tuple< T0, T1 >::Get
auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:431
viskores::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:4537
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
const viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >) const
Definition: Tuple.h:1431
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Value2
T2 Value2
Definition: Tuple.h:1620
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value2
T2 Value2
Definition: Tuple.h:2775
viskores::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:1148
viskores::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:4406
viskores::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:4548
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >) const
Definition: Tuple.h:2052
viskores::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:3218
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
viskores::internal::remove_cvref< T12 > & GetImpl(viskores::internal::IndexTag< 12 >)
Definition: Tuple.h:3154
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value12
T12 Value12
Definition: Tuple.h:3431
viskores::get
auto get(const viskores::Tuple< Ts... > &tuple) -> decltype(viskores::Get< static_cast< viskores::IdComponent >(Index)>(tuple))
Compatible with std::get for viskores::Tuple.
Definition: Tuple.h:113
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >)
Definition: Tuple.h:3312
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >)
Definition: Tuple.h:3099
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Value7
T7 Value7
Definition: Tuple.h:1297
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value13
T13 Value13
Definition: Tuple.h:3163
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >) const
Definition: Tuple.h:2537
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value5
T5 Value5
Definition: Tuple.h:3075
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Transform
auto Transform(Function &&f) -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:3573
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value11
T11 Value11
Definition: Tuple.h:2874
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >) const
Definition: Tuple.h:3371
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >)
Definition: Tuple.h:3367
viskores::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 viskores::internal::remove_cvref< T12 > & GetImpl(viskores::internal::IndexTag< 12 >) const
Definition: Tuple.h:4675
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const viskores::internal::remove_cvref< T10 > & GetImpl(viskores::internal::IndexTag< 10 >) const
Definition: Tuple.h:3706
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
viskores::internal::remove_cvref< T14 > & GetImpl(viskores::internal::IndexTag< 14 >)
Definition: Tuple.h:4364
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Value9
T9 Value9
Definition: Tuple.h:1697
viskores::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:3970
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >)
Definition: Tuple.h:2588
viskores::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 viskores::internal::remove_cvref< T11 > & GetImpl(viskores::internal::IndexTag< 11 >) const
Definition: Tuple.h:4664
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
viskores::internal::remove_cvref< T11 > & GetImpl(viskores::internal::IndexTag< 11 >)
Definition: Tuple.h:2378
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const viskores::internal::remove_cvref< T11 > & GetImpl(viskores::internal::IndexTag< 11 >) const
Definition: Tuple.h:2625
viskores::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(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:4944
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >)
Definition: Tuple.h:1244
VISKORES_SUPPRESS_EXEC_WARNINGS
#define VISKORES_SUPPRESS_EXEC_WARNINGS
Definition: ExportMacros.h:61
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::ElementType
viskores::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 > > ElementType
Definition: Tuple.h:2929
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::Value0
T0 Value0
Definition: Tuple.h:890
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >) const
Definition: Tuple.h:3026
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Value0
T0 Value0
Definition: Tuple.h:1805
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >)
Definition: Tuple.h:1405
viskores::Tuple< T0, T1, T2 >::Transform
auto Transform(Function &&f) const -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:598
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:1025
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const viskores::internal::remove_cvref< T15 > & GetImpl(viskores::internal::IndexTag< 15 >) const
Definition: Tuple.h:4379
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
const viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >) const
Definition: Tuple.h:907
viskores::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:4014
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >)
Definition: Tuple.h:1482
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value9
T9 Value9
Definition: Tuple.h:3119
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::Value5
T5 Value5
Definition: Tuple.h:945
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Get
auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:2960
viskores::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:2217
viskores::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:4091
viskores::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:3678
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Get
auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:1160
viskores::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:4340
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >)
Definition: Tuple.h:3121
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >)
Definition: Tuple.h:3939
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >)
Definition: Tuple.h:1106
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value3
T3 Value3
Definition: Tuple.h:2531
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value9
T9 Value9
Definition: Tuple.h:2597
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
viskores::internal::remove_cvref< T15 > & GetImpl(viskores::internal::IndexTag< 15 >)
Definition: Tuple.h:4704
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Get
auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:2966
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:1775
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >)
Definition: Tuple.h:1829
viskores::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:4162
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
viskores::internal::remove_cvref< T16 > & GetImpl(viskores::internal::IndexTag< 16 >)
Definition: Tuple.h:4386
viskores::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:3744
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value6
T6 Value6
Definition: Tuple.h:2819
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
const viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >) const
Definition: Tuple.h:1237
viskores::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:4080
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >) const
Definition: Tuple.h:3651
viskores::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:4124
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value12
T12 Value12
Definition: Tuple.h:2387
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >) const
Definition: Tuple.h:3059
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >)
Definition: Tuple.h:3345
viskores::Tuple< T0 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:344
viskores::IdComponent
viskores::Int32 IdComponent
Base type to use to index small lists.
Definition: Types.h:202
viskores::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:1330
viskores::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(viskores::internal::IndexTag< Index >
Definition: Tuple.h:4823
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >) const
Definition: Tuple.h:2085
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
viskores::internal::remove_cvref< T14 > & GetImpl(viskores::internal::IndexTag< 14 >)
Definition: Tuple.h:3746
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
viskores::internal::remove_cvref< T10 > & GetImpl(viskores::internal::IndexTag< 10 >)
Definition: Tuple.h:2865
viskores::Tuple< T0 >::GetImpl
viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >)
Definition: Tuple.h:277
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::ElementType
viskores::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6 > > ElementType
Definition: Tuple.h:1137
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
const viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >) const
Definition: Tuple.h:1833
viskores::Tuple< T0, T1, T2, T3 >::ElementType
viskores::TupleElement< Index, Tuple< T0, T1, T2, T3 > > ElementType
Definition: Tuple.h:663
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Get
auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:1745
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >)
Definition: Tuple.h:2070
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >)
Definition: Tuple.h:3680
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >) const
Definition: Tuple.h:2349
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >) const
Definition: Tuple.h:3404
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >)
Definition: Tuple.h:2544
viskores::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(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:4191
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
const viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >) const
Definition: Tuple.h:1110
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >)
Definition: Tuple.h:2114
viskores::Tuple< T0, T1 >::Get
auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:425
VISKORES_EXEC_CONT
#define VISKORES_EXEC_CONT
Definition: ExportMacros.h:60
viskores::Tuple< T0, T1, T2, T3 >::Value0
T0 Value0
Definition: Tuple.h:608
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value7
T7 Value7
Definition: Tuple.h:3097
viskores::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:705
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value4
T4 Value4
Definition: Tuple.h:2068
viskores::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:4296
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::ElementType
viskores::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:4439
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::Transform
auto Transform(Function &&f) const -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:1039
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
const viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >) const
Definition: Tuple.h:1877
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Transform
auto Transform(Function &&f) -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:2238
viskores::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:3275
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
viskores::internal::remove_cvref< T17 > & GetImpl(viskores::internal::IndexTag< 17 >)
Definition: Tuple.h:4726
viskores::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:1730
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
viskores::internal::remove_cvref< T11 > & GetImpl(viskores::internal::IndexTag< 11 >)
Definition: Tuple.h:3713
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >) const
Definition: Tuple.h:3932
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
viskores::internal::remove_cvref< T13 > & GetImpl(viskores::internal::IndexTag< 13 >)
Definition: Tuple.h:4682
viskores::Tuple< T0 >::Get
auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:314
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Value6
T6 Value6
Definition: Tuple.h:1664
viskores::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(viskores::internal::IndexTag< Index >
Definition: Tuple.h:4481
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
const viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >) const
Definition: Tuple.h:1648
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value14
T14 Value14
Definition: Tuple.h:3453
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const viskores::internal::remove_cvref< T10 > & GetImpl(viskores::internal::IndexTag< 10 >) const
Definition: Tuple.h:2371
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value10
T10 Value10
Definition: Tuple.h:2608
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value6
T6 Value6
Definition: Tuple.h:2321
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
viskores::internal::remove_cvref< T16 > & GetImpl(viskores::internal::IndexTag< 16 >)
Definition: Tuple.h:3768
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
const viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >) const
Definition: Tuple.h:1248
viskores::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 viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >) const
Definition: Tuple.h:4543
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >)
Definition: Tuple.h:1471
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >)
Definition: Tuple.h:2334
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Transform
auto Transform(Function &&f) const -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:2014
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::ElementType
viskores::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 > > ElementType
Definition: Tuple.h:1513
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value11
T11 Value11
Definition: Tuple.h:2619
viskores::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:844
viskores::Tuple< T0, T1, T2, T3 >::GetImpl
viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >)
Definition: Tuple.h:632
viskores::Tuple< T0, T1, T2 >::GetImpl
viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >)
Definition: Tuple.h:498
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Transform
auto Transform(Function &&f) -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:1203
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >) const
Definition: Tuple.h:3954
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >)
Definition: Tuple.h:4561
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >)
Definition: Tuple.h:3088
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Value2
T2 Value2
Definition: Tuple.h:1827
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >)
Definition: Tuple.h:1266
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >)
Definition: Tuple.h:4287
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const viskores::internal::remove_cvref< T14 > & GetImpl(viskores::internal::IndexTag< 14 >) const
Definition: Tuple.h:3180
viskores::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:4241
viskores::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:4047
viskores::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:3904
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Get
auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:1544
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Get
auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:3245
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >)
Definition: Tuple.h:2566
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value6
T6 Value6
Definition: Tuple.h:2090
viskores::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:3261
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >)
Definition: Tuple.h:3055
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value12
T12 Value12
Definition: Tuple.h:2885
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const viskores::internal::remove_cvref< T18 > & GetImpl(viskores::internal::IndexTag< 18 >) const
Definition: Tuple.h:4412
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::ElementType
viskores::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 > > ElementType
Definition: Tuple.h:2167
viskores::Tuple< T0, T1, T2, T3 >::Value3
T3 Value3
Definition: Tuple.h:641
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >) const
Definition: Tuple.h:3081
viskores::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:4625
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value13
T13 Value13
Definition: Tuple.h:2641
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >)
Definition: Tuple.h:2599
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >) const
Definition: Tuple.h:2847
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Transform
auto Transform(Function &&f) const -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:2245
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >) const
Definition: Tuple.h:4280
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value3
T3 Value3
Definition: Tuple.h:2057
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
viskores::internal::remove_cvref< T15 > & GetImpl(viskores::internal::IndexTag< 15 >)
Definition: Tuple.h:4375
viskores::Tuple< T0, T1, T2, T3, T4 >::GetImpl
viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >)
Definition: Tuple.h:745
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >)
Definition: Tuple.h:1688
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
const viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >) const
Definition: Tuple.h:1659
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Value2
T2 Value2
Definition: Tuple.h:1242
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const viskores::internal::remove_cvref< T16 > & GetImpl(viskores::internal::IndexTag< 16 >) const
Definition: Tuple.h:4390
viskores::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 viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >) const
Definition: Tuple.h:4620
viskores::Tuple< T0, T1, T2, T3, T4 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:860
viskores::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:2982
viskores::Tuple< T0, T1 >::Transform
auto Transform(Function &&f) -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:468
viskores::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 viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >) const
Definition: Tuple.h:4554
viskores::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:3623
viskores::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:4505
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Get
auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:2195
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Value7
T7 Value7
Definition: Tuple.h:1882
viskores::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 viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >) const
Definition: Tuple.h:4587
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >)
Definition: Tuple.h:2500
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >)
Definition: Tuple.h:3895
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Value3
T3 Value3
Definition: Tuple.h:1253
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
const viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >) const
Definition: Tuple.h:1692
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Transform
auto Transform(Function &&f) const -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:2743
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::ElementType
viskores::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 > > ElementType
Definition: Tuple.h:2409
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
const viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >) const
Definition: Tuple.h:1681
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value13
T13 Value13
Definition: Tuple.h:2896
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const viskores::internal::remove_cvref< T14 > & GetImpl(viskores::internal::IndexTag< 14 >) const
Definition: Tuple.h:3750
viskores::Tuple< T0, T1 >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)..., Value0, Value1))
Definition: Tuple.h:439
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const viskores::internal::remove_cvref< T13 > & GetImpl(viskores::internal::IndexTag< 13 >) const
Definition: Tuple.h:3448
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Value0
T0 Value0
Definition: Tuple.h:1220
viskores::Tuple< T0, T1, T2, T3, T4 >::Get
auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:836
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Value0
T0 Value0
Definition: Tuple.h:1598
viskores::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 viskores::internal::remove_cvref< T18 > & GetImpl(viskores::internal::IndexTag< 18 >) const
Definition: Tuple.h:4741
viskores::Tuple< T0, T1, T2, T3, T4 >::Value3
T3 Value3
Definition: Tuple.h:776
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value10
T10 Value10
Definition: Tuple.h:3130
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >)
Definition: Tuple.h:2059
viskores::TupleSize
std::integral_constant< viskores::IdComponent, TupleType::Size > TupleSize
Get the size of a tuple.
Definition: Tuple.h:50
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
viskores::internal::remove_cvref< T12 > & GetImpl(viskores::internal::IndexTag< 12 >)
Definition: Tuple.h:2389
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Transform
auto Transform(Function &&f) -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:2736
viskores::Tuple< T0, T1, T2, T3, T4 >::GetImpl
const viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >) const
Definition: Tuple.h:749
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::Tuple
Tuple(A0 &&a0, A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5)
Definition: Tuple.h:978
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
viskores::internal::remove_cvref< T14 > & GetImpl(viskores::internal::IndexTag< 14 >)
Definition: Tuple.h:4693
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
viskores::internal::remove_cvref< T18 > & GetImpl(viskores::internal::IndexTag< 18 >)
Definition: Tuple.h:4408
viskores::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:4219
viskores::Tuple< T0, T1, T2 >::Get
auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:554
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >) const
Definition: Tuple.h:2360
viskores::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:2940
viskores::Tuple< T0, T1, T2 >::GetImpl
viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >)
Definition: Tuple.h:509
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >)
Definition: Tuple.h:2577
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
viskores::internal::remove_cvref< T10 > & GetImpl(viskores::internal::IndexTag< 10 >)
Definition: Tuple.h:2367
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >)
Definition: Tuple.h:1884
viskores::Tuple< T0, T1 >::GetImpl
const viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >) const
Definition: Tuple.h:391
viskores::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:3700
viskores::Tuple< T0, T1, T2, T3 >::Value1
T1 Value1
Definition: Tuple.h:619
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:1994
viskores::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:3893
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >) const
Definition: Tuple.h:3640
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const viskores::internal::remove_cvref< T16 > & GetImpl(viskores::internal::IndexTag< 16 >) const
Definition: Tuple.h:3772
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:2723
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >)
Definition: Tuple.h:903
viskores::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(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:4198
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::ElementType
viskores::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5 > > ElementType
Definition: Tuple.h:967
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >)
Definition: Tuple.h:4550
viskores::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(viskores::internal::IndexTag< Index >
Definition: Tuple.h:3536
viskores::Tuple< T0, T1, T2, T3, T4 >::Value0
T0 Value0
Definition: Tuple.h:743
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Value6
T6 Value6
Definition: Tuple.h:1469
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Value1
T1 Value1
Definition: Tuple.h:1231
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value4
T4 Value4
Definition: Tuple.h:3343
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >)
Definition: Tuple.h:2257
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >) const
Definition: Tuple.h:2515
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >)
Definition: Tuple.h:3603
viskores::Tuple< T0, T1, T2, T3, T4 >::Get
auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:830
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value7
T7 Value7
Definition: Tuple.h:2101
viskores::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:2452
viskores
Groups connected points that have the same field value.
Definition: Atomic.h:27
viskores::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:3937
viskores::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:1357
viskores::Tuple< T0, T1, T2 >::GetImpl
const viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >) const
Definition: Tuple.h:491
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value8
T8 Value8
Definition: Tuple.h:2841
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >)
Definition: Tuple.h:4232
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
const viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >) const
Definition: Tuple.h:1615
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Value3
T3 Value3
Definition: Tuple.h:1436
viskores::Tuple< T0 >::Value0
T0 Value0
Definition: Tuple.h:275
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const viskores::internal::remove_cvref< T14 > & GetImpl(viskores::internal::IndexTag< 14 >) const
Definition: Tuple.h:4368
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
viskores::internal::remove_cvref< T13 > & GetImpl(viskores::internal::IndexTag< 13 >)
Definition: Tuple.h:3735
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
viskores::internal::remove_cvref< T13 > & GetImpl(viskores::internal::IndexTag< 13 >)
Definition: Tuple.h:3165
viskores::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:3926
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
const viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >) const
Definition: Tuple.h:1475
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Transform
auto Transform(Function &&f) const -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:1795
viskores::Tuple< T0, T1, T2, T3 >::GetImpl
const viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >) const
Definition: Tuple.h:636
viskores::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:4373
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >)
Definition: Tuple.h:1666
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >)
Definition: Tuple.h:2533
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
viskores::internal::remove_cvref< T10 > & GetImpl(viskores::internal::IndexTag< 10 >)
Definition: Tuple.h:3702
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const viskores::internal::remove_cvref< T10 > & GetImpl(viskores::internal::IndexTag< 10 >) const
Definition: Tuple.h:2869
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
viskores::internal::remove_cvref< T13 > & GetImpl(viskores::internal::IndexTag< 13 >)
Definition: Tuple.h:2898
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >)
Definition: Tuple.h:1084
viskores::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:1003
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
viskores::internal::remove_cvref< T18 > & GetImpl(viskores::internal::IndexTag< 18 >)
Definition: Tuple.h:4737
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const viskores::internal::remove_cvref< T11 > & GetImpl(viskores::internal::IndexTag< 11 >) const
Definition: Tuple.h:2880
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
const viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >) const
Definition: Tuple.h:1604
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >)
Definition: Tuple.h:1449
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >) const
Definition: Tuple.h:2603
viskores::Tuple< T0, T1, T2 >::Tuple
Tuple(A0 &&a0, A1 &&a1, A2 &&a2)
Definition: Tuple.h:540
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >)
Definition: Tuple.h:3647
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >) const
Definition: Tuple.h:2030
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value11
T11 Value11
Definition: Tuple.h:3420
viskores::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:4025
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value7
T7 Value7
Definition: Tuple.h:2332
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >) const
Definition: Tuple.h:3382
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const viskores::internal::remove_cvref< T13 > & GetImpl(viskores::internal::IndexTag< 13 >) const
Definition: Tuple.h:3169
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >) const
Definition: Tuple.h:2526
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >)
Definition: Tuple.h:3906
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const viskores::internal::remove_cvref< T13 > & GetImpl(viskores::internal::IndexTag< 13 >) const
Definition: Tuple.h:2902
viskores::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:3645
viskores::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:4570
viskores::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:4285
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >)
Definition: Tuple.h:1062
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >) const
Definition: Tuple.h:3048
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >)
Definition: Tuple.h:4298
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >) const
Definition: Tuple.h:3103
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >) const
Definition: Tuple.h:2305
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >)
Definition: Tuple.h:3994
viskores::Tuple< T0, T1, T2, T3 >::Tuple
Tuple(A0 &&a0, A1 &&a1, A2 &&a2, A3 &&a3)
Definition: Tuple.h:674
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value1
T1 Value1
Definition: Tuple.h:2266
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >)
Definition: Tuple.h:1677
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
viskores::internal::remove_cvref< T10 > & GetImpl(viskores::internal::IndexTag< 10 >)
Definition: Tuple.h:4005
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Value3
T3 Value3
Definition: Tuple.h:1082
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const viskores::internal::remove_cvref< T11 > & GetImpl(viskores::internal::IndexTag< 11 >) const
Definition: Tuple.h:2382
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >) const
Definition: Tuple.h:2118
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
const viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >) const
Definition: Tuple.h:1055
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value0
T0 Value0
Definition: Tuple.h:2498
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >)
Definition: Tuple.h:914
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >)
Definition: Tuple.h:1277
viskores::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:1182
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const viskores::internal::remove_cvref< T10 > & GetImpl(viskores::internal::IndexTag< 10 >) const
Definition: Tuple.h:4009
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >)
Definition: Tuple.h:3356
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
viskores::internal::remove_cvref< T19 > & GetImpl(viskores::internal::IndexTag< 19 >)
Definition: Tuple.h:4748
viskores::Tuple< T0 >::ElementType
viskores::TupleElement< Index, Tuple< T0 > > ElementType
Definition: Tuple.h:297
viskores::Tuple< T0, T1 >::Transform
auto Transform(Function &&f) const -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:475
viskores::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:852
Index
int Index
Definition: ChooseCudaDevice.h:95
viskores::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:1524
viskores::Tuple< T0, T1, T2, T3, T4 >::GetImpl
viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >)
Definition: Tuple.h:778
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >)
Definition: Tuple.h:1233
viskores::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:4511
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::ElementType
viskores::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 > > ElementType
Definition: Tuple.h:2663
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
const viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >) const
Definition: Tuple.h:1888
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
const viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >) const
Definition: Tuple.h:1670
viskores::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:697
viskores::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:2974
viskores::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:3566
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Value2
T2 Value2
Definition: Tuple.h:1071
viskores::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:1174
viskores::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:4351
viskores::Tuple< T0, T1, T2 >::Value0
T0 Value0
Definition: Tuple.h:485
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::ElementType
viskores::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:4780
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
viskores::internal::remove_cvref< T13 > & GetImpl(viskores::internal::IndexTag< 13 >)
Definition: Tuple.h:4038
viskores::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:4178
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >)
Definition: Tuple.h:3950
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
viskores::internal::remove_cvref< T11 > & GetImpl(viskores::internal::IndexTag< 11 >)
Definition: Tuple.h:2876
viskores::Tuple<>::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)...))
Definition: Tuple.h:250
viskores::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:1759
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >)
Definition: Tuple.h:1873
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >)
Definition: Tuple.h:3961
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
viskores::internal::remove_cvref< T11 > & GetImpl(viskores::internal::IndexTag< 11 >)
Definition: Tuple.h:3422
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Get
auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:2201
viskores::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:1767
viskores::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 viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >) const
Definition: Tuple.h:4631
viskores::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:1365
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const viskores::internal::remove_cvref< T11 > & GetImpl(viskores::internal::IndexTag< 11 >) const
Definition: Tuple.h:2151
viskores::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:3777
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const viskores::internal::remove_cvref< T12 > & GetImpl(viskores::internal::IndexTag< 12 >) const
Definition: Tuple.h:3158
viskores::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:4559
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >)
Definition: Tuple.h:1438
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
viskores::internal::remove_cvref< T14 > & GetImpl(viskores::internal::IndexTag< 14 >)
Definition: Tuple.h:3455
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Transform
auto Transform(Function &&f) -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:3282
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
viskores::internal::remove_cvref< T12 > & GetImpl(viskores::internal::IndexTag< 12 >)
Definition: Tuple.h:4342
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >)
Definition: Tuple.h:2755
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value5
T5 Value5
Definition: Tuple.h:2079
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value8
T8 Value8
Definition: Tuple.h:3387
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Transform
auto Transform(Function &&f) -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:2007
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Get
auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:1970
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >) const
Definition: Tuple.h:3987
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:2000
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >)
Definition: Tuple.h:2511
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::Value2
T2 Value2
Definition: Tuple.h:912
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >)
Definition: Tuple.h:3972
viskores::Tuple< T0 >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)..., Value0))
Definition: Tuple.h:336
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value7
T7 Value7
Definition: Tuple.h:2575
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >) const
Definition: Tuple.h:3998
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
const viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >) const
Definition: Tuple.h:1637
viskores::Tuple< T0, T1 >::GetImpl
viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >)
Definition: Tuple.h:387
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >)
Definition: Tuple.h:2301
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
const viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >) const
Definition: Tuple.h:1811
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >) const
Definition: Tuple.h:2107
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >)
Definition: Tuple.h:3614
viskores::Tuple< T0, T1, T2 >::Transform
auto Transform(Function &&f) -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:591
viskores::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(viskores::internal::IndexTag< Index >
Definition: Tuple.h:3833
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >)
Definition: Tuple.h:4627
viskores::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:2707
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >)
Definition: Tuple.h:1644
viskores::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(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:4518
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const viskores::internal::remove_cvref< T14 > & GetImpl(viskores::internal::IndexTag< 14 >) const
Definition: Tuple.h:4053
viskores::Tuple< T0, T1, T2, T3, T4 >::Value4
T4 Value4
Definition: Tuple.h:787
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >) const
Definition: Tuple.h:4247
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
const viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >) const
Definition: Tuple.h:1703
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >)
Definition: Tuple.h:1255
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value4
T4 Value4
Definition: Tuple.h:3064
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Value1
T1 Value1
Definition: Tuple.h:1816
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
const viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >) const
Definition: Tuple.h:1497
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >)
Definition: Tuple.h:1600
viskores::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:3612
viskores::Tuple< T0, T1, T2, T3, T4 >::ElementType
viskores::TupleElement< Index, Tuple< T0, T1, T2, T3, T4 > > ElementType
Definition: Tuple.h:809
viskores::Tuple< T0, T1 >::GetImpl
const viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >) const
Definition: Tuple.h:380
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >) const
Definition: Tuple.h:3965
viskores::Tuple< T0, T1 >::Apply
auto Apply(Function &&f, Args &&... args) const -> decltype(f(std::forward< Args >(args)..., Value0, Value1))
Definition: Tuple.h:447
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >)
Definition: Tuple.h:3691
viskores::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:4658
viskores::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(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:3883
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
viskores::internal::remove_cvref< T10 > & GetImpl(viskores::internal::IndexTag< 10 >)
Definition: Tuple.h:1917
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >)
Definition: Tuple.h:1633
viskores::Tuple< T0 >::Transform
auto Transform(Function &&f) -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:357
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
viskores::internal::remove_cvref< T10 > & GetImpl(viskores::internal::IndexTag< 10 >)
Definition: Tuple.h:3132
viskores::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:3869
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
viskores::internal::remove_cvref< T10 > & GetImpl(viskores::internal::IndexTag< 10 >)
Definition: Tuple.h:2136
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
const viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >) const
Definition: Tuple.h:1281
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >)
Definition: Tuple.h:1818
viskores::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:3722
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const viskores::internal::remove_cvref< T12 > & GetImpl(viskores::internal::IndexTag< 12 >) const
Definition: Tuple.h:2393
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const viskores::internal::remove_cvref< T17 > & GetImpl(viskores::internal::IndexTag< 17 >) const
Definition: Tuple.h:4401
viskores::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:1978
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value1
T1 Value1
Definition: Tuple.h:2764
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value0
T0 Value0
Definition: Tuple.h:2753
viskores::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:2996
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >)
Definition: Tuple.h:1622
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value0
T0 Value0
Definition: Tuple.h:2255
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >)
Definition: Tuple.h:2026
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >)
Definition: Tuple.h:3625
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >)
Definition: Tuple.h:1699
viskores::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:3544
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >) const
Definition: Tuple.h:2770
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
viskores::internal::remove_cvref< T15 > & GetImpl(viskores::internal::IndexTag< 15 >)
Definition: Tuple.h:3187
viskores::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 viskores::internal::remove_cvref< T14 > & GetImpl(viskores::internal::IndexTag< 14 >) const
Definition: Tuple.h:4697
viskores::Tuple< T0, T1, T2, T3 >::GetImpl
viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >)
Definition: Tuple.h:643
viskores::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:3847
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
const viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >) const
Definition: Tuple.h:1088
viskores::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(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:3580
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >) const
Definition: Tuple.h:3618
viskores::Tuple<>::ForEach
void ForEach(Function &&) const
Definition: Tuple.h:258
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
viskores::internal::remove_cvref< T10 > & GetImpl(viskores::internal::IndexTag< 10 >)
Definition: Tuple.h:2610
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >) const
Definition: Tuple.h:3327
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Value5
T5 Value5
Definition: Tuple.h:1458
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >) const
Definition: Tuple.h:4291
viskores::Tuple< T0, T1, T2, T3, T4 >::GetImpl
viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >)
Definition: Tuple.h:767
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value0
T0 Value0
Definition: Tuple.h:3020
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Get
auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:3530
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >)
Definition: Tuple.h:4309
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
const viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >) const
Definition: Tuple.h:1866
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >) const
Definition: Tuple.h:2759
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const viskores::internal::remove_cvref< T13 > & GetImpl(viskores::internal::IndexTag< 13 >) const
Definition: Tuple.h:2647
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
const viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >) const
Definition: Tuple.h:1099
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const viskores::internal::remove_cvref< T12 > & GetImpl(viskores::internal::IndexTag< 12 >) const
Definition: Tuple.h:2891
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >)
Definition: Tuple.h:892
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >)
Definition: Tuple.h:1895
viskores::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 viskores::internal::remove_cvref< T10 > & GetImpl(viskores::internal::IndexTag< 10 >) const
Definition: Tuple.h:4653
viskores::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:4208
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >)
Definition: Tuple.h:1851
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
const viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >) const
Definition: Tuple.h:1822
viskores::tuple_element
Compatible with std::tuple_element for viskores::Tuple.
Definition: Tuple.h:76
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Value5
T5 Value5
Definition: Tuple.h:1653
viskores::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 viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >) const
Definition: Tuple.h:4609
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >) const
Definition: Tuple.h:3360
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >) const
Definition: Tuple.h:2803
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
const viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >) const
Definition: Tuple.h:1077
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:2729
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >)
Definition: Tuple.h:4243
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >) const
Definition: Tuple.h:2592
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value4
T4 Value4
Definition: Tuple.h:2797
viskores::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(viskores::internal::IndexTag< Index >
Definition: Tuple.h:4154
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const viskores::internal::remove_cvref< T11 > & GetImpl(viskores::internal::IndexTag< 11 >) const
Definition: Tuple.h:3426
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:1373
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
viskores::internal::remove_cvref< T11 > & GetImpl(viskores::internal::IndexTag< 11 >)
Definition: Tuple.h:3143
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >)
Definition: Tuple.h:3592
viskores::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:4184
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const viskores::internal::remove_cvref< T12 > & GetImpl(viskores::internal::IndexTag< 12 >) const
Definition: Tuple.h:3728
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >)
Definition: Tuple.h:3033
viskores::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:1560
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Get
auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:1751
viskores::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:3253
viskores::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:3755
viskores::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:4760
viskores::Tuple< T0, T1, T2, T3 >::GetImpl
viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >)
Definition: Tuple.h:610
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
viskores::internal::remove_cvref< T12 > & GetImpl(viskores::internal::IndexTag< 12 >)
Definition: Tuple.h:4027
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
viskores::internal::remove_cvref< T17 > & GetImpl(viskores::internal::IndexTag< 17 >)
Definition: Tuple.h:3779
viskores::Tuple< T0, T1, T2, T3 >::Get
auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:683
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
const viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >) const
Definition: Tuple.h:1121
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >)
Definition: Tuple.h:4638
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::Value1
T1 Value1
Definition: Tuple.h:901
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
viskores::internal::remove_cvref< T17 > & GetImpl(viskores::internal::IndexTag< 17 >)
Definition: Tuple.h:4397
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
const viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >) const
Definition: Tuple.h:1259
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
const viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >) const
Definition: Tuple.h:951
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value2
T2 Value2
Definition: Tuple.h:2277
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value0
T0 Value0
Definition: Tuple.h:2024
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >)
Definition: Tuple.h:1073
viskores::Tuple< T0, T1, T2, T3, T4 >::Tuple
Tuple(A0 &&a0, A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4)
Definition: Tuple.h:820
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const viskores::internal::remove_cvref< T10 > & GetImpl(viskores::internal::IndexTag< 10 >) const
Definition: Tuple.h:3415
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >)
Definition: Tuple.h:2555
viskores::Tuple< T0, T1 >::Value0
T0 Value0
Definition: Tuple.h:374
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::ElementType
viskores::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 > > ElementType
Definition: Tuple.h:3207
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >)
Definition: Tuple.h:4210
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >)
Definition: Tuple.h:3983
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Value8
T8 Value8
Definition: Tuple.h:1686
viskores::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:4937
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >) const
Definition: Tuple.h:2294
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >) const
Definition: Tuple.h:2261
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Value5
T5 Value5
Definition: Tuple.h:1860
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Value5
T5 Value5
Definition: Tuple.h:1275
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
const viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >) const
Definition: Tuple.h:1464
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const viskores::internal::remove_cvref< T10 > & GetImpl(viskores::internal::IndexTag< 10 >) const
Definition: Tuple.h:4324
viskores::Tuple< T0, T1, T2, T3, T4 >::GetImpl
const viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >) const
Definition: Tuple.h:793
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >) const
Definition: Tuple.h:3125
viskores::Tuple< T0 >::Transform
auto Transform(Function &&f) const -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:364
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >)
Definition: Tuple.h:4265
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >) const
Definition: Tuple.h:2858
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >) const
Definition: Tuple.h:2581
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >)
Definition: Tuple.h:2799
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::Value1
T1 Value1
Definition: Tuple.h:2035
viskores::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:4274
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
const viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >) const
Definition: Tuple.h:1453
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Get
auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:1166
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value2
T2 Value2
Definition: Tuple.h:2520
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >)
Definition: Tuple.h:1460
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
viskores::internal::remove_cvref< T18 > & GetImpl(viskores::internal::IndexTag< 18 >)
Definition: Tuple.h:4093
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >) const
Definition: Tuple.h:4258
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Transform
auto Transform(Function &&f) -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:1581
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value10
T10 Value10
Definition: Tuple.h:3409
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
viskores::internal::remove_cvref< T16 > & GetImpl(viskores::internal::IndexTag< 16 >)
Definition: Tuple.h:4715
viskores::Tuple< T0, T1, T2 >::Get
auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:548
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const viskores::internal::remove_cvref< T15 > & GetImpl(viskores::internal::IndexTag< 15 >) const
Definition: Tuple.h:4064
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >) const
Definition: Tuple.h:3899
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
const viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >) const
Definition: Tuple.h:940
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >)
Definition: Tuple.h:2048
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
const viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >) const
Definition: Tuple.h:1066
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >) const
Definition: Tuple.h:2327
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value2
T2 Value2
Definition: Tuple.h:3321
viskores::Tuple< T0 >::Tuple
Tuple(A0 &&a0)
Definition: Tuple.h:308
viskores::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:3766
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >)
Definition: Tuple.h:2092
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const viskores::internal::remove_cvref< T11 > & GetImpl(viskores::internal::IndexTag< 11 >) const
Definition: Tuple.h:3147
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >)
Definition: Tuple.h:1299
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >)
Definition: Tuple.h:2279
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
viskores::internal::remove_cvref< T13 > & GetImpl(viskores::internal::IndexTag< 13 >)
Definition: Tuple.h:2643
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::ElementType
viskores::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:3799
viskores::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:4329
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value4
T4 Value4
Definition: Tuple.h:2542
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >) const
Definition: Tuple.h:2283
viskores::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:4702
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value4
T4 Value4
Definition: Tuple.h:2299
viskores::Tuple< T0, T1 >::GetImpl
viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >)
Definition: Tuple.h:376
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >)
Definition: Tuple.h:4616
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
viskores::internal::remove_cvref< T12 > & GetImpl(viskores::internal::IndexTag< 12 >)
Definition: Tuple.h:3433
viskores::Tuple<>
Definition: Tuple.h:236
viskores::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 viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >) const
Definition: Tuple.h:4576
viskores::Tuple< T0, T1, T2, T3, T4 >::GetImpl
const viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >) const
Definition: Tuple.h:782
viskores::Tuple< T0, T1, T2 >::GetImpl
const viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >) const
Definition: Tuple.h:513
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value1
T1 Value1
Definition: Tuple.h:2509
viskores::Tuple
Viskores replacement for std::tuple.
Definition: Tuple.h:43
viskores::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:1011
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
viskores::internal::remove_cvref< T16 > & GetImpl(viskores::internal::IndexTag< 16 >)
Definition: Tuple.h:3477
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >) const
Definition: Tuple.h:3695
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >)
Definition: Tuple.h:2843
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
const viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >) const
Definition: Tuple.h:1409
viskores::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:2715
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >)
Definition: Tuple.h:3636
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Value1
T1 Value1
Definition: Tuple.h:1414
viskores::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:4724
viskores::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:2674
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value5
T5 Value5
Definition: Tuple.h:3354
viskores::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 viskores::internal::remove_cvref< viskores::TupleElement< Index - 20, RemainingValuesType > > & GetImpl(viskores::internal::IndexTag< Index >) const
Definition: Tuple.h:4771
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const viskores::internal::remove_cvref< T12 > & GetImpl(viskores::internal::IndexTag< 12 >) const
Definition: Tuple.h:2636
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value8
T8 Value8
Definition: Tuple.h:2343
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value8
T8 Value8
Definition: Tuple.h:2586
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value0
T0 Value0
Definition: Tuple.h:3299
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:1019
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:1781
viskores::Tuple< T0, T1 >::Value1
T1 Value1
Definition: Tuple.h:385
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >) const
Definition: Tuple.h:2504
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Value4
T4 Value4
Definition: Tuple.h:1093
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Get
auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:2438
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const viskores::internal::remove_cvref< T12 > & GetImpl(viskores::internal::IndexTag< 12 >) const
Definition: Tuple.h:4031
viskores::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:4003
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:1196
viskores::Tuple< T0, T1, T2, T3 >::Transform
auto Transform(Function &&f) -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:726
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Get
auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:1964
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >)
Definition: Tuple.h:1117
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value2
T2 Value2
Definition: Tuple.h:3042
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
viskores::internal::remove_cvref< T19 > & GetImpl(viskores::internal::IndexTag< 19 >)
Definition: Tuple.h:4419
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
viskores::internal::remove_cvref< T12 > & GetImpl(viskores::internal::IndexTag< 12 >)
Definition: Tuple.h:2887
viskores::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:3667
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Get
auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:2693
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
viskores::internal::remove_cvref< T15 > & GetImpl(viskores::internal::IndexTag< 15 >)
Definition: Tuple.h:4060
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >)
Definition: Tuple.h:2323
viskores::Tuple< T0, T1, T2, T3 >::Transform
auto Transform(Function &&f) const -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:733
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >) const
Definition: Tuple.h:3943
viskores::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(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:3876
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >)
Definition: Tuple.h:1493
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
viskores::internal::remove_cvref< T14 > & GetImpl(viskores::internal::IndexTag< 14 >)
Definition: Tuple.h:2909
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >)
Definition: Tuple.h:3400
viskores::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:2460
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >)
Definition: Tuple.h:925
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const viskores::internal::remove_cvref< T17 > & GetImpl(viskores::internal::IndexTag< 17 >) const
Definition: Tuple.h:3783
viskores::Get
auto Get(const viskores::Tuple< Ts... > &tuple)
Retrieve the object from a viskores::Tuple at the given index.
Definition: Tuple.h:89
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value15
T15 Value15
Definition: Tuple.h:3185
viskores::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:4307
viskores::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:3948
viskores::Tuple< T0, T1, T2, T3 >::Get
auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:689
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const viskores::internal::remove_cvref< T14 > & GetImpl(viskores::internal::IndexTag< 14 >) const
Definition: Tuple.h:3459
viskores::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:2209
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:1574
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value8
T8 Value8
Definition: Tuple.h:3108
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >)
Definition: Tuple.h:2125
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const viskores::internal::remove_cvref< T13 > & GetImpl(viskores::internal::IndexTag< 13 >) const
Definition: Tuple.h:4357
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value3
T3 Value3
Definition: Tuple.h:3332
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
viskores::internal::remove_cvref< T11 > & GetImpl(viskores::internal::IndexTag< 11 >)
Definition: Tuple.h:4016
viskores::Tuple< T0, T1, T2 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:578
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
const viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >) const
Definition: Tuple.h:2570
viskores::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:4395
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >)
Definition: Tuple.h:1807
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >) const
Definition: Tuple.h:2338
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >) const
Definition: Tuple.h:3338
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value11
T11 Value11
Definition: Tuple.h:3141
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >) const
Definition: Tuple.h:2041
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
viskores::internal::remove_cvref< T13 > & GetImpl(viskores::internal::IndexTag< 13 >)
Definition: Tuple.h:3444
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >)
Definition: Tuple.h:3077
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
const viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >) const
Definition: Tuple.h:929
viskores::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:4036
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Value4
T4 Value4
Definition: Tuple.h:1642
viskores::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(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:4951
viskores::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:4713
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >) const
Definition: Tuple.h:3305
viskores::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 viskores::internal::remove_cvref< T16 > & GetImpl(viskores::internal::IndexTag< 16 >) const
Definition: Tuple.h:4719
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >) const
Definition: Tuple.h:4236
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >)
Definition: Tuple.h:2766
viskores::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:3863
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
viskores::internal::remove_cvref< T10 > & GetImpl(viskores::internal::IndexTag< 10 >)
Definition: Tuple.h:3411
viskores::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:4450
viskores::Tuple< T0, T1, T2, T3, T4 >::GetImpl
const viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >) const
Definition: Tuple.h:760
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const viskores::internal::remove_cvref< T11 > & GetImpl(viskores::internal::IndexTag< 11 >) const
Definition: Tuple.h:3717
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >) const
Definition: Tuple.h:3596
viskores::Tuple< T0, T1, T2 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:584
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
viskores::internal::remove_cvref< T7 > & GetImpl(viskores::internal::IndexTag< 7 >)
Definition: Tuple.h:3378
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::Get
auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:989
viskores::Tuple< T0, T1, T2 >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)..., Value0, Value1, Value2))
Definition: Tuple.h:562
viskores::Tuple< T0, T1, T2, T3, T4 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:866
viskores::Tuple<>::Transform
viskores::Tuple Transform(Function &&) const
Definition: Tuple.h:264
viskores::Tuple< T0, T1, T2 >::Value1
T1 Value1
Definition: Tuple.h:496
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
const viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >) const
Definition: Tuple.h:1292
viskores::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:4581
viskores::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(viskores::internal::IndexTag< Index >
Definition: Tuple.h:3839
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >)
Definition: Tuple.h:936
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >)
Definition: Tuple.h:2810
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value3
T3 Value3
Definition: Tuple.h:3053
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Value3
T3 Value3
Definition: Tuple.h:1631
DecayHelpers.h
viskores::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:4170
viskores::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:3981
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
viskores::internal::remove_cvref< T12 > & GetImpl(viskores::internal::IndexTag< 12 >)
Definition: Tuple.h:4671
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const viskores::internal::remove_cvref< T12 > & GetImpl(viskores::internal::IndexTag< 12 >) const
Definition: Tuple.h:3437
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >) const
Definition: Tuple.h:3684
viskores::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:4614
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >) const
Definition: Tuple.h:2129
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
viskores::internal::remove_cvref< T11 > & GetImpl(viskores::internal::IndexTag< 11 >)
Definition: Tuple.h:2147
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
const viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >) const
Definition: Tuple.h:1626
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::GetImpl
viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >)
Definition: Tuple.h:1288
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
const viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >) const
Definition: Tuple.h:3316
viskores::Tuple< T0 >::Get
auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:320
viskores::Tuple< T0, T1, T2, T3 >::GetImpl
const viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >) const
Definition: Tuple.h:647
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
viskores::internal::remove_cvref< T12 > & GetImpl(viskores::internal::IndexTag< 12 >)
Definition: Tuple.h:3724
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value5
T5 Value5
Definition: Tuple.h:2553
viskores::Tuple< T0, T1 >::Tuple
Tuple(A0 &&a0, A1 &&a1)
Definition: Tuple.h:418
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >)
Definition: Tuple.h:1051
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Transform
auto Transform(Function &&f) const -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:1393
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >)
Definition: Tuple.h:1611
IndexTag.h
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Value3
T3 Value3
Definition: Tuple.h:1838
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::GetImpl
const viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >) const
Definition: Tuple.h:2096
viskores::Tuple< T0, T1, T2, T3 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:719
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::Value6
T6 Value6
Definition: Tuple.h:2564
viskores::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:3552
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::Value1
T1 Value1
Definition: Tuple.h:1060
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
const viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >) const
Definition: Tuple.h:1420
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
viskores::internal::remove_cvref< T14 > & GetImpl(viskores::internal::IndexTag< 14 >)
Definition: Tuple.h:4049
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::GetImpl
viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >)
Definition: Tuple.h:1655
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
viskores::internal::remove_cvref< T16 > & GetImpl(viskores::internal::IndexTag< 16 >)
Definition: Tuple.h:4071
viskores::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:1552
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >) const
Definition: Tuple.h:2814
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::Value9
T9 Value9
Definition: Tuple.h:3398
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::Value0
T0 Value0
Definition: Tuple.h:1403
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >)
Definition: Tuple.h:3110
viskores::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:4669
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >) const
Definition: Tuple.h:3037
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::GetImpl
viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >)
Definition: Tuple.h:3301
viskores::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:4691
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value3
T3 Value3
Definition: Tuple.h:2786
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::GetImpl
viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >)
Definition: Tuple.h:2522
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value12
T12 Value12
Definition: Tuple.h:3152
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:1379
viskores::tuple_size
std::integral_constant< std::size_t, static_cast< std::size_t >(TupleType::Size)> tuple_size
Compatible with std::tuple_size for viskores::Tuple.
Definition: Tuple.h:55
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const viskores::internal::remove_cvref< T18 > & GetImpl(viskores::internal::IndexTag< 18 >) const
Definition: Tuple.h:4097
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Value14
T14 Value14
Definition: Tuple.h:3174
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >)
Definition: Tuple.h:2821
viskores::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:4791
viskores::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:1986
viskores::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:4636
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Get
auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:1343
viskores::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:3733
viskores::Tuple< T0, T1, T2, T3 >::GetImpl
const viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >) const
Definition: Tuple.h:614
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
const viskores::internal::remove_cvref< T9 > & GetImpl(viskores::internal::IndexTag< 9 >) const
Definition: Tuple.h:1910
viskores::Tuple< T0, T1, T2, T3, T4 >::Transform
auto Transform(Function &&f) const -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:880
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::GetImpl
const viskores::internal::remove_cvref< T13 > & GetImpl(viskores::internal::IndexTag< 13 >) const
Definition: Tuple.h:4042
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >)
Definition: Tuple.h:2345
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 >::ElementType
viskores::TupleElement< Index, Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 > > ElementType
Definition: Tuple.h:3497
viskores::Tuple< T0, T1, T2, T3, T4 >::Value1
T1 Value1
Definition: Tuple.h:754
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const viskores::internal::remove_cvref< T15 > & GetImpl(viskores::internal::IndexTag< 15 >) const
Definition: Tuple.h:3761
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Value1
T1 Value1
Definition: Tuple.h:1609
viskores::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:4069
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value14
T14 Value14
Definition: Tuple.h:2907
viskores::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 viskores::internal::remove_cvref< T15 > & GetImpl(viskores::internal::IndexTag< 15 >) const
Definition: Tuple.h:4708
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7 >::Value6
T6 Value6
Definition: Tuple.h:1286
viskores::Tuple< T0, T1, T2, T3, T4 >::GetImpl
viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >)
Definition: Tuple.h:789
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
const viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >) const
Definition: Tuple.h:1855
viskores::Tuple< T0 >::ForEach
void ForEach(Function &&f) const
Definition: Tuple.h:350
viskores::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:4931
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Get
auto Get() const -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:2444
viskores::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:4263
viskores::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:3810
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >)
Definition: Tuple.h:2788
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::Get
auto Get() -> decltype(this->GetImpl(viskores::internal::IndexTag< Index >
Definition: Tuple.h:3239
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6 >::GetImpl
viskores::internal::remove_cvref< T4 > & GetImpl(viskores::internal::IndexTag< 4 >)
Definition: Tuple.h:1095
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >)
Definition: Tuple.h:1416
viskores::Tuple< T0 >::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)..., Value0))
Definition: Tuple.h:328
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, Ts... >::GetImpl
viskores::internal::remove_cvref< T10 > & GetImpl(viskores::internal::IndexTag< 10 >)
Definition: Tuple.h:4649
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const viskores::internal::remove_cvref< T5 > & GetImpl(viskores::internal::IndexTag< 5 >) const
Definition: Tuple.h:2316
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::GetImpl
const viskores::internal::remove_cvref< T8 > & GetImpl(viskores::internal::IndexTag< 8 >) const
Definition: Tuple.h:1899
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
const viskores::internal::remove_cvref< T10 > & GetImpl(viskores::internal::IndexTag< 10 >) const
Definition: Tuple.h:3136
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 >::GetImpl
viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >)
Definition: Tuple.h:3044
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >) const
Definition: Tuple.h:3629
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Value7
T7 Value7
Definition: Tuple.h:1675
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::Value9
T9 Value9
Definition: Tuple.h:2354
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 >::GetImpl
const viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >) const
Definition: Tuple.h:4214
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::ElementType
viskores::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:4113
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 >::GetImpl
viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >)
Definition: Tuple.h:1427
viskores::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:4735
viskores::Tuple< T0, T1, T2, T3, T4, T5 >::GetImpl
const viskores::internal::remove_cvref< T2 > & GetImpl(viskores::internal::IndexTag< 2 >) const
Definition: Tuple.h:918
viskores::Tuple<>::Apply
auto Apply(Function &&f, Args &&... args) -> decltype(f(std::forward< Args >(args)...))
Definition: Tuple.h:243
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Transform
auto Transform(Function &&f) -> decltype(viskores::Transform(*this, std::forward< Function >(f)))
Definition: Tuple.h:1788
viskores::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:3855
viskores::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:3508
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::ForEach
void ForEach(Function &&f)
Definition: Tuple.h:2468
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::Value10
T10 Value10
Definition: Tuple.h:2863
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 >::GetImpl
const viskores::internal::remove_cvref< T6 > & GetImpl(viskores::internal::IndexTag< 6 >) const
Definition: Tuple.h:3662
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::GetImpl
const viskores::internal::remove_cvref< T3 > & GetImpl(viskores::internal::IndexTag< 3 >) const
Definition: Tuple.h:2792
viskores::Tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::GetImpl
const viskores::internal::remove_cvref< T1 > & GetImpl(viskores::internal::IndexTag< 1 >) const
Definition: Tuple.h:2272
viskores::Tuple< T0 >::GetImpl
const viskores::internal::remove_cvref< T0 > & GetImpl(viskores::internal::IndexTag< 0 >) const
Definition: Tuple.h:281
viskores::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:4497