|
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] |