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