Zakresy C++
Przebudowa standardowych algorytmów w C++20: kolekcję przekazuje się jako jeden obiekt zamiast dwóch iteratorów, a przekształcenia łączy się potokiem.
Stary styl wymagał pisania std::sort(v.begin(), v.end()) i nie dawał kompilatorowi szansy na pomoc, jeśli oba iteratory pochodziły z różnych kontenerów. Z zakresami wystarczy std::ranges::sort(v). Większą nowością są widoki: leniwe, nieposiadające danych adaptery, które się składają — v | views::filter(even) | views::transform(square) | views::take(5) przechodzi kolekcję raz, bez tworzenia pośrednich wektorów. Fundamentem jest biblioteka range-v3 Erica Nieblera. Narzekania dotyczą czasu kompilacji, komunikatów błędów, które mimo konceptów pozostają trudne do czytania, oraz tego, że C++20 ukazał się bez ranges::to, przez co niepotrzebnie trudno było odzyskać prawdziwy kontener. Pojawiło się to dopiero w C++23.