下面的代码基于Herb Sutter实现 .then() 类型延续的想法。
template<typename Fut, typename Work>
auto then(Fut f, Work w)->std::future<decltype(w(f.get()))>
{ return std::async([=] { w(f.get()); }); }
这将像auto next = then(f, [](int r) { go_and_use(r); });
或类似地使用。
这是一个巧妙的想法,但就目前而言是行不通的(期货只能移动,不可复制)。我确实喜欢这个想法,因为据我所知,它可能会出现在即将发布的 c++ 版本中(尽管是 .then() 甚至等待。)
在使期货共享或类似之前,我想知道堆栈溢出社区会如何看待这个实现,特别是改进和建议(甚至共享期货)?
在此先感谢您的任何建议。
(我知道这是一个修复,直到基于标准的机制存在,因为它会花费一个线程(也许)))。