>
C++'s version is not memory safe.As a C++ engineer with 20+ years of experience, I recently had an employer project migrate to C++20 and shortly then C++23. We started using coroutines. Oh goodness they're fun. The simple things are indeed simple and easy.
And actually fairly easy to get wrong, too. Way too easy. I might know how coroutines work but goodness it's been difficult training the rest of the team.
It's when you start to get true asynchronicity with multiple jobs running concurrently and each job might have a different workflow... well all of the synchronization and waiting for multiple jobs doesn't quite exist in the standard yet. So the standard provides the language tools but third party libraries provide the actual functionality -- to various degrees of success. We use boost asio's awaitable and there's clearly some warts and even gaps in functionality that we've had to work around.
I like early adopting many things. Adopting coroutines, even in C++23, was perhaps a little too-early.
I really wish my employer would give me time (say... 2 years) to clean up a ton of things not just in our codebase but also in the libraries we use and even propose fixes to the standard itself.