nothrow-input-range, nothrow-forward-range, nothrow-bidirectional-range, no-throw-input-range, nothrow-random-access-range, nothrow-sized-random-access-range
Von de.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) | (Nur zur Darstellung*) |
template< class R >
concept /*nothrow-forward-range*/ =
/*nothrow-input-range*/<R> &&
/*nothrow-forward-iterator*/<ranges::iterator_t<R>>;
|
(2) | (Nur zur Darstellung*) |
template< class R >
concept /*nothrow-bidirectional-range*/ =
/*nothrow-forward-range*/<R> &&
/*nothrow-bidirectional-iterator*/<ranges::iterator_t<R>>;
|
(3) | (seit C++26) (Nur zur Darstellung*) |
template< class R >
concept /*nothrow-random-access-range*/ =
/*nothrow-bidirectional-range*/<R> &&
/*nothrow-random-access-iterator*/<ranges::iterator_t<R>>;
|
(4) | (seit C++26) (Nur zur Darstellung*) |
template< class R >
concept /*nothrow-sized-random-access-range*/ =
/*nothrow-random-access-range*/<R> && ranges::sized_range<R>;
|
(5) | (seit C++26) (Nur zur Darstellung*) |
Diese Nur‑zur‑Darstellung-Konzepte legen fest, dass von Operationen, die von den spezialisierten <memory> Algorithmen auf Bereichen benötigt werden, keine Ausnahmen geworfen werden.
Für die Definitionen von /*nothrow-input-iterator*/, /*nothrow-forward-iterator*/, /*nothrow-bidirectional-iterator*/ und /*nothrow-random-access-iterator*/ siehe diese Seite.
Semantische Anforderungen
1) Ein Typ
R modelliert nothrow-input-range nur dann, wenn keine Ausnahmen von Aufrufen von ranges::begin und ranges::end auf einem Objekt des Typs R geworfen werden.5) Ein Typ
R modelliert nothrow-sized-random-access-range nur dann, wenn keine Ausnahmen von Aufrufen von ranges::size auf einem Objekt des Typs R geworfen werden.Anmerkungen
Diese Konzepte erlauben es, dass einige Operationen auf Bereichen Ausnahmen werfen.
Siehe auch
(C++20) |
gibt an, dass ein Typ ein Bereich ist, d.h. er stellt einen beginBegin-Iterator und einen endEnd-Sentinel bereit (Konzept) |
(C++20) |
gibt an, dass ein Bereich seine Größe in konstanter Zeit kennt (Konzept) |
(C++20)(C++23)(C++20)(C++23) |
erhält die Iterator- und Sentinel-Typen eines Bereichs (Alias-Vorlage) |