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))).

questionAnswers(2)

yourAnswerToTheQuestion