How could I split a parameter pack into two smaller packs using index sequences? This doesn't compile. Something with zero overhead would be nice. In this case, split a pack of 7 into packs of 4 and 3
template <typename T, size_t I>
concept true_concept = true;
template <typename... Ts> requires (sizeof...(Ts) == 7)
void test(Ts&&... args) {
[&]<size_t... I1, size_t... I2>(std::index_sequence<I1...>, std::index_sequence<I2...>) {
[&]<true_concept<I1>... Ts1, true_concept<I2>... Ts2>(Ts1&&... args1, Ts2&&... args2) {
// Now we can use args1... and args2... separately (and also Ts1... and Ts2...)
}(std::forward<Ts>(args)...);
}(std::make_index_sequence<4>{}, std::make_index_sequence<3>{});
}
