2012-03-18 13 views
0

ラムダ式のプレースホルダを間接参照する方法はありますか?Boost.Lambda - 逆参照プレースホルダ

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

を、私はif文などで、より複雑な式を構築したい:

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

は、私は結合を作ることができます知っています。

これは動作するはずです理論的には
+0

boost :: function func =(_1 - > *&Foo :: bla); 'は動作するはずですが、私のためにはコンパイルされず、理由がわかりません。 – pmr

答えて

1

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

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

ブーストメーリングリスト上のさまざまな回避策をフィーチャーしold discussionがあります。それらのすべてはむしろ醜いようです。私はbindSを入れ子にして を貼るか、最新のC++コンパイラを入手します。

関連する問題