Namespaces
Variants

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

来自 zh.cppreference.net
 
 
 
协程支持
协程特性
协程句柄
无操作协程
简单可等待对象
范围生成器
(C++23)
 
范围库
范围适配器
 
 
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_ 协程句柄
(仅用于阐述的成员对象*)

成员函数

构造迭代器
(公开成员函数)
赋值另一个迭代器
(公开成员函数)
返回底层值
(公开成员函数)
推进迭代器
(公开成员函数)

std::generator:: iterator :: iterator

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

使用 std:: exchange ( other. coroutine_ , { } ) ; 初始化 coroutine_ 。

std::generator:: iterator :: operator=

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

等价于 coroutine_ = std:: exchange ( other. coroutine_ , { } ) ; 。

返回值: * this 。

std::generator:: iterator :: operator*

reference operator * ( ) const
noexcept ( std:: is_nothrow_copy_constructible_v < reference > ) ;
(since 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) (since C++23)
constexpr void operator ++ ( int ) ;
(2) (since C++23)
1) 令对于某个生成器对象 x ,其 coroutine_ 位于栈 * x. active_ 中。
等价于 x. active_ - > top ( ) . resume ( ) 。
返回值: * this 。
2) 等价于 ++* this ; 。

非成员函数

(C++23)
比较底层迭代器与哨兵
(函数)

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

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

等价于 return i. coroutine_ . done ( ) ; 。

!= 运算符由 operator== 合成 。

此函数对普通的 非限定查找 或 限定查找 不可见,仅当 std::generator:: iterator 是参数的关联类时,才能通过 实参依赖查找 找到。

示例