22namespace bio::meta::detail
38template <
size_t beg,
template <
typename...>
typename tuple_t,
size_t... Is,
typename... ts>
39 requires(tuple_like<tuple_t<ts...>> && tuple_like<tuple_t<>>)
42 return tuple_t<std::tuple_element_t<beg + Is, tuple_t<ts...>>...>{std::get<beg + Is>(t)...};
46template <
size_t beg,
template <
typename...>
typename tuple_t,
size_t... Is,
typename... ts>
47 requires(tuple_like<tuple_t<ts...>> && tuple_like<tuple_t<>>)
50 return tuple_t<std::tuple_element_t<beg + Is, tuple_t<ts...>>...>{std::move(std::get<beg + Is>(t))...};
88template <
size_t pivot_c,
template <
typename...>
typename tuple_t,
typename... ts>
89 requires tuple_like<tuple_t<ts...>>
92 static_assert(pivot_c <=
sizeof...(ts));
99template <
size_t pivot_c,
template <
typename...>
typename tuple_t,
typename... ts>
100 requires tuple_like<tuple_t<ts...>>
103 static_assert(pivot_c <=
sizeof...(ts));
137template <
typename pivot_t, tuple_like tuple_t>
140 constexpr size_t pivot_c = list_traits::find<pivot_t, detail::tuple_type_list_t<std::remove_cvref_t<tuple_t>>>;
142 static_assert(pivot_c <= std::tuple_size_v<std::remove_cvref_t<tuple_t>>);
144 return tuple_split<pivot_c>(std::forward<tuple_t>(t));
167template <tuple_like tuple_t>
170 static_assert(std::tuple_size_v<std::remove_cvref_t<tuple_t>> > 0);
172 return std::get<1>(tuple_split<1>(std::forward<tuple_t>(t)));
Provides bio::meta::pod_tuple.
Provides traits for meta::type_list.
Provides bio::meta::tuple_like.