nothrow-input-iterator, nothrow-forward-iterator, nothrow-bidirectional-iterator, no-throw-input-range, nothrow-random-access-iterator
De fr.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) | (exposition uniquement*) |
template< class I >
concept /*nothrow-forward-iterator*/ =
/*nothrow-input-iterator*/<I> &&
std::forward_iterator<I> &&
/*nothrow-sentinel-for*/<I, I>;
|
(2) | (exposition uniquement*) |
template< class I >
concept /*nothrow-bidirectional-iterator*/ =
/*nothrow-forward-iterator*/<I> &&
std::bidirectional_iterator<I>;
|
(3) | (depuis C++26) (exposition uniquement*) |
template< class I >
concept /*nothrow-random-access-iterator*/ =
/*nothrow-bidirectional-iterator*/<I> &&
std::random_access_iterator<I> &&
/*nothrow-sized-sentinel-for*/<I, I>;
|
(4) | (depuis C++26) (exposition uniquement*) |
Ces concepts d'exposition uniquement spécifient qu'aucune exception n'est levée par les opérations requises par les algorithmes <memory> spécialisés sur les itérateurs.
Pour les définitions de /*nothrow-sentinel-for*/ et /*nothrow-sized-sentinel-for*/, voir cette page.
Exigences sémantiques
1) Un type
I modélise nothrow-input-iterator uniquement si aucune exception n'est levée lors de l'incrémentation, de la construction par copie, de la construction par déplacement, de l'affectation par copie, de l'affectation par déplacement ou du déréférencement d'itérateurs valides de type I.3) Un type
I modélise nothrow-bidirectional-iterator uniquement si aucune exception n'est levée lors de la décrémentation d'itérateurs valides de type I.4) Un type
I modélise nothrow-random-access-iterator uniquement si aucune exception n'est levée lors des comparaisons d'itérateurs valides de type I, ou des opérateurs -, +, -=, +=, [] sur des valeurs valides de type I et std::iter_difference_t<I>.Notes
Ces concepts autorisent certaines opérations sur les itérateurs à lever des exceptions.
Voir aussi
(C++20) |
spécifie qu'un type est un itérateur d'entrée, c'est-à-dire que ses valeurs référencées peuvent être lues et qu'il peut être pré- et post-incrémenté (concept) |
(C++20) |
spécifie qu'un input_iterator est un itérateur avant, prenant en charge la comparaison d'égalité et le multi-passage (concept) |
(C++20) |
spécifie qu'un forward_iterator est un itérateur bidirectionnel, prenant en charge le déplacement vers l'arrière (concept) |
(C++20) |
spécifie qu'un bidirectional_iterator est un itérateur à accès aléatoire, prenant en charge l'avancement en temps constant et l'indiçage (concept) |