Given a tuple of some elements and a predicate, how can I group adjacent elements that match the predicate into a sub-tuple?
An example:
#include <tuple>
auto is_float = [](auto x) {
return std::is_same<decltype(x), float>{};
};
int main() {
auto tup = std::tuple{1.f, 2.f, 3, 4, 5.f, 6.f, 7};
auto result = magic_foo(is_float, tup);
// all adjacent floats are grouped into sub-tuples like this:
auto expected = std::tuple{std::tuple{1.f, 2.f}, 3, 4, std::tuple{5.f, 6.f}, 7};
assert(tup == expected);
}