5 #ifndef UTOPIA_CORE_COMPILETIME_ALGOS_HH
6 #define UTOPIA_CORE_COMPILETIME_ALGOS_HH
11 namespace _Metaprogramming_helpers {
19 template<
template<
typename...>
class Metafunc,
typename Tuplelike,
typename X>
31 template<
template<
typename...>
class Metafunc,
37 using type =
typename Metafunc<
38 typename std::tuple_element_t<idxs, Tuplelike>...>
::type;
54 template<
template<
typename...>
class Metafunc,
typename Tuplelike>
60 std::decay_t<Tuplelike>,
61 std::make_index_sequence<std::tuple_size_v<std::decay_t<Tuplelike>>>>
::type;
72 template<
template<
typename...>
class Metafunc,
typename Tuplelike>
typename apply< Metafunc, Tuplelike >::type apply_t
Alias for apply for applying a metafunction to a tuple.
Definition: metaprogramming.hh:73
Definition: parallel.hh:235
Apply the metafunction 'Metafunc' to a tuplelike type 'Tuplelike'.
Definition: metaprogramming.hh:56
typename _Metaprogramming_helpers::apply_impl< Metafunc, std::decay_t< Tuplelike >, std::make_index_sequence< std::tuple_size_v< std::decay_t< Tuplelike > >> >::type type
Definition: metaprogramming.hh:61