forked from OSchip/llvm-project
parent
eaacd07079
commit
207d13cf84
|
@ -212,6 +212,9 @@ public:
|
|||
return __tmp;
|
||||
}
|
||||
|
||||
// from_address cannot be used with the coroutines promise type.
|
||||
static coroutine_handle from_address(_Promise*) = delete;
|
||||
|
||||
_LIBCPP_ALWAYS_INLINE
|
||||
static coroutine_handle from_promise(_Promise& __promise) _NOEXCEPT {
|
||||
coroutine_handle __tmp;
|
||||
|
|
|
@ -27,11 +27,11 @@ coro::suspend_never sn;
|
|||
struct MyFuture {
|
||||
struct promise_type {
|
||||
typedef coro::coroutine_handle<promise_type> HandleT;
|
||||
coro::suspend_always initial_suspend() { return sa; }
|
||||
coro::suspend_never final_suspend() { return sn; }
|
||||
coro::suspend_never initial_suspend() { return sn; }
|
||||
coro::suspend_always final_suspend() { return sa; }
|
||||
coro::suspend_never yield_value(int) { return sn; }
|
||||
MyFuture get_return_object() {
|
||||
MyFuture f(HandleT::from_address(this));
|
||||
MyFuture f(HandleT::from_promise(*this));
|
||||
return f;
|
||||
}
|
||||
void return_void() {}
|
||||
|
@ -41,7 +41,6 @@ struct MyFuture {
|
|||
MyFuture() : p() {}
|
||||
MyFuture(HandleT h) : p(h) {}
|
||||
|
||||
private:
|
||||
coro::coroutine_handle<promise_type> p;
|
||||
};
|
||||
|
||||
|
@ -54,4 +53,7 @@ MyFuture test_coro() {
|
|||
int main()
|
||||
{
|
||||
MyFuture f = test_coro();
|
||||
while (!f.p.done())
|
||||
f.p.resume();
|
||||
f.p.destroy();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue