@@ -17,8 +17,17 @@ namespace std::execution {
1717
1818
1919## 効果
20- - 呼び出し式`just(ts...)`は、`(`[`movable-value`](../movable-value.md)`<Ts> &&...) == false`のとき不適格となる。
21- - そうでなければ、式[`make-sender`](make-sender.md)`(just,` [`product-type`](product-type.md)`{ts...})`と等価。
20+ 説明用のパック`ts`に対して、パック`Ts`を`decltype((ts))`とする。下記いずれかの条件をみたすとき、呼び出し式`just(ts...)`は不適格となる。
21+
22+ - `(`[`movable-value`](../movable-value.md)`<Ts> &&...) == false`
23+
24+ そうでなければ、呼び出し式`just(ts...)`は下記と等価。
25+
26+ ```cpp
27+ make-sender(just, product-type{ts...})
28+ ```
29+ * make-sender[ link make-sender.md]
30+ * product-type[ link product-type.md]
2231
2332
2433### Senderアルゴリズムタグ ` just `
@@ -43,22 +52,34 @@ namespace std::execution {
4352* std::move[link /reference/utility/move.md]
4453
4554
55+ ## カスタマイゼーションポイント
56+ [Receiver](receiver.md)との[接続(connect)](connect.md)時に、[関連付けられた実行ドメイン](get-domain-late.md)に対して[`execution::transform_sender`](transform_sender.md)経由でSender変換が行われる。
57+ [デフォルト実行ドメイン](default_domain.md)では無変換。
58+
59+
4660## 例
4761```cpp example
62+ #include <string>
4863#include <print>
4964#include <execution>
5065namespace ex = std::execution;
66+ using namespace std::string_literals;
5167
5268int main()
5369{
54- // 値(123,'X')の送信結果は tuple<int,char> 型で受け取る
55- ex::sender auto snd1 = ex::just(123, 'X');
56- std::tuple<int, char> result1 = std::this_thread::sync_wait(snd1).value();
70+ // 空の値を送信するSender
71+ ex::sender auto snd0 = ex::just();
72+ std::tuple<> result0 = std::this_thread::sync_wait(snd0).value();
73+ std::println("result0={}", result0);
74+
75+ // 値"C++"を送信するSender
76+ ex::sender auto snd1 = ex::just("C++"s);
77+ std::tuple<std::string> result1 = std::this_thread::sync_wait(snd1).value();
5778 std::println("result1={}", result1);
5879
59- // 空値の送信結果は tuple<> 型で受け取る
60- ex::sender auto snd2 = ex::just();
61- std::tuple<> result2 = std::this_thread::sync_wait(snd2).value();
80+ // 値(123,'X')を送信するSender
81+ ex::sender auto snd2 = ex::just(123, 'X' );
82+ std::tuple<int, char > result2 = std::this_thread::sync_wait(snd2).value();
6283 std::println("result2={}", result2);
6384}
6485```
@@ -69,8 +90,9 @@ int main()
6990
7091### 出力
7192```
72- result1=(123, 'X')
73- result2=()
93+ result0=()
94+ result1=("C++")
95+ result2=(123, 'X')
7496```
7597
7698
@@ -86,9 +108,10 @@ result2=()
86108
87109
88110## 関連項目
89- - [`execution::just_error`](just_error.md.nolink )
90- - [`execution::just_stopped`](just_stopped.md.nolink )
111+ - [ ` execution::just_error ` ] ( just_error.md )
112+ - [ ` execution::just_stopped ` ] ( just_stopped.md )
91113
92114
93115## 参照
116+ - [ P2999R3 Sender Algorithm Customization] ( https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2999r3.html )
94117- [ P2300R10 ` std::execution ` ] ( https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2300r10.html )
0 commit comments