考虑以下代码
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
给多个用户。这意味着当有人调用 get() 函数时,我需要传递相同的结果(std::async
如果它已经生成,我不需要重新生成结果)并且我需要具有的阻塞机制std::future::get
。