@@ -16,6 +16,10 @@ namespace std::this_thread {
1616`sync_wait_with_variant`は、[Sender](../execution/sender.md)が完了するまで現在のスレッドをブロックし、非同期操作の結果を取得するSenderコンシューマである。
1717
1818`sync_wait_with_variant`は入力Senderが複数の[値完了シグネチャ](../execution/set_value.md)を持つケースに対応する。
19+ 値完了シグネチャが1個だけの場合は[`sync_wait`](sync_wait.md)アルゴリズムを利用する。
20+
21+
22+ 入力Senderの値完了シグネチャが[`set_value_t`](../execution/set_value.md)`(Ts0...)`, ..., [`set_value_t`](../execution/set_value.md)`(TsN...)`のとき、`sync_wait_with_variant`の結果型は[`optional`](/reference/optional/optional.md)`<`[`variant`](/reference/variant/variant.md)`<`[`tuple`](/reference/tuple/tuple.md)`<Ts0...>, ...,` [`tuple`](/reference/tuple/tuple.md)`<TsN...>>`となる。
1923
2024
2125## 効果
@@ -35,8 +39,8 @@ apply_sender(get-domain-early(sndr), sync_wait_with_variant, sndr)
3539- 上記の` apply_sender ` 式を` e ` としたとき、[ ` same_as ` ] ( /reference/concepts/same_as.md ) ` <decltype(e), sync-wait-with-variant-result-type<Sndr>> == true ` であること。
3640
3741
38- ### 戻り値型
39- ` sync_wait_with_variant ` の戻り値型となる 、説明専用のエイリアステンプレート` sync-wait-with-variant-result-type ` を下記の通り定義する。
42+ ### 結果型
43+ ` sync_wait_with_variant ` の結果型となる 、説明専用のエイリアステンプレート` sync-wait-with-variant-result-type ` を下記の通り定義する。
4044
4145``` cpp
4246namespace std ::this_thread {
@@ -81,9 +85,9 @@ return result_type(nullopt);
8185
8286- 指定したSenderが完了するまで、前方進行保証委任(forward progress guarantee delegation)による現在のスレッドをブロックすること。
8387- 指定したSenderの非同期操作の結果が返る場合
84- - 値完了の場合 、結果データは[`optional`](/reference/optional/optional.md)オブジェクト内の[`tuple`](/reference/tuple/tuple.md)の[`variant`](/reference/variant/variant.md)で返されること。
85- - エラー完了の場合 、例外を送出すること。
86- - 停止完了の場合、空の [`optional`](/reference/optional/optional.md)オブジェクトが返されること。
88+ - [値完了](../execution/set_value.md)の場合 、結果データは[`optional`](/reference/optional/optional.md)オブジェクト内の[`tuple`](/reference/tuple/tuple.md)の[`variant`](/reference/variant/variant.md)で返されること。
89+ - [エラー完了](../execution/set_error.md)の場合 、例外を送出すること。
90+ - [停止完了](../execution/set_stopped.md)の場合、無効値 [`optional`](/reference/optional/optional.md)オブジェクトが返されること。
8791
8892
8993## 例
@@ -98,7 +102,7 @@ int main()
98102 ex::sender auto sndr = ex::just(100, 'X');
99103 // メインスレッド上で完了待機
100104 auto result = std::this_thread::sync_wait_with_variant(sndr);
101- // 戻り値型optional <variant<tuple<int,char>>>からtupleを取り出す
105+ // 結果型optional <variant<tuple<int,char>>>からtupleを取り出す
102106 auto tup = get<0>(result.value());
103107 std::println ("result={}", tup);
104108}
0 commit comments