【发布时间】:2020-02-26 04:22:08
【问题描述】:
我read 认为coroutine_handle 可以使用coroutine_handle<Promise>::from_promise() 函数从对协程的promise 对象的引用中重构。据我所知,promise 对象的定义如下:
class resumable{
public:
struct promise_type;
bool resume();
};
struct resumable::promise_type{
resumable get_return_object() {/**/}
auto initial_suspend() {/**/}
auto final_suspend() {/**/}
void return_void() {}
void unhandled_exception();
};
鉴于promise_type 没有对协程句柄的任何引用,我无法弄清楚重建是如何工作的。恰恰相反,协程句柄存储了对promise对象的引用,可以通过句柄的promise()方法返回。我找不到任何关于from_promise 函数中实际发生的信息。
【问题讨论】:
-
这是编译器的魔法。其他需要编译器魔法的东西是 std::initializer_list 和 std::has_trivial_constructor 和 std::has_virtual_destructor
标签: c++ c++20 c++-coroutine