- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
C++20 标准在 [coroutine.noop] 中定义了一个“noop 协程” .它是什么?它与主体为 { co_return; 的函数有何不同? }
?
更新
感谢您提供提案和标准的链接。从这些引用资料中总结,“noop 协程”是 resume()
(或 operator()
)和 destroy()
方法没有副作用。
但是用户编写的协程上的 destroy()
总是(我认为!)有副作用,即破坏协程并进一步调用协程句柄方法,包括 resume()
和 destroy()
现在将是未定义的行为,这与无副作用行为不同。
总而言之,没有办法编写协程使得 destroy()
没有副作用,只有库提供的 noop 协程才有这个属性,对吗?
(欢迎更新答案,以回应我问题的这次更新。)
最佳答案
这是在这里提出的:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0913r1.html
基本上,这个想法是
Having such a coroutine handle allows library writer to perform eithersymmetric or asymmetric control transfer based on runtimeconsiderations.
以下代码说明了这个想法(来自同一个提案):
struct Awaiter {
...
auto await_suspend(coroutine_handle<> h) {
...
return cond ? next_coro : noop_coroutine();
}
};
这与手写的 noop 协程不一定不同,但有一个已经为您预定义的协程非常方便。
关于c++ - 什么是 noop 协程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63123373/
在我的设置中,我试图有一个界面 Table继承自 Map (因为它主要用作 map 的包装器)。两个类继承自 Table - 本地和全局。全局的将有一个可变的映射,而本地的将有一个只有本地条目的映射。
Rust Nomicon 有 an entire section on variance除了关于 Box 的这一小节,我或多或少地理解了这一点和 Vec在 T 上(共同)变体. Box and Vec
我是一名优秀的程序员,十分优秀!