Namensräume
Varianten
Aktionen

std::generator<Ref,V,Allocator>::iterator

Von cppreference.com
< cpp‎ | coroutine‎ | generator
 
 
Dienstprogramm-Bibliotheken
Sprachunterstützung
Typunterstützung (Basistypen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programm-Dienstprogramme
Variadische Funktionen
Coroutine-Unterstützung (C++20)
Vertragsunterstützung (C++26)
Drei-Wege-Vergleich
(C++20)
(C++20)(C++20)(C++20)  
(C++20)(C++20)(C++20)

Allgemeine Hilfsmittel
Relationale Operatoren (in C++20 veraltet)
 
Coroutine support
Coroutine traits
Coroutine handle
No-op coroutines
Trivial awaitables
Range generators
(C++23)
 
Bereichsbibliothek
Range-Adaptoren
 
 
class /*iterator*/;
(nur Exposition*)

Der Rückgabetyp von generator::begin. Modelliert indirectly_readable und input_iterator.

Inhalt

[bearbeiten] Member-Typen

Mitgliedertyp Definition
value_type std::generator::value
difference_type std::ptrdiff_t

[bearbeiten] Datenmitglieder

Mitglied Beschreibung
std::coroutine_handle<std::generator::promise_type> coroutine_ Der Coroutine-Handle
((exposition-only member object*)

[bearbeiten] Member-Funktionen

Konstruiert einen Iterator
(öffentliche Memberfunktion)
Weist einen anderen Iterator zu
(öffentliche Memberfunktion)
Gibt einen zugrundeliegenden Wert zurück
(öffentliche Memberfunktion)
bewegt den Iterator vorwärts
(öffentliche Memberfunktion)

std::generator::iterator::iterator

/*iterator*/( /*iterator*/&& other ) noexcept;
(seit C++23)

Initialisiert coroutine_ mit std::exchange(other.coroutine_, {});.

std::generator::iterator::operator=

/*iterator*/& operator=( /*iterator*/&& other ) noexcept;
(seit C++23)

Äquivalent zu coroutine_ = std::exchange(other.coroutine_, {});.

Rückgabe: *this.

std::generator::iterator::operator*

reference operator*() const
    noexcept( std::is_nothrow_copy_constructible_v<reference> );
(seit C++23)
  1. Sei reference der zugrundeliegende Typ von []std::generator.
  2. Sei für ein Generatorobjekt x dessen coroutine_ im Stack *x.active_ liegt.
  3. Sei x.active_->top() eine suspendierte Coroutine mit einem Promise-Objekt p.

Äquivalent zu return static_cast<reference>(*p.value_);.

std::generator::iterator::operator++

constexpr /*iterator*/& operator++();
(1) (seit C++23)
constexpr void operator++( int );
(2) (seit C++23)
1) Sei für ein Generatorobjekt x die coroutine_ im Stack *x.active_.
Äquivalent zu x.active_->top().resume().
Rückgabe: *this.
2) Äquivalent zu ++*this;.

[bearbeiten] Nicht-Member-Funktionen

Vergleicht den zugrundeliegenden Iterator mit einem Sentinel
(Funktion)

operator==(std::generator::iterator)

friend bool operator==( const /*iterator*/& i, std::default_sentinel_t );
(seit C++23)

Äquivalent zu return i.coroutine_.done();.

Der Operator != wird aus operator== synthetisiert.

Diese Funktion ist für gewöhnliche unqualifizierte oder qualifizierte Suchen nicht sichtbar und kann nur durch argumentabhängige Suchen gefunden werden, wenn std::generator::iterator eine zugehörige Klasse der Argumente ist.

[bearbeiten] Beispiel