std::ranges:: approximately_sized_range
|
||||||||||||||||||||||
| Range primitives | |||||||
|
|||||||
| Range concepts | |||||||||||||||||||
|
|||||||||||||||||||
| Range factories | |||||||||
|
|||||||||
| Range adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||
| Helper items | |||||||||||||||||
|
|
||||||||||||||||
|
Defined in header
<ranges>
|
||
|
template
<
class
T
>
concept approximately_sized_range
=
ranges::
range
<
T
>
&&
|
(since C++26) | |
The
approximately_sized_range
concept specifies the requirements of a
range
type that can estimate its size in constant time with the
reserve_hint
function.
Contents |
Semantic requirements
Given an lvalue
t
of type
std::
remove_reference_t
<
T
>
,
T
models
approximately_sized_range
only if
- ranges :: reserve_hint ( t )
-
- has amortized constant-time complexity,
- does not alter the value of t in a manner observable to equality-preserving expressions, and
- has a value that is not negative and is representable in ranges:: range_difference_t < T > , and
-
if
ranges::
iterator_t
<
T
>
models
forward_iterator, ranges :: reserve_hint ( t ) is well-defined regardless of the evaluation of ranges:: begin ( t ) (in other words, a single-pass approximately sized range may support a call toreserve_hintonly before the first call tobegin, but a forward range must support size at all times).
Notes
| Feature-test macro | Value | Std | Feature |
|---|---|---|---|
__cpp_lib_ranges_reserve_hint
|
202502L
|
(C++26) | ranges::approximately_sized_range |
Example
|
This section is incomplete
Reason: no example |
See also
|
(C++20)
|
specifies that a range knows its size in constant time
(concept) |