Spec-Zone.ru › C++

std::ranges::approximately_sized_range

Defined in header <ranges>
template< class T >
concept approximately_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 macro Value Std Feature
__cpp_lib_ranges_reserve_hint 202502L (C++26) ranges::approximately_sized_range

Example

See also

ranges::sized_range
(C++20)
specifies that a range knows its size in constant time
(concept)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/ranges/approximately_sized_range

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API