I have similar experiences with the range-v3 library. Being a huge fan of LINQ I really wanted to love it. But it was just too limiting. The big advantage of something like ranges is that you should be able to quickly write something declarative. But it's just frustration after frustration.
The "ugly" code at least works the first time with easily predictable performance characteristics.
The "ugly" code at least works the first time with easily predictable performance characteristics.