Namensräume
Varianten
Aktionen

std::incrementable

Von cppreference.com
< cpp‎ | iterator
 
 
Iterator-Bibliothek
Iterator-Konzepte
Iterator-Primitive
Algorithmus-Konzepte und Hilfsprogramme
Indirekte aufrufbare Konzepte
Gemeinsame Algorithmus-Anforderungen
(C++20)
(C++20)
(C++20)
Dienstprogramme
(C++20)
Iterator-Adapter
Bereichszugriff
(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 in 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 spezifiziert Anforderungen an Typen, die mit den Prä- und Post-Inkrement-Operatoren inkrementiert werden können, deren Inkrementoperationen Gleichheit bewahren und deren Typ std::equality_comparable ist.

Im Gegensatz zu std::weakly_incrementable, das nur Single-Pass-Algorithmen unterstützt, können Multi-Pass-Einweg-Algorithmen mit Typen verwendet werden, die std::incrementable modellieren.

[bearbeiten] Semantische Anforderungen

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

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

[bearbeiten] Gleichheitserhaltung

Ausdrücke, die in requires-Ausdrücken der Standardbibliothekskonzepte deklariert sind, müssen gleichheitserhaltend sein (sofern nicht anders angegeben).

[bearbeiten] Siehe auch

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