有没有办法在lambda表达式中取消引用占位符?
boost::function<int(MyClass*)> f = _1->myMethod();
f(myObject);
我知道我可以约束:
boost::function<int(MyClass*)> f = boost::bind(&MyClass::myMethod, _1);
,但我想用if语句等构建更复杂的表达式。
答案 0 :(得分:1)
理论上这应该有效:
struct Foo {
int bla() { return 2; }
};
boost::function<int(Foo*)> func = (_1 ->* &Foo::bla);
有一个old discussion有各种解决方法
提升邮件列表。所有这些看起来都很难看。我坚持
使用嵌套的bindS
或获得现代C ++编译器。