Có thể gọi các đối tượng hàm được tạo bằng std :: bind sử dụng std :: async hay không. Các mã sau thất bại trong việc biên dịch:Có thể std :: async call std :: đối tượng chức năng?
#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;
}
Lỗi này là:
Không có chức năng phù hợp cho cuộc gọi đến 'async': Candidate mẫu bỏ qua: thay thất bại [với fp = std :: _1: : chức năng &, args = <>]: không có loại tên là 'loại' trong 'std :: _1 :: __ invoke_of,>
là nó chỉ không thể sử dụng với các đối tượng async std :: chức năng hay tôi làm gì sai?
(này đã được biên soạn sử dụng Xcode 5 với Apple LLVM 5,0 biên dịch)
nơi sẽ 'async' nhận đối số functor từ? Hãy thử truyền hàm 'std ::'. –
juanchopanza