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()24 foo()
25 {
26  ((co_await [](int){ return std::suspend_never{}; }(I)), ...);
27   co_return;
28 }
29 
bar()30 void bar() {
31   foo<1>();
32 }
33