I decided to use std::views
stuff because of their bound-safety and readability. It looks like std::views::take_while
invokes too many function calls and recomputes the same thing over and over again. This looks like a performance nightmare to me.
I thought the new std::views::cache_latest
would be a solution, but testing my code with GCC (trunk) and Clang (trunk) showed otherwise.
In the following, std::views::take_while()
invokes its lambda 68 times!