1 #if __has_include (<coroutine>) 2 #include <coroutine> 3 using namespace std; 4 #elif defined (__clang__) && __has_include (<experimental/coroutine>) 5 #include <experimental/coroutine> 6 using namespace std::experimental; 7 #endif 8 9 struct dummy_coro 10 { 11 using promise_type = dummy_coro; await_readydummy_coro12 bool await_ready() { return false; } await_suspenddummy_coro13 void await_suspend(std::coroutine_handle<>) { } await_resumedummy_coro14 void await_resume() { } get_return_objectdummy_coro15 dummy_coro get_return_object() { return {}; } initial_suspenddummy_coro16 dummy_coro initial_suspend() { return {}; } final_suspenddummy_coro17 dummy_coro final_suspend() { return {}; } return_voiddummy_coro18 void return_void() { } unhandled_exceptiondummy_coro19 void unhandled_exception() { } 20 }; 21 22 template <int ...I> 23 dummy_coro foo()24foo() 25 { 26 ((co_await [](int){ return std::suspend_never{}; }(I)), ...); 27 co_return; 28 } 29 bar()30void bar() { 31 foo<1>(); 32 } 33