0

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

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 回答