std::generator<Ref,V,Allocator>::iterator
Von cppreference.com
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) | |
- Sei
referenceder zugrundeliegende Typ von []std::generator. - Sei für ein Generatorobjekt x dessen
coroutine_im Stack *x.active_ liegt. - 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) |
Äquivalent zu x.active_->top().resume().
Rückgabe: *this.
2) Äquivalent zu ++*this;.
[bearbeiten] Nicht-Member-Funktionen
| (C++23) |
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
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |