std:: weakly_incrementable
| Iterator concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator primitives | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Algorithm concepts and utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Indirect callable concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Common algorithm requirements | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator adaptors | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Défini dans l'en-tête
<iterator>
|
||
|
template
<
class
I
>
concept weakly_incrementable
=
|
(depuis C++20) | |
Pour la définition de
/*is-signed-integer-like*/
, voir
is-integer-like
.
Ce concept spécifie des exigences sur les types qui peuvent être incrémentés avec les opérateurs de pré-incrémentation et de post-incrémentation, mais ces opérations d'incrémentation ne sont pas nécessairement equality-preserving , et le type lui-même n'est pas requis d'être std::equality_comparable .
Pour les types
std::weakly_incrementable
,
a
==
b
n'implique pas que
++
a
==
++
b
. Les algorithmes sur les types faiblement incrémentables doivent être des algorithmes à passage unique. Ces algorithmes peuvent être utilisés avec les flux d'entrée comme source de données d'entrée via
std::istream_iterator
.
Exigences sémantiques
Pour un objet
i
de type
I
,
I
modélise
std::weakly_incrementable
seulement si toutes les conditions suivantes sont satisfaites :
- Les expressions ++ i et i ++ ont le même domaine.
- Si i est incrémentable, alors ++ i et i ++ font avancer i .
- Si i est incrémentable, alors std:: addressof ( ++ i ) == std:: addressof ( i ) .
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| P2325R3 | C++20 |
default_initializable
était requis
|
non requis |
Voir aussi
|
(C++20)
|
spécifie que l'opération d'incrémentation sur un type
weakly_incrementable
préserve l'égalité et que le type est
comparable par égalité
(concept) |