我使用boost :: coroutine调用非空函数,如
typedef boost::coroutines::coroutine< int(void) > coro_t;
typedef coro_t::caller_type Yield_target;
myClass* do_something(Yield_target& yield)
{
myClass* m = new myClass;
// ... do smt
yield();
// ... do smt
return m;
}
然后我调用我的函数绑定它来提升协程。函数(协同程序)完成后如何获取myClass *的返回值?
答案 0 :(得分:0)
您在问题陈述中提到的 coro_t :: caller_type 类型可能已弃用,因为它未在more recent Boost Documentation中展示。但是,在最近的文档中,here您可能会在 coroutine&lt;&gt; :: push_type 部分看到“您无法从此类其他执行上下文中检索值的短语协程“。
虽然我不确定你打算如何使用couroutine库,但我怀疑你会比 coroutine&lt;&gt; :: pull_type <更频繁地使用 coroutine&lt;&gt; :: push_type / strong>,所以我猜你需要找到另一种方法来检索返回值,而不是库本身。