以下のコードは、.then()タイプの継続の実装に関するHerbSutterのアイデアに基づいています。
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()または待機している場合もあります)。
先物を共有または類似させる前に、スタックオーバーフローコミュニティは、特に改善と提案(共有された先物でさえ)でこの実装をどのように考えるでしょうか?
提案を事前に感謝します。
(これは、スレッドのコストがかかるため、標準ベースのメカニズムが存在するまでの修正であることを認識しています(多分)))。