是否可以调用用创建的函数对象std::bind
using std::async
是的,只要提供正确数量的参数,您就可以调用任何函子。
难道我做错了什么?
您正在将不带参数的绑定函数转换为function<int(int,int)>
,它接受(并忽略)两个参数;然后尝试毫无争议地启动它。
您可以指定正确的签名:
function<int()> sumFunc = bind(&Adder::add, &a, 1, 2);
或避免创建的开销function
:
auto sumFunc = bind(&Adder::add, &a, 1, 2);
或者不打扰bind
at all:
auto future = async(launch::async, &Adder::add, &a, 1, 2);
或使用 lambda:
auto future = async(launch::async, []{return a.add(1,2);});