c ++ 11 async kontynuacji lub próby semantyki .then ()
Poniższy kod jest oparty naHerb Sutter pomysły implementacji kontynuacji typu .then ().
template<typename Fut, typename Work>
auto then(Fut f, Work w)->std::future<decltype(w(f.get()))>
{ return std::async([=] { w(f.get()); }); }
Byłoby to użyte takauto next = then(f, [](int r) { go_and_use(r); });
lub podobne.
Jest to zgrabny pomysł, ale w obecnej postaci nie będzie działać (kontrakty terminowe są przenoszone tylko i nie można ich kopiować). Podoba mi się ten pomysł, ponieważ prawdopodobnie pojawią się w nadchodzących wersjach c ++, o ile mogę zgadywać (chociaż jako .then () lub nawet czekają.)
Zanim udostępnimy przyszłość lub coś podobnego, zastanawiam się, co społeczność przepełnienia stosu pomyślałaby o tej implementacji konkretnie z ulepszeniami i sugestiami (nawet wspólnymi futures)?
Z góry dziękuję za wszelkie sugestie.
(Wiem, że jest to poprawka, dopóki nie istnieje mechanizm oparty na standardach, ponieważ będzie to kosztować wątek (być może))).