nothrow-input-iterator, nothrow-forward-iterator, nothrow-bidirectional-iterator, no-throw-input-range, nothrow-random-access-iterator
Von de.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) | (nur zur Veranschaulichung*) |
template< class I >
concept /*nothrow-forward-iterator*/ =
/*nothrow-input-iterator*/<I> &&
std::forward_iterator<I> &&
/*nothrow-sentinel-for*/<I, I>;
|
(2) | (nur zur Veranschaulichung*) |
template< class I >
concept /*nothrow-bidirectional-iterator*/ =
/*nothrow-forward-iterator*/<I> &&
std::bidirectional_iterator<I>;
|
(3) | (seit C++26) (nur zur Veranschaulichung*) |
template< class I >
concept /*nothrow-random-access-iterator*/ =
/*nothrow-bidirectional-iterator*/<I> &&
std::random_access_iterator<I> &&
/*nothrow-sized-sentinel-for*/<I, I>;
|
(4) | (seit C++26) (nur zur Veranschaulichung*) |
Diese nur zur Veranschaulichung dienenden Konzepte legen fest, dass von Operationen, die von den spezialisierten <Speicher>-Algorithmen auf Iteratoren benötigt werden, keine Ausnahmen ausgelöst werden.
Für die Definitionen von /*nothrow-sentinel-for*/ und /*nothrow-sized-sentinel-for*/ siehe diese Seite.
Semantische Anforderungen
1) Ein Typ
I modelliert nothrow-input-iterator nur, wenn keine Ausnahmen durch Inkrementieren, Kopierkonstruktion, Verschiebekonstruktion, Kopierzuweisung, Verschiebezuweisung oder Dereferenzieren gültiger Iteratoren des Typs I ausgelöst werden.3) Ein Typ
I modelliert nothrow-bidirectional-iterator nur, wenn keine Ausnahmen durch Dekrementieren gültiger Iteratoren des Typs I ausgelöst werden.4) Ein Typ
I modelliert nothrow-random-access-iterator nur, wenn keine Ausnahmen durch Vergleiche gültiger Iteratoren des Typs I oder die Operatoren -, +, -=, +=, [] auf gültigen Werten der Typen I und std::iter_difference_t<I> ausgelöst werden.Anmerkungen
Diese Konzepte erlauben es, dass einige Operationen an Iteratoren Ausnahmen auslösen.
Siehe auch
(C++20) |
gibt an, dass ein Typ ein Eingabe-Iterator ist, d. h., seine referenzierten Werte können gelesen werden und er kann sowohl vor- als auch nachinkrementiert werden (Konzept) |
(C++20) |
gibt an, dass ein input_iterator ein Vorwärts-Iterator ist, der Gleichheitsvergleich und Mehrfachdurchlauf unterstützt (Konzept) |
(C++20) |
gibt an, dass ein forward_iterator ein bidirektionaler Iterator ist, der Rückwärtsbewegung unterstützt (Konzept) |
(C++20) |
gibt an, dass ein bidirectional_iterator ein Direktzugriffs-Iterator ist, der Vorrücken in konstanter Zeit und Indexzugriff unterstützt (Konzept) |