dot*_*222 11 c++ delegates c++11
C++ 11是否提供代理?
如果没有,在C++中做类似事情的最佳(最有效)方法是什么?Boost.Signals?FastDelegate?别的什么?
Jam*_*lis 14
您可以使用bind将成员函数绑定到类实例来获得类似委托的语义:
#include <functional>
struct C 
{
    void Foo(int) { }
};
void Bar(std::function<void(int)> func) 
{ 
    func(42); // calls obj.Foo(42)
}
int main() 
{
    using namespace std::placeholders;
    C obj;
    Bar(std::bind(&C::Foo, obj, _1));
}
在此示例中,Bar()获取具有单个int参数且返回的任何内容void.  
在main(),我们将指向成员函数的指针绑定到named C::Foo的实例.这为我们提供了一个可以使用单个参数调用并返回的对象.  Cobjintvoid
我们Bar()使用此对象Bar()调用并进行调用obj.Foo(42).