Spec-Zone.ru › C++

std::ranges::reserve_hint

Определено в заголовочном файле <ranges>
Определено в заголовочном файле <iterator>
inline namespace /* unspecified */ {
    inline constexpr auto reserve_hint = /* unspecified */;
}
(начиная с C++26)
(объект точки настройки)
Сигнатура вызова
template< class T >
    requires /* see below */
constexpr auto reserve_hint( T&& t );
(начиная с C++26)

Оценивает количество элементов в t за постоянное время.

Пусть t обозначает подвыражение, результатом которого является (возможно, материализованный) объект результата, обозначенный как E, а тип E — T:

  • Если ranges::size(E) является допустимым выражением, ranges::reserve_hint(E) эквивалентно выражению ranges::size(E).
  • В противном случае, если auto(t.reserve_hint()) является допустимым выражением целочисленного типа, ranges::reserve_hint(E) эквивалентно выражению auto(t.reserve_hint()).
  • В противном случае, если выполнены все следующие условия, ranges::reserve_hint(E) эквивалентно выражению auto(reserve_hint(t)):
    • T является типом класса или перечисления.
    • auto(reserve_hint(t)) является допустимым выражением целочисленного типа, причём смысл reserve_hint определяется так, как если бы выполнялся только поиск, зависящий от аргументов.
  • В противном случае ranges::reserve_hint(E) некорректно.

Диагностируемые некорректные случаи, описанные выше, приводят к ошибке подстановки, если ranges::reserve_hint(E) появляется в непосредственном контексте инстанцирования шаблона.

Объекты точек настройки

Имя ranges::reserve_hint обозначает объект точки настройки — константный функциональный объект типа класса литерального semiregular. Подробности см. в разделе CustomizationPointObject.

Примечания

Если ranges::reserve_hint(e) допустимо для выражения e, возвращаемый тип является целочисленным.

Макрос проверки поддержки Значение Стандарт Функция
__cpp_lib_ranges_reserve_hint 202502L (C++26) ranges::reserve_hint

Пример

См. также

ranges::size
(C++20)
возвращает целое число, равное размеру диапазона
(объект точки настройки)
ranges::ssize
(C++20)
возвращает знаковое целое число, равное размеру диапазона
(объект точки настройки)
ranges::approximately_sized_range
(C++26)
указывает, что диапазон может оценить свой размер за постоянное время
(концепт)

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

Spec-Zone.ru

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