命名空间
变体
操作

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

来自 cppreference.com
< cpp‎ | coroutine‎ | generator
 
 
实用程序库
语言支持
类型支持 (基本类型,RTTI)
库功能测试宏 (C++20)
动态内存管理
程序实用程序
协程支持 (C++20)
可变参数函数
调试支持
(C++26)
三方比较
(C++20)
(C++20)(C++20)(C++20)
(C++20)(C++20)(C++20)
通用实用程序
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中已弃用)
整数比较函数
(C++20)(C++20)(C++20)   
(C++20)
交换类型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
通用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
基本字符串转换
(C++17)
(C++17)

 
协程支持
协程特征
协程句柄
空操作协程
琐碎的 awaitables
范围生成器
(C++23)
 
范围库
范围适配器
 
 
class /*iterator*/;
(自 C++23 起)
(仅供说明*)

generator::begin 的返回值类型。

符合 indirectly_readableinput_iterator

内容

[编辑] 成员类型

成员类型 定义
value_type std::generator::value
difference_type std::ptrdiff_t

[编辑] 数据成员

成员名称 定义
coroutine_ (私有) 类型为 std::coroutine_handle<std::generator::promise_type> 的协程句柄。
(仅供说明成员对象*)

[编辑] 成员函数

构造迭代器
(公有成员函数)
分配另一个迭代器
(公有成员函数)
返回基础值
(公有成员函数)
推进迭代器
(公有成员函数)

std::generator::iterator::iterator

/*迭代器*/( /*迭代器*/&& other ) noexcept;
(自 C++23 起)

coroutine_ 初始化为 std::exchange(other.coroutine_, {});.

std::generator::迭代器::operator=

/*迭代器*/& operator=( /*迭代器*/&& other ) noexcept;
(自 C++23 起)

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

返回: *this.

std::generator::迭代器::operator*

reference operator*() const
    noexcept( std::is_nothrow_copy_constructible_v<reference> );
(自 C++23 起)
  1. referencestd::generator 的基础类型。
  2. 对于某个生成器对象 x,令其 coroutine_ 在堆栈 *x.active_ 中。
  3. x.active_->top() 指向一个挂起的协程,其承诺对象为 p

等效于 return static_cast<reference>(*p.value_);.

std::generator::迭代器::operator++

constexpr /*迭代器*/& operator++();
(1) (自 C++23 起)
constexpr void operator++( int );
(2) (自 C++23 起)
1) 对于某个生成器对象 x,令 coroutine_ 在堆栈 *x.active_ 中。
等效于 x.active_->top().resume().
返回: *this.
2) 等效于 ++*this;.

[edit] 非成员函数

将底层迭代器与哨兵进行比较
(函数)

operator==(std::generator::迭代器)

friend bool operator==( const /*迭代器*/& i, std::default_sentinel_t );
(自 C++23 起)

等效于 return i.coroutine_.done();.

!= 运算符从 operator==合成

此函数对普通的 非限定限定查找 不可見,只能通过 依赖于参数的查找 找到,前提是 std::generator::迭代器 是参数的关联类。

[edit] 例子