【发布时间】:2020-11-17 06:13:30
【问题描述】:
C++20 标准在[coroutine.noop] 中定义了一个“noop 协程”。它是什么?
它与 body 为 { co_return; } 的函数有何不同?
更新
感谢您提供指向提案和标准的链接。从这些参考资料中总结,“noop 协程”是一种 resume()(或 operator())和 destroy() 方法没有副作用的协程。
但是destroy() 在用户编写的协程上总是(我认为!)有一个副作用,即破坏协程并进一步调用协程处理方法,包括 resume() 和 destroy() 现在将是未定义的行为,这与无副作用的行为不同。
综上所述,没有办法写出让destroy()没有副作用的协程,只有库提供的noop协程才有这个属性,对吧?
(欢迎更新答案,以回应我的问题的更新。)
【问题讨论】:
-
您能否提供参考标准中提到的位置?
标签: c++ language-lawyer c++20 c++-coroutine