> Sumamry: somehow the captured smart pointer gets destroyed+corrupted
> when I yield from the coroutine, but the local copy survives. When I use

GeneratorBlockEnumerator gets parameter (std::function) by value (temporary function gets created before constructor and destroyed right after). Then this temporary function passed by reference to push_type.