Рассмотрим следующий код
void printPromised(std::future<int> f)
{
std::cout << f.get() << std::endl;
}
int main()
{
printPromised(std::async(std::launch::async, [](){ return 8; })); // This works
auto f = std::async(std::launch::async, [](){ return 8; });
printPromised(f); // This won't work
}
В нем говорится: "Это удаленная функция". Почему это? Далее мне нужно передать тот же обещанный результат, который std::async
сгенерирован; для нескольких пользователей. Это означает, что когда кто-то вызывает "getter", мне нужно передать тот же результат (мне не нужно генерировать результат с помощью std::async
, если он уже сгенерирован), а также мне нужен механизм блокировки, который std::future::get
есть.