std :: asyncを使用してstd :: bindで作成された関数オブジェクトを呼び出すことは可能ですか?std :: asyncはstd :: functionオブジェクトを呼び出すことができますか?
#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;
}
エラーは次のとおりです:次のコードはコンパイルに失敗し
'非同期' への呼び出しに該当する機能: 候補テンプレート無視:置換の失敗[Fpと=のstd :: _1と: :機能&は、のArgs = <>]:STD」に 'タイプ' という名前の無いタイプ:: _1 :: __ invoke_of、>
は、それがのstd ::関数オブジェクトと非同期(async)を使用するだけで可能ではないか、私は何か間違っている?
'async'はファンクタの引数をどこから得るのですか? 'std :: function'を渡してみてください。 –
juanchopanza