15 #include <meta/meta.hpp> 42 template <
typename ...>
typename tuple_t,
46 requires TupleLike<tuple_t<ts...>> && TupleLike<tuple_t<>>
50 return tuple_t<std::tuple_element_t<beg + Is, tuple_t<ts...>>...>{std::get<beg + Is>(t)...};
55 template <
typename ...>
typename tuple_t,
59 requires TupleLike<tuple_t<ts...>> && TupleLike<tuple_t<>>
63 return tuple_t<std::tuple_element_t<beg + Is, tuple_t<ts...>>...>{std::move(std::get<beg + Is>(t))...};
101 template <
size_t pivot_c,
template <
typename ...>
typename tuple_t,
typename ... ts>
103 requires TupleLike<tuple_t<ts...>>
107 static_assert(pivot_c <=
sizeof...(ts));
114 template <
size_t pivot_c,
template <
typename ...>
typename tuple_t,
typename ... ts>
116 requires TupleLike<tuple_t<ts...>>
120 static_assert(pivot_c <=
sizeof...(ts));
152 template <
typename pivot_t, TupleLike tuple_t>
155 constexpr
size_t pivot_c = meta::find_index<detail::tuple_type_list_t<remove_cvref_t<tuple_t>>, pivot_t>::value;
159 return tuple_split<pivot_c>(std::forward<tuple_t>(t));
182 template <TupleLike tuple_t>
187 return std::get<1>(tuple_split<1>(std::forward<tuple_t>(t)));
constexpr auto tuple_split(tuple_t< ts... > const &t)
Splits a tuple like data structure at the given position.
Definition: tuple_utility.hpp:105
Provides seqan3::type_list and auxiliary type traits.
The main SeqAn3 namespace.
Provides seqan3::pod_tuple.
Provides seqan3::type_list and auxiliary type traits.
Provides seqan3::TupleLike.
Definition: aligned_sequence_concept.hpp:35
Provides various type traits on generic types.
constexpr auto tuple_pop_front(tuple_t &&t)
Removes the first element of a tuple.
Definition: tuple_utility.hpp:183