std::generator::iterator(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

okay bestie, welcome to the std::generator::iterator(3) page from the C++ Standard Libary manual πŸ’…

✨ NAME ✨

std::generator::iterator β€” literally std::generator::iterator. That’s the name, periodt.

🌟 SYNOPSIS 🌟

class /*iterator*/;  (since C++23)
                     (exposition only*)

This is the return type of generator::begin.

It models indirectly_readable and input_iterator. Slay.

πŸŽ€ MEMBER TYPES πŸŽ€

Member type β†’ Definition:

  • value_type β†’ std::generator::value
  • difference_type β†’ std::ptrdiff_t

πŸ¦‹ DATA MEMBERS πŸ¦‹

Member name β†’ Definition:

  • coroutine_ (private) β†’ A coroutine handle of type std::coroutine_handle<std::generator::promise_type>. (exposition-only member object*)

πŸ’… MEMBER FUNCTIONS πŸ’…

  • constructor β€” constructs an iterator (public member function)
  • operator= β€” assigns another iterator (public member function)
  • operator* β€” returns an underlying value (public member function)
  • operator++, operator++(int) β€” advances the iterator (public member function)

std::generator::iterator::iterator

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

Initializes coroutine_ with std::exchange(other.coroutine_, {});.

std::generator::iterator::operator=

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

Equivalent to coroutine_ = std::exchange(other.coroutine_, {});.

Returns: *this.

std::generator::iterator::operator*

reference operator*() const
noexcept( std::is_nothrow_copy_constructible_v<reference> );

(since C++23)

  1. Let reference be the std::generator’s underlying type.
  2. Let for some generator object x its coroutine_ be in the stack *x.active_.
  3. Let x.active_->top() refer to a suspended coroutine with promise object p.

Equivalent to return static_cast<reference>(*p.value_);.

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

constexpr /*iterator*/& operator++(); (1) (since C++23)
constexpr void operator++( int );     (2) (since C++23)
  1. Let for some generator object x the coroutine_ be in the stack *x.active_. Equivalent to x.active_->top().resume(). Returns: *this.
  2. Equivalent to ++*this;.

🌈 NON-MEMBER FUNCTIONS 🌈

  • operator== β€” compares the underlying iterator with a sentinel (C++23) (function)

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

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

(since C++23)

Equivalent to return i.coroutine_.done();.

The != operator is synthesized from operator==.

This function is not visible to ordinary unqualified or qualified lookup, and can only be found by argument-dependent lookup when std::generator::iterator is an associated class of the arguments.

πŸ“ EXAMPLE πŸ“

This section is incomplete Reason: no example

⭐ CATEGORY ⭐

  • * Todo no example

mwah πŸ’– β€” source/version: http://cppreference.com, dated 2024.06.10. Go slay some coroutines, bestie 🫢

πŸ“¦ where this page comes from