std::weakly_incrementable
| Definiert in Header <iterator> |
||
| template< class I > concept weakly_incrementable = |
(seit C++20) | |
Für die Definition von /*is-signed-integer-like*/ siehe is-integer-like.
Dieses Konzept spezifiziert Anforderungen an Typen, die mit den Prä- und Post-Inkrementoperatoren inkrementiert werden können, wobei diese Inkrementoperationen nicht notwendigerweise gleichheitserhaltend sind und der Typ selbst nicht std::equality_comparable sein muss.
Für std::weakly_incrementable Typen impliziert a == b nicht, dass ++a == ++b. Algorithmen auf schwach inkrementierbaren Typen müssen Einpassalorithmen sein. Diese Algorithmen können mit Eingabeströmen als Quelle der Eingabedaten über std::istream_iterator verwendet werden.
[bearbeiten] Semantische Anforderungen
Für ein Objekt i vom Typ I modelliert I std::weakly_incrementable nur, wenn alle folgenden Bedingungen erfüllt sind:
- Die Ausdrücke ++i und i++ haben denselben Definitionsbereich.
- Wenn i inkrementierbar ist, dann schreiten sowohl ++i als auch i++ i voran.
- Wenn i inkrementierbar ist, dann gilt std::addressof(++i) == std::addressof(i).
[bearbeiten] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| P2325R3 | C++20 | default_initializable war erforderlich. |
nicht erforderlich. |
[bearbeiten] Siehe auch
| (C++20) |
spezifiziert, dass die Inkrementoperation auf einem weakly_incrementable Typ gleichheitserhaltend ist und dass der Typ equality_comparable ist.(Konzept) |