20namespace seqan3::detail
36template <
size_t beg,
template <
typename...>
typename tuple_t,
size_t... Is,
typename... ts>
40#pragma GCC diagnostic push
41#pragma GCC diagnostic ignored "-Wmissing-braces"
42 return tuple_t<std::tuple_element_t<beg + Is, tuple_t<ts...>>...>{std::get<beg + Is>(t)...};
43#pragma GCC diagnostic pop
47template <
size_t beg,
template <
typename...>
typename tuple_t,
size_t... Is,
typename... ts>
51#pragma GCC diagnostic push
52#pragma GCC diagnostic ignored "-Wmissing-braces"
53 return tuple_t<std::tuple_element_t<beg + Is, tuple_t<ts...>>...>{std::move(std::get<beg + Is>(t))...};
54#pragma GCC diagnostic pop
88template <
size_t pivot_c,
template <
typename...>
typename tuple_t,
typename... ts>
92 static_assert(pivot_c <=
sizeof...(ts));
94#pragma GCC diagnostic push
95#pragma GCC diagnostic ignored "-Wmissing-braces"
98#pragma GCC diagnostic pop
102template <
size_t pivot_c,
template <
typename...>
typename tuple_t,
typename... ts>
106 static_assert(pivot_c <=
sizeof...(ts));
107#pragma GCC diagnostic push
108#pragma GCC diagnostic ignored "-Wmissing-braces"
111#pragma GCC diagnostic pop
140template <
typename pivot_t, tuple_like tuple_t>
143 constexpr size_t pivot_c = list_traits::find<pivot_t, detail::tuple_type_list_t<std::remove_cvref_t<tuple_t>>>;
145 static_assert(pivot_c <= std::tuple_size_v<std::remove_cvref_t<tuple_t>>);
147 return tuple_split<pivot_c>(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 split.hpp:90
Whether a type behaves like a tuple.
The main SeqAn3 namespace.
Definition aligned_sequence_concept.hpp:29
Provides traits for seqan3::type_list.
Provides seqan3::tuple_like.