Spec-Zone.ru › C++

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

class /*iterator*/;
(только для пояснения*)

Тип возвращаемого значения generator::begin. Моделирует indirectly_readable и input_iterator.

Типы-члены

Член Определение
value_type std::generator::value
difference_type std::ptrdiff_t

Члены-данные

Член Описание
std::coroutine_handle<std::generator::promise_type> coroutine_ дескриптор сопрограммы
(объект-член только для пояснения*)

Функции-члены

(конструктор)
создаёт итератор
(открытая функция-член)
operator=
присваивает другой итератор
(открытая функция-член)
operator*
возвращает базовое значение
(открытая функция-член)
operator++operator++(int)
продвигает итератор
(открытая функция-член)

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)
  1. Пусть reference будет базовым типом std::generator.
  2. Пусть для некоторого объекта generator x его coroutine_ находится в стеке *x.active_.
  3. Пусть x.active_->top() ссылается на приостановленную сопрограмму с объектом promise p.

Эквивалентно return static_cast<reference>(*p.value_);.

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

constexpr /*iterator*/& operator++();
(1) (начиная с C++23)
constexpr void operator++( int );
(2) (начиная с C++23)
1) Пусть для некоторого объекта generator x его coroutine_ находится в стеке *x.active_.
Эквивалентно x.active_->top().resume().
Возвращает: *this.
2) Эквивалентно ++*this;.

Функции, не являющиеся членами

operator==
(C++23)
сравнивает базовый итератор с sentinel
(функция)

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/cpp/coroutine/generator/iterator

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API