void f( coro_t::caller_type & ca)
{
    std::string str( ca.get() ); // asserts here!

    ca(7);
}

int main(int argc, char* argv[])
{
    std::string str("abc");

    coro_t c(f);

coro_t c( f, str); // pass str to ctor -> because accessed in f()
int res = c.get(); // returned value