nothrow-input-range, nothrow-forward-range, nothrow-bidirectional-range, no-throw-input-range, nothrow-random-access-range, nothrow-sized-random-access-range
От ru.cppreference.net
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) (только для демонстрации*) |
Эти концепты, предназначенные только для демонстрации, определяют, что ни одно исключение не выбрасывается из операций, требуемых специализированными <алгоритмами >над диапазонами.
Определения /*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.Примечания
Эти концепты допускают, что некоторые операции над диапазонами могут выбрасывать исключения.
См. также
(C++20) |
определяет, что тип является диапазоном, то есть предоставляет begin итератор и end страж (концепт) |
(C++20) |
определяет, что диапазон знает свой размер за константное время (концепт) |
(C++20)(C++23)(C++20)(C++23) |
получает типы итератора и стража диапазона (псевдоним шаблона) |