ラムダ式内のプレースホルダーを逆参照する方法はありますか?
boost::function<int(MyClass*)> f = _1->myMethod();
f(myObject);
私はバインディングを作成できることを知っています:
boost::function<int(MyClass*)> f = boost::bind(&MyClass::myMethod, _1);
、しかし、ifステートメントなどを使用して、より複雑な式を作成したいと思います。
ラムダ式内のプレースホルダーを逆参照する方法はありますか?
boost::function<int(MyClass*)> f = _1->myMethod();
f(myObject);
私はバインディングを作成できることを知っています:
boost::function<int(MyClass*)> f = boost::bind(&MyClass::myMethod, _1);
、しかし、ifステートメントなどを使用して、より複雑な式を作成したいと思います。
理論的には、これは機能するはずです。
struct Foo {
int bla() { return 2; }
};
boost::function<int(Foo*)> func = (_1 ->* &Foo::bla);
Boostメーリングリストには、さまざまな回避策を取り上げた古いディスカッションがあります。それらのすべてはかなり醜いようです。ネストしたままbindS
にするか、最新のC++コンパイラを入手します。