| 123 | |
| 124 | template <class T, class F, class G> |
| 125 | CUTE_HOST_DEVICE constexpr |
| 126 | auto |
| 127 | transform_apply(T&& t, F&& f, G&& g) |
| 128 | { |
| 129 | if constexpr (is_tuple<remove_cvref_t<T>>::value) { |
| 130 | return detail::tapply(static_cast<T&&>(t), f, g, tuple_seq<T>{}); |
| 131 | } else { |
| 132 | return g(f(static_cast<T&&>(t))); |
| 133 | } |
| 134 | |
| 135 | CUTE_GCC_UNREACHABLE; |
| 136 | } |
| 137 | |
| 138 | template <class T0, class T1, class F, class G> |
| 139 | CUTE_HOST_DEVICE constexpr |