1 #include <coroutine> 2 3 struct future { 4 struct promise_type { return_valuefuture::promise_type5 void return_value(int) {} initial_suspendfuture::promise_type6 auto initial_suspend() { return std::suspend_never{}; } final_suspendfuture::promise_type7 auto final_suspend() noexcept { return std::suspend_never{}; } unhandled_exceptionfuture::promise_type8 void unhandled_exception() {} get_return_objectfuture::promise_type9 future get_return_object() { return {}; } 10 }; await_readyfuture11 bool await_ready() { return true; } await_suspendfuture12 void await_suspend(std::coroutine_handle<>) {} await_resumefuture13 int await_resume() { return 0; } 14 }; 15 co_foo()16future co_foo() { 17 for( int i = 0; i < co_await future{}; ++i ); 18 // ICE -------------^ 19 co_return 0; 20 } 21