continuações assíncronas em c ++ 11 ou tentativa de semântica .then ()
O código abaixo é baseado emHerb Sutter idéias de uma implementação de uma continuação do tipo .then ().
template<typename Fut, typename Work>
auto then(Fut f, Work w)->std::future<decltype(w(f.get()))>
{ return std::async([=] { w(f.get()); }); }
Isso seria usado comoauto next = then(f, [](int r) { go_and_use(r); });
ou similar.
Esta é uma boa idéia, mas, como está, não funcionará (os futuros são apenas móveis e não podem ser copiados). Eu gosto da idéia, pois é provável que apareça nas próximas versões do c ++, tanto quanto eu posso imaginar (embora como. Then () ou até mesmo esperar).
Antes de fazer os futuros compartilhados ou similares, eu me pergunto o que a comunidade de estouro de pilha pensaria dessa implementação especificamente com melhorias e sugestões (até futuros compartilhados)?
Agradecemos antecipadamente por qualquer sugestão.
(Eu estou ciente de que isso é uma correção até que um mecanismo baseado em padrões exista, pois custará um thread (talvez))).