是否可以使用 std::async 调用使用 std::bind 创建的函数对象。以下代码无法编译:
#include <iostream>
#include <future>
#include <functional>
using namespace std;
class Adder {
public:
int add(int x, int y) {
return x + y;
}
};
int main(int argc, const char * argv[])
{
Adder a;
function<int(int, int)> sumFunc = bind(&Adder::add, &a, 1, 2);
auto future = async(launch::async, sumFunc); // ERROR HERE
cout << future.get();
return 0;
}
错误是:
没有匹配函数调用'async':候选模板被忽略:替换失败[with Fp = std:: _1::function &, Args = <>]:'std:: _1::__invoke_of中没有名为'type'的类型, >
是不能将 async 与 std::function 对象一起使用,还是我做错了什么?
(这是使用 Xcode 5 和 Apple LLVM 5.0 编译器编译的)