Imagine you have those coroutines
awaitable<void> a() {
...
}
awaitable<void> b() {
co_await a();
}
awaitable<void> c() {
co_await b();
}
awaitable<void> d() {
co_await c();
}
int main() {
io_context ctx;
co_spawn(ctx, d(), detached);
ctx.run();
return 0;
}
Can I rewrite b, c, d as:
awaitable<void> b() {
return a();
}
awaitable<void> c() {
return b();
}
awaitable<void> d() {
return c();
}
?
As you can see, coroutine a does not return anything, so we can simply pass the awaitable object outside by return a()
Will you choose the first form or the second form?