Можно ли вызывать объекты-функции, созданные с помощью std::bind, с помощью std::async. Следующий код не компилируется:
#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': шаблон-кандидат игнорируется: ошибка замены [с Fp = std::_1::function &, Args = ‹>]: нет типа с именем 'type ' в 'std::_1::__invoke_of, >
Просто невозможно использовать асинхронность с объектами std::function или я делаю что-то не так?
(Это компилируется с использованием Xcode 5 с компилятором Apple LLVM 5.0)
async
получить аргументы функтора? Попробуйте передатьstd::function<void()>
. - person juanchopanza   schedule 29.09.2013