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)
Definiert im Header <iterator>
template < class I >

concept incrementable =
std:: regular < I > &&
std:: weakly_incrementable < I > &&
requires ( I i ) {
{ i ++ } - > std:: same_as < I > ;

} ;
(seit C++20)

Dieses Konzept legt Anforderungen an Typen fest, die mit den Prä- und Post-Inkrementoperatoren inkrementiert werden können, deren Inkrementoperationen equality-preserving sind, und der Typ ist std::equality_comparable .

Im Gegensatz zu std::weakly_incrementable , die nur Einzel-Durchlauf-Algorithmen unterstützen, können Mehrfach-Durchlauf-Einrichtungsalgorithmen mit Typen verwendet werden, die std::incrementable modellieren.

Semantische Anforderungen

I modelliert std::incrementable nur wenn für zwei beliebige inkrementierbare Objekte a und b vom Typ I :

  • bool ( a == b ) impliziert bool ( a ++ == b ) , und
  • bool ( a == b ) impliziert bool ( ( ( void ) a ++ , a ) == ++ b ) .

Gleichheitserhaltung

Ausdrücke, die in requires expressions der Standardbibliothek-Konzepte deklariert werden, müssen equality-preserving sein (sofern nicht anders angegeben).

Siehe auch

spezifiziert, dass ein semiregular Typ mit Prä- und Post-Inkrementoperatoren inkrementiert werden kann
(Konzept)
(C++20)
spezifiziert, dass ein Typ identisch mit einem anderen Typ ist
(Konzept)