下面的转换是否可行?我已经尝试过 boost::lambda 和一个简单的绑定(bind),但我正在努力在没有处理 foo 和调用 bar 的特殊帮助程序类的情况下就地进行转换。
struct Foo {}; // untouchable
struct Bar {}; // untouchable
// my code
Bar ConvertFooToBar(const Foo& foo) { ... }
void ProcessBar(const Bar& bar) { ... }
boost::function<void (const Foo&)> f =
boost::bind(&ProcessBar, ?);
f(Foo()); // ProcessBar is invoked with a converted Bar
最佳答案
您正在执行功能组合。所以你必须编写你的 bind
。您需要 ProcessBar(ConvertFooToBar(...))
才能发生。所以你必须真正做到这一点。
boost::function<void (const Foo&)> f =
boost::bind(&ProcessBar, boost::bind(ConvertFooToBar, _1));
关于c++ - 重定向 boost 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10567903/