std:: weakly_incrementable
| Iterator concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator primitives | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Algorithm concepts and utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Indirect callable concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Common algorithm requirements | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator adaptors | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definiert im 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 definiert Anforderungen an Typen, die mit den Prä- und Post-Inkrementoperatoren erhöht werden können, wobei diese Inkrementoperationen nicht notwendigerweise equality-preserving 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 für schwach inkrementierbare Typen müssen Einzel-Durchlauf-Algorithmen sein. Diese Algorithmen können mit Eingabeströmen als Quelle der Eingabedaten über
std::istream_iterator
verwendet werden.
Semantische Anforderungen
Für ein Objekt
i
vom Typ
I
modelliert
I
std::weakly_incrementable
nur dann, wenn alle folgenden Bedingungen erfüllt sind:
- Die Ausdrücke ++ i und i ++ haben denselben Definitionsbereich.
- Wenn i inkrementierbar ist, dann erhöhen sowohl ++ i als auch i ++ den Wert von i .
- Wenn i inkrementierbar ist, dann gilt std:: addressof ( ++ i ) == std:: addressof ( i ) .
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 |
Siehe auch
|
(C++20)
|
spezifiziert, dass die Inkrementoperation auf einem
weakly_incrementable
Typ
gleichheitserhaltend
ist und dass der Typ
equality_comparable
ist
(Konzept) |