gpt4 book ai didi

c++ - 多次调用 `std::future::then` 的行为是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:06:56 25 4
gpt4 key购买 nike

根据Concurrency TS,下面的代码会发生什么?

auto f0 = std::async([]{return 0;});
auto f1 = f0.then([](auto& f){ return f.get() + 10; });
auto f2 = f0.then([](auto& f){ if(!f.valid()) return; return f.get() + 10;});

到第三行代码执行时,f0已经有了continuation,所以根据TS,f0应该抛出异常,中止程序, UB 或者有不同的行为?我不清楚。

最佳答案

根据 cppreference ,它是未定义的:

Attach the continuation func to *this. The behavior is undefined if *this has no associated shared state (i.e., valid() == false).

...

After this function returns, valid() is false.

关于c++ - 多次调用 `std::future::then` 的行为是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51054760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com