Ranges: new views & algorithms (C++23)
zip, chunk, slide, chunk_by, join_with, stride, enumerate, cartesian_product, repeat, ranges::to, fold, contains, find_last, pipe support.
Connected features
Papers
18 · Virtual Jun 2021 → Issaquah 2023Adds ranges::starts_with and ranges::ends_with.
Adds views::zip, zip_transform, adjacent, adjacent_transform, and makes tuple/pair proxy references assignable.
Adds ranges::to<C>() to convert any range to a container, plus from_range_t container constructors.
Adds range_adaptor_closure and bind_back so user-defined adaptors support the | pipe syntax.
Adds the ranges::iota algorithm and ranges::shift_left/shift_right.
Adds views::join_with to join ranges with a delimiter.
Adds the windowing adaptors views::chunk and views::slide.
Adds views::chunk_by, grouping consecutive elements by a predicate.
Adds ranges::find_last, find_last_if and find_last_if_not.
Adds views::stride.
Adds views::as_const, std::const_iterator, and makes ranges::cbegin return a constant iterator.
Adds ranges::contains and ranges::contains_subrange.
Adds ranges::fold_left, fold_right, fold_left_first, fold_left_with_iter and friends.
Adds views::cartesian_product.
Adds views::as_rvalue.
Adds views::repeat.
Makes views::cartesian_product of zero ranges yield a single empty tuple.
Adds views::enumerate.