| ||||||||||||||||||||||
| Range primitives | ||||||||||||
|
| |||||||||||
| Range concepts | |||||||||||||||||||
| |||||||||||||||||||
| Range factories | |||||||||
| |||||||||
| Range adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Helper items | |||||||||||||||||
| |||||||||||||||||
Defined in header <ranges> | ||
template<ranges::range R> using range_reference_t=std::iter_reference_t<ranges::iterator_t<R>>; | (1) | (since C++20) |
template<ranges::range R> using range_const_reference_t= | (2) | (since C++23) |
template<ranges::range R> using range_rvalue_reference_t= | (3) | (since C++20) |
template<ranges::range R> using range_common_reference_t= | (4) | (since C++20) |
R.R.R.R.| R | - | arange type or asized_range type |
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3860 | C++20 | range_common_reference_t was missing | added |
(C++20)(C++20)(C++23)(C++20)(C++20)(C++20) | computes the associated types of an iterator (alias template)[edit] |
(C++20)(C++23)(C++20)(C++23) | obtains iterator and sentinel types of a range (alias template)[edit] |
(C++20)(C++20)(C++20) | obtains size, difference, and value types of a range (alias template)[edit] |