Нижеприведенный код основан на 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); });
или подобное.
Это аккуратная идея, но, поскольку она стоит, не будет работать (фьючерсы перемещаются только и не копируются). Мне нравится идея, поскольку она может появиться в следующих версиях С++, насколько я могу предположить (хотя как .then() или даже ждать.)
Прежде чем делать фьючерсы разделяемыми или похожими, интересно, что сообщество подумает об этой реализации конкретно с улучшениями и предложениями (даже совместными фьючерсами)?
Заранее благодарим за любые предложения.
(Я знаю, что это исправление до тех пор, пока существует механизм, основанный на стандартах, поскольку он будет стоить нить (возможно))).