Namespaces
Variants

std:: incrementable

From cppreference.net
Iterator library
Iterator concepts
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 incrementable =
std:: regular < I > &&
std:: weakly_incrementable < I > &&
requires ( I i ) {
{ i ++ } - > std:: same_as < I > ;

} ;
(depuis C++20)

Ce concept spécifie les exigences pour les types qui peuvent être incrémentés avec les opérateurs de pré-incrémentation et post-incrémentation, dont les opérations d'incrémentation sont préservatrices d'égalité , et le type est std::equality_comparable .

Contrairement à std::weakly_incrementable , qui ne prend en charge que les algorithmes à passage unique, les algorithmes multidirectionnels à passes multiples peuvent être utilisés avec les types qui modélisent std::incrementable .

Exigences sémantiques

I modélise std::incrementable seulement si étant donné deux objets incrémentables a et b de type I :

  • bool ( a == b ) implique bool ( a ++ == b ) , et
  • bool ( a == b ) implique bool ( ( ( void ) a ++ , a ) == ++ b ) .

Préservation de l'égalité

Les expressions déclarées dans les requires expressions des concepts de la bibliothèque standard doivent être equality-preserving (sauf indication contraire).

Voir aussi

spécifie qu'un type semiregular peut être incrémenté avec les opérateurs de pré-incrémentation et post-incrémentation
(concept)
(C++20)
spécifie qu'un type est identique à un autre type
(concept)