Я думаю, что это должно работать:
a_signal.connect(if_then(
bind((std::string(*)(any&))&any_cast, var(_buffer)[_1]) == "foo",
bind(&base_class<>::a_method,
ll_static_cast< base_class<>* >(
new_ptr<derived_class>()
),
var(_buffer)[_1]
)
)
);
bind
, if_then
, ll_static_cast
, new_ptr
, _1
, var
(и, я думаю, ref
тоже) являются членами boost::lambda
.
Но, честно говоря, я бы отказался работать с таким кодом лично:)