The future of the Ranges library
The Ranges library that got accepted in C++20 was based on a library authored by Eric Niebler, and is available at https://github.com/ericniebler/range-v3. Only a small subset of the components of this library have made their way into the standard at present, but more things are likely to be added soon.
In addition to many useful views that haven't been accepted yet, such as group_by
, zip
, slice
, and unique
, there is the concept of actions that can be piped in the same way that views can. However, instead of being lazy evaluated like views, actions perform eager mutations of ranges. Sorting is an example of a typical action.
If you cannot wait for these features to be added to the standard library, I recommend that you take a look at the range-v3 library.