1 #if __has_include(<coroutine>)
2 #include <coroutine>
3 #else
4 #include <experimental/coroutine>
5 namespace std { using namespace experimental; }
6 #endif
7 #include <utility>
8 
9 struct task {
10     struct promise_type {
11         task get_return_object();
12         void return_void();
13         void unhandled_exception();
14         std::suspend_always initial_suspend() noexcept;
15         std::suspend_always final_suspend() noexcept;
16     };
17 };
18 
19 struct move_only {
20     move_only();
21     move_only(const move_only&) = delete;
22     move_only(move_only&) = delete;
23     move_only(move_only&&) = default;
24 };
25 
f(move_only x)26 task f(move_only x) {
27     co_return;
28 }
29