0

ラムダ式内のプレースホルダーを逆参照する方法はありますか?

boost::function<int(MyClass*)> f = _1->myMethod();
f(myObject);

私はバインディングを作成できることを知っています:

boost::function<int(MyClass*)> f = boost::bind(&MyClass::myMethod, _1);

、しかし、ifステートメントなどを使用して、より複雑な式を作成したいと思います。

4

1 に答える 1

1

理論的には、これは機能するはずです。

struct Foo {
  int bla() { return 2; }
};

boost::function<int(Foo*)> func = (_1 ->* &Foo::bla);

Boostメーリングリストには、さまざまな回避策を取り上げた古いディスカッションがあります。それらのすべてはかなり醜いようです。ネストしたままbindSにするか、最新のC++コンパイラを入手します。

于 2012-03-18T21:44:53.177 に答える