Boost.Lambda - заполнитель разыменования - PullRequest
0 голосов
/ 19 марта 2012

Есть ли способ разыменования заполнителя внутри лямбда-выражения?

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

Я знаю, что могу сделать привязку:

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

, но я хочу построить более сложное выражение, с заявлениями if и т. д.

1 Ответ

1 голос
/ 19 марта 2012

Теоретически это должно работать:

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

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

Существует старое обсуждение с различными обходными путями в списке рассылки Boost.Все они кажутся довольно уродливыми.Я бы использовал вложенный bindS или получил бы современный компилятор C ++.

...