If I want to iterate through a tuple using std::apply
but not apply one function to the entire thing, how can I separate the tuple, i.e. apply one function to the first n
values and another to all values after it?
some_values
would be a tuple which could have any length and types and length_of_first_part
(likely named a little less verbosely) would known at compile-time.
std::tuple<char, long long, double, long double, float> some_values(33, 2, 3.4, 5.6, 7.8);
const size_t length_of_first_part = 2;
std::apply(
[](auto&&... current_val) {
((std::cout << "(Should be first part) " << current_val << "\n"), ...); //Would obviously do a litle more than cout, but this is just a minimal example
}, some_values
);
std::apply(
[](auto&&... current_val) {
((std::cout << "(Should be second part) " << current_val << "\n"), ...);
}, some_values
);