The call to operator new can be optimized out (even if custom
allocator is used) if The lifetime of the coroutine state is strictly nested within the lifetime of the caller, and
the size of coroutine frame is known at the call site.
In that case, coroutine state is embedded in the caller's stack frame (if the caller is an ordinary function) or coroutine state (if the caller is a coroutine).
https://en.cppreference.com/w/cpp/language/coroutines