Spec-Zone.ru › C++

nothrow-input-range, nothrow-forward-range, nothrow-bidirectional-range, no-throw-input-range, nothrow-random-access-range, nothrow-sized-random-access-range

template< class R >
concept /*nothrow-input-range*/ =
    ranges::range<R> &&
    /*nothrow-input-iterator*/<ranges::iterator_t<R>> &&
    /*nothrow-sentinel-for*/<ranges::sentinel_t<R>, ranges::iterator_t<R>>;
(1) (только для иллюстрации*)
template< class R >
concept /*nothrow-forward-range*/ =
    /*nothrow-input-range*/<R> &&
    /*nothrow-forward-iterator*/<ranges::iterator_t<R>>;
(2) (только для иллюстрации*)
template< class R >
concept /*nothrow-bidirectional-range*/ =
    /*nothrow-forward-range*/<R> &&
    /*nothrow-bidirectional-iterator*/<ranges::iterator_t<R>>;
(3) (начиная с C++26)
(только для иллюстрации*)
template< class R >
concept /*nothrow-random-access-range*/ =
    /*nothrow-bidirectional-range*/<R> &&
    /*nothrow-random-access-iterator*/<ranges::iterator_t<R>>;
(4) (начиная с C++26)
(только для иллюстрации*)
template< class R >
concept /*nothrow-sized-random-access-range*/ =
    /*nothrow-random-access-range*/<R> && ranges::sized_range<R>;
(5) (начиная с C++26)
(только для иллюстрации*)

Эти концепты, используемые только для иллюстрации, указывают, что операции, требуемые специализированными алгоритмами <memory> для диапазонов, не выбрасывают исключений.

Определения /*nothrow-input-iterator*/, /*nothrow-forward-iterator*/, /*nothrow-bidirectional-iterator*/ и /*nothrow-random-access-iterator*/ см. на этой странице.

Семантические требования

1) Тип R моделирует nothrow-input-range только в том случае, если вызовы ranges::begin и ranges::end для объекта типа R не выбрасывают исключений.
5) Тип R моделирует nothrow-sized-random-access-range только в том случае, если вызовы ranges::size для объекта типа R не выбрасывают исключений.

Примечания

Эти концепты допускают выбрасывание исключений некоторыми операциями над диапазонами.

См. также

ranges::range
(C++20)
указывает, что тип является диапазоном, то есть предоставляет итератор begin и sentinel end
(концепт)
ranges::sized_range
(C++20)
указывает, что размер диапазона известен за постоянное время
(концепт)
ranges::iterator_tranges::const_iterator_tranges::sentinel_tranges::const_sentinel_t
(C++20)(C++23)(C++20)(C++23)
получает типы итератора и sentinel диапазона
(псевдоним шаблона)

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

Spec-Zone.ru

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