std::generator<Ref,V,Allocator>::iterator
class /*iterator*/; | (с C++23) (только для примера*) |
Тип возвращаемого значения generator::begin.
Реализует indirectly_readable и input_iterator.
Типы членов
| Тип члена | Определение |
|---|---|
value_type | std::generator::value |
difference_type | std::ptrdiff_t |
Члены данных
| Название члена | Определение |
|---|---|
coroutine_ (private) | Ручка сопрограммы типа std::coroutine_handle<std::generator::promise_type>.(член объекта только для примера*) |
Члены-функции
| создаёт итератор (общедоступная функция-член) |
|
| присваивает другой итератор (общедоступная функция-член) |
|
| возвращает базовое значение (общедоступная функция-член) |
|
| перемещает итератор вперёд (общедоступная функция-член) |
std::generator::iterator::iterator
/*iterator*/( /*iterator*/&& other ) noexcept; | (с C++23) |
Инициализирует coroutine_ с std::exchange(other.coroutine_, {});.
std::generator::iterator::operator=
/*iterator*/& operator=( /*iterator*/&& other ) noexcept; | (с C++23) |
Эквивалентно coroutine_ = std::exchange(other.coroutine_, {});.
Возвращает: *this.
std::generator::iterator::operator*
reference operator*() const
noexcept( std::is_nothrow_copy_constructible_v<reference> );
| (с C++23) |
- Пусть
reference— базовый типstd::generator. - Пусть для некоторого объекта генератора
xегоcoroutine_находится в стеке*x.active_. - Пусть
x.active_->top()ссылается на приостановленную сопрограмму с объектом обещанияp.
Эквивалентно return static_cast<reference>(*p.value_);.
std::generator::iterator::operator++
constexpr /*iterator*/& operator++(); | (1) | (с C++23) |
constexpr void operator++( int ); | (2) | (с C++23) |
x его coroutine_ находится в стеке *x.active_.x.active_->top().resume().*this.++*this;. Функции, не являющиеся членами
|
(C++23) | сравнивает базовый итератор со стоп-значением (функция) |
operator==(std::generator::iterator)
friend bool operator==( const /*iterator*/& i, std::default_sentinel_t ); | (с C++23) |
Эквивалентно return i.coroutine_.done();.
Оператор != синтезируется из operator==.
Эта функция не видна обычным неквалифицированным или квалифицированным поискам и может быть найдена только с помощью поиска с учётом зависимостей аргументов, когда std::generator::iterator является ассоциированным классом аргументов.
Пример
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/coroutine/generator/iterator