On Thu, 22 Sept 2022 at 13:29, Wilhelm Meier wrote: > > According to the standard, an implementation can avoid the > heap-allocation, if > - the lifetime of the coroutine is strictly within the lifetime of the > caller > - the size of coroutine state can be determined at compile time > > Looks like this optimization is not yet available because new/delete-ops > are required. > > Is there any work on this topic? The so-called HALO optimizations are much more difficult than was originally thought when the wording in the standard was written. https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2477r3.html#background-and-motivation describes some of the problems. > Thanks! > Wilhelm > > On 21.09.22 15:38, Wilhelm Meier wrote: > > I tried to use coroutines with avr-gcc (13.0.0) for the AVR target. I > > managed to include the coroutine-header and to write a very simple > > generator using the example from cppreference. > > > > It compiles well, but then I get undefined symbols: > > > > 1) new and delete operator-functions > > 2) f(f()::f().Frame*) > > > > Therefore two question arise here: > > > > a) is it possible to use coroutines without head-allocation? E.g. define > > some global storage for the state of the coroutine? > > b) if a) can be fullfilled, what is 2) supposed to do? > > > > Thanks for any hints, > > Wilhelm