18 namespace mfem::future {
26 template <
typename T0,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
27 typename T8,
typename T9>
28 struct tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> {
44 template <
typename T0,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
45 typename T8,
typename T9,
typename T10>
46 struct tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> {
63 template <
int i,
typename Tuple>
66 if constexpr (i == 0) {
69 if constexpr (i == 1) {
72 if constexpr (i == 2) {
75 if constexpr (i == 3) {
78 if constexpr (i == 4) {
81 if constexpr (i == 5) {
84 if constexpr (i == 6) {
87 if constexpr (i == 7) {
90 if constexpr (i == 8) {
93 if constexpr (i == 9) {
96 if constexpr (i == 10) {
103 template <
int i,
typename Tuple>
106 if constexpr (i == 0) {
109 if constexpr (i == 1) {
112 if constexpr (i == 2) {
115 if constexpr (i == 3) {
118 if constexpr (i == 4) {
121 if constexpr (i == 5) {
124 if constexpr (i == 6) {
127 if constexpr (i == 7) {
130 if constexpr (i == 8) {
133 if constexpr (i == 9) {
136 if constexpr (i == 10) {
145 template <
int i,
typename T0,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
146 typename T8,
typename T9>
149 static_assert(i < 10);
150 return detail::tuple_get_extended<i>(values);
154 template <
int i,
typename T0,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
155 typename T8,
typename T9,
typename T10>
156 MFEM_HOST_DEVICE constexpr
auto&
get(
tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>& values)
158 static_assert(i < 11);
159 return detail::tuple_get_extended<i>(values);
163 template <
int i,
typename T0,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
164 typename T8,
typename T9>
167 static_assert(i < 10);
168 return detail::tuple_get_extended<i>(values);
172 template <
int i,
typename T0,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
173 typename T8,
typename T9,
typename T10>
174 MFEM_HOST_DEVICE constexpr
const auto&
get(
const tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>& values)
176 static_assert(i < 11);
177 return detail::tuple_get_extended<i>(values);
199 template <
int i,
typename T0,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
200 typename T8,
typename T9>
203 static_assert(i < 10);
204 return detail::tuple_get_extended<i>(values);
227 template <
int i,
typename T0,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
228 typename T8,
typename T9,
typename T10>
229 MFEM_HOST_DEVICE constexpr
auto type(
const tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>& values)
231 static_assert(i < 11);
232 return detail::tuple_get_extended<i>(values);
240 template <
typename... T>
244 using mfem::future::apply;
248 using mfem::future::make_tuple;
250 using mfem::future::type;
253 template <
class... Types>
257 template <
size_t I,
class T>
261 template <
typename T>
265 template <
typename T>
270 #include "smith/numerics/functional/tuple_tensor_dual_functions.hpp"
This file contains the interface used for initializing/terminating any hardware accelerator-related f...
Accelerator functionality.
mfem::future::is_tuple_of_tuples< T > is_tuple_of_tuples
Alias for the MFEM nested tuple detection trait.
mfem::future::is_tuple< T > is_tuple
Alias for the MFEM tuple detection trait.
mfem::future::tuple_size< Types... > tuple_size
Alias for the MFEM tuple size trait.
mfem::future::tuple< T... > tuple
Expose MFEM tuple in the Smith namespace.
mfem::future::tuple_element< I, T > tuple_element
Alias for the MFEM tuple element trait.
mfem::future::tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 > Smith compatibility extension for the MFEM tuple implementation.
mfem::future::tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::v10 T10 v10
The eleventh member of the tuple.
mfem::future::tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::v1 T1 v1
The second member of the tuple.
mfem::future::tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::v0 T0 v0
The first member of the tuple.
mfem::future::tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::v5 T5 v5
The sixth member of the tuple.
mfem::future::tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::v8 T8 v8
The ninth member of the tuple.
mfem::future::tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::v2 T2 v2
The third member of the tuple.
mfem::future::tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::v7 T7 v7
The eighth member of the tuple.
mfem::future::tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::v4 T4 v4
The fifth member of the tuple.
mfem::future::tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::v9 T9 v9
The tenth member of the tuple.
mfem::future::tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::v3 T3 v3
The fourth member of the tuple.
mfem::future::tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::v6 T6 v6
The seventh member of the tuple.
Smith compatibility extension for the MFEM tuple implementation.
T6 v6
The seventh member of the tuple.
T4 v4
The fifth member of the tuple.
T1 v1
The second member of the tuple.
T7 v7
The eighth member of the tuple.
T2 v2
The third member of the tuple.
T3 v3
The fourth member of the tuple.
T0 v0
The first member of the tuple.
T8 v8
The ninth member of the tuple.
T5 v5
The sixth member of the tuple.
T9 v9
The tenth member of the tuple.
constexpr MFEM_HOST_DEVICE auto & tuple_get_extended(Tuple &values)
Return element i from a 10- or 11-element tuple.
constexpr MFEM_HOST_DEVICE auto type(const tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 > &values)
a function intended to be used for extracting the ith type from a tuple.