【发布时间】:2017-05-25 00:50:03
【问题描述】:
我正在阅读关于改进 std::future 和 std::promise 的新 C++ 提案,这里是 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3857.pdf,它说
then 函数对象的主体会 本身是一个基于未来的操作,这导致 then() 返回一个未来>。在这种情况下,它几乎总是 如果你真正关心的是内心的未来,那么 then() 在返回之前执行一个隐式的 unwrap()(见下文)。
因此在下面的代码中
auto promise = std::promise<int>{};
auto another_future = promise.get_future().then([](auto future) {
return std::async([]() { return 1; });
});
another_future 的类型是 std::future<int> 而不是 std::future<std::future<int>>
我试图使用boost::future 来实现相同的目标,但似乎 boost 延续并没有隐含地展开未来。我可以做些什么来从提升期货中启用相同的行为吗?似乎也没有 unwrap() 函数可用于生成的功能。
我是否坚持必须手动通过构造函数解开未来?同样在尝试出现以下错误时,我该怎么办?
inline explicit BOOST_THREAD_FUTURE(
BOOST_THREAD_RV_REF(
BOOST_THREAD_FUTURE<BOOST_THREAD_FUTURE<R> >) other); // EXTENSION
【问题讨论】:
标签: c++ c++11 asynchronous boost future