nothrow-input-iterator, nothrow-forward-iterator, nothrow-bidirectional-iterator, no-throw-input-range, nothrow-random-access-iterator
От ru.cppreference.net
template< class I >
concept /*nothrow-input-iterator*/ =
std::input_iterator<I> &&
std::is_lvalue_reference_v<std::iter_reference_t<I>> &&
std::same_as<std::remove_cvref_t<std::iter_reference_t<I>>,
std::iter_value_t<I>>;
|
(1) | (только для описания*) |
template< class I >
concept /*nothrow-forward-iterator*/ =
/*nothrow-input-iterator*/<I> &&
std::forward_iterator<I> &&
/*nothrow-sentinel-for*/<I, I>;
|
(2) | (только для описания*) |
template< class I >
concept /*nothrow-bidirectional-iterator*/ =
/*nothrow-forward-iterator*/<I> &&
std::bidirectional_iterator<I>;
|
(3) | (since C++26) (только для описания*) |
template< class I >
concept /*nothrow-random-access-iterator*/ =
/*nothrow-bidirectional-iterator*/<I> &&
std::random_access_iterator<I> &&
/*nothrow-sized-sentinel-for*/<I, I>;
|
(4) | (since C++26) (только для описания*) |
Эти концепты, представленные только для описания, указывают, что никакие исключения не выбрасываются из операций, требуемых специализированными алгоритмами памяти<memory> на итераторах.
Для определений /*nothrow-sentinel-for*/ и /*nothrow-sized-sentinel-for*/ см. эту страницу.
Семантические требования
1) Тип
I удовлетворяет nothrow-input-iterator только если никакие исключения не выбрасываются при инкременте, копирующем конструировании, перемещающем конструировании, копирующем присваивании, перемещающем присваивании или разыменовании через допустимые итераторы типа I.3) Тип
I удовлетворяет nothrow-bidirectional-iterator только если никакие исключения не выбрасываются при декременте допустимых итераторов типа I.4) Тип
I удовлетворяет nothrow-random-access-iterator только если никакие исключения не выбрасываются при сравнениях допустимых итераторов типа I или операциях -, +, -=, +=, [] над допустимыми значениями типов I и std::iter_difference_t<I>.Примечания
Эти концепты допускают, что некоторые операции над итераторами могут выбрасывать исключения.
См. также
(C++20) |
указывает, что тип является входным итератором, то есть его значения по ссылке могут быть прочитаны, и он может быть как пре- так и постинкрементирован (концепт) |
(C++20) |
указывает, что input_iterator является прямым итератором, поддерживающим сравнение на равенство и многопроходность (концепт) |
(C++20) |
указывает, что forward_iterator является двунаправленным итератором, поддерживающим перемещение назад (концепт) |
(C++20) |
указывает, что bidirectional_iterator является итератором произвольного доступа, поддерживающим продвижение за постоянное время и индексирование (концепт) |