Spec-Zone.ru › C++

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>.
(член объекта только для примера*)

Члены-функции

(конструктор)
создаёт итератор
(общедоступная функция-член)
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. Пусть для некоторого объекта генератора x его coroutine_ находится в стеке *x.active_.
  3. Пусть 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)
1) Пусть для некоторого объекта генератора x его coroutine_ находится в стеке *x.active_.
Эквивалентно x.active_->top().resume().
Возвращает: *this.
2) Эквивалентно ++*this;.

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

operator==
(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

Spec-Zone.ru

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