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)26task f(move_only x) { 27 co_return; 28 } 29