質問

ネストされた先物を単一の先物に「フラット化」するために使用するヘルパー関数があります:

編集:提案されているように、「fold」の名前を「flatten」に変更しました。

Boostライブラリの先物を使用しています: ジェネラコディセタグプレ

次のように使用されます: ジェネラコディセタグプレ

問題は、「ネストされた」未来をジェネラコディセタグコードに変換した場合にのみ機能することです。それを回避するための良い方法はありますか?私が欲しいのは次のようなものです: ジェネラコディセタグプレ

次に、メソッドの名前が少しわかりません。何か意見はありますか?

役に立ちましたか?

解決

(注:boost::unique_futurestd::asyncと連携させる方法がわからないため、boost::unique_futureのすべてのインスタンスをstd::futureに置き換えました。コードはテスト済みで、私の側で機能します。)

問題は、ラムダ式が値(実際にはコピーによるキャプチャを意味する)または参照(将来の存続期間をクロージャに結び付けたいため、ここでは適用されない)のいずれかでキャプチャするのに対し、std::futureは移動のみであるということです。その答えは通常std::bindですが、この場合、std::asyncにはbindのような機能が組み込まれています。 ジェネラコディセタグプレ

恐れ入りますが、お勧めできる名前がありません。テンプレートがおそらく再帰的に機能してstd::future<std::future<std::future<...std::future<T>...>>>std::future<T>に変換する場合は、おそらくflatten_futureと呼びます。あるいは、そもそも一般的なタグコードしか受け入れないので、おそらく単に一般的なタグコードです。


すでに単項flattenがあると仮定します: ジェネラコディセタグプレ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top