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()16 future co_foo() {
17   for( int i = 0; i < co_await future{}; ++i );
18   // ICE -------------^
19   co_return 0;
20 }
21