Hacker News new | ask | show | jobs
by bingo3131 810 days ago
Regarding new/delete elision: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p09...

You can also specify custom new/delete operations for your co-routine for control. I am not sure if you are allowed to delete them to guarantee elision either happens or the program fails to compile.

Much like lambdas and ranged-based for loops, co-routines are pretty much defined as a code transformation into lower-level C++ rather than being black magic.

Regarding the "inline" keyword being used to move a function's body into the caller: that is a compiler hint and not mandatory. The actual purpose of the "inline" function is to allow the implementation of a function to appear in multiple translation units without that causing linking issues (provided the implementation is identical).

In terms of "I’m curious if anyone actually finds something useful to do with these.": the modern C++ Windows Runtime API is built upon async operations and co-routines.

2 comments

> In terms of "I’m curious if anyone actually finds something useful to do with these.": the modern C++ Windows Runtime API is built upon async operations and co-routines.

And this answers another question from the article:

> in C++ I don’t know who [coroutines] are for, or who asked for this…

And the answer is Microsoft. They already had an extension for coroutines in their compiler before the standard, the standard is not very different from their original implementation (albeit there are differences), and you can almost always see at least one @ms address in all the discussions.

My understanding is that the extension in MSVC was done specifically as a proof of concept for the standard proposal. In fact the authors also implemented it in clang as well.

This is quite common. Especially for complex proposals, the committee wants field experience or at least proof that it is implementable before standardization.

Yes, they are incredibly useful and performant in real time state machines. One of the best features of the language in certain situations.