16 auto get_return_object() {
return future; }
17 std::suspend_never initial_suspend()
noexcept {
return {}; }
18 std::suspend_always final_suspend()
noexcept {
return {}; }
19 void return_value(T&& value) {
20 future->set_value(std::move(value));
22 void unhandled_exception() {
23 future->set_exception(std::current_exception());
27 std::shared_ptr<detail::task_future<T>> future = detail::task_future<T>::create_pending();