http://glfwtfwhlsm2u5pw3b7crist7bt7fwepj2wgv3n3b64unj22v5435tyd.onion/blog/recreational-c++/2019/08/18/playing-with-generators.html
.); swapcontext ( & callee_context , & caller_context ); if ( eptr ) { std :: rethrow_exception ( eptr ); } } auto operator * () -> T & { return val . operator * (); } auto operator -> () -> T & { return val . operator -> (); } auto operator * () const -> T const & { return val . operator * (); } auto operator -> () const -> T const * { return val . operator -> (); } }; template < typename T , int stack_size = 4096 > struct Generator { private: std :: function < void ( Yielder < T >& ) >...