私は現在、と働いてい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&)」を呼び出す一致する関数がありません
どうすれば適切に行うことができますか?