Namespaces
Variants

std:: weakly_incrementable

From cppreference.net
Iterator library
Iterator concepts
weakly_incrementable
(C++20)
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11) (C++14)
(C++14) (C++14)
(C++11) (C++14)
(C++14) (C++14)
(C++17) (C++20)
(C++17)
(C++17)
Défini dans l'en-tête <iterator>
template < class I >

concept weakly_incrementable =
std:: movable < I > &&
requires ( I i ) {
typename std:: iter_difference_t < I > ;
requires /*est-un-type-entier-signé*/ < std:: iter_difference_t < I >> ;
{ ++ i } - > std:: same_as < I & > ; // non requis d'être préservateur d'égalité
i ++ ; // non requis d'être préservateur d'égalité

} ;
(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

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)