#include <iostream>
enum class CoroutineState { BeforeStart = 0, AfterHello, AfterWorld, Completed };
class HelloWorldCoroutine { public: CoroutineState state = CoroutineState::BeforeStart;
void resume() { switch (state) { case CoroutineState::BeforeStart: std::cout << "Hello, "; state = CoroutineState::AfterHello; return; case CoroutineState::AfterHello: std::cout << "World!" << std::endl; state = CoroutineState::AfterWorld; return; case CoroutineState::AfterWorld: return; default: std::cerr << "Invalid state" << std::endl; return; } }
bool isCompleted() const { return state == CoroutineState::AfterWorld; } };
int main() { HelloWorldCoroutine coroutine;
while (!coroutine.isCompleted()) { coroutine.resume(); }
return 0; }
|