C++ Ranges and Views
C++ ranges express operations over sequences, and views adapt a range lazily without usually owning or materializing a new collection. Views inherit lifetime and invalidation constraints from their underlying range.
Composable, lazy range transformations and non-owning views.