std::ranges::approximately_sized_range - cppreference.com

From cppreference.com

template<classT>conceptapproximately_sized_range=ranges::range<T>&&requires(T&t){ranges::reserve_hint(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.

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 to reserve_hint only before the first call to begin, but a forward range must support size at all times).

Notes

Feature-test

macroValueStdFeature

__cpp_lib_ranges_reserve_hint

202502L

(C++26)ranges::approximately_sized_rangeExample

See also