With strides from C++23 you can write
iota(0) | stride(2)
instead of
iota(0) | filter([](auto i) { return i % 2 == 0; })
which feels much more clumsy and unnecessarily computing intensive (even if the compilers can perhaps produce something simpler from it).