Boost.Lambda - 取消引用占位符

时间:2012-03-18 21:03:54

标签: boost boost-function boost-lambda

有没有办法在lambda表达式中取消引用占位符?

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

我知道我可以约束:

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

,但我想用if语句等构建更复杂的表达式。

1 个答案:

答案 0 :(得分:1)

理论上这应该有效:

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

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

有一个old discussion有各种解决方法 提升邮件列表。所有这些看起来都很难看。我坚持 使用嵌套的bindS或获得现代C ++编译器。