我目前正在与boost::asymmetric_coroutine
. 假设我们在全局命名空间中有一个普通函数:
void foo(boost::coroutines::asymmetric_coroutine<int>::push_type & sink)
{
//do something
sink(100);
//do something else
}
在这种情况下,我们可以通过以下方式使用此函数创建和执行协程:
boost::coroutines::asymmetric_coroutine<void>::pull_type coro{foo};
我需要做的是以同样的方式使用类成员函数。据我了解,boost::bind
应该以某种方式使用,但是,以下代码不起作用:
class MyClass
{
public:
void create_coro()
{
boost::coroutines::asymmetric_coroutine<int>::pull_type coro
{
boost::bind(&MyClass::foo, _1);
};
}
private:
void foo(boost::coroutines::asymmetric_coroutine<int>::push_type & sink)
{
//do something
}
}
它引发的错误是
没有匹配的函数调用'get_pointer(const boost::coroutines::push_coroutine&)'
我该如何正确地做到这一点?