Skip to content

Commit 8253efa

Browse files
committed
execution: 説明専用エンティティ (#1384)
- SET-VALUE,TRY-EVAL,TRY-SET-VALUE - SCHED-ATTRS,SCHED-ENV - MAKE-ENV,JOIN-ENV
1 parent deaaa16 commit 8253efa

16 files changed

+89
-19
lines changed

reference/execution/execution/bulk.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ namespace std::execution {
7171
}
7272
```
7373
* set_value_t[link set_value.md]
74-
* TRY-EVAL[link TRY-EVAL.md.nolink]
74+
* TRY-EVAL[link set_value.md]
7575
* std::move[link /reference/utility/move.md]
7676
* see below[italic]
7777

reference/execution/execution/connect.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ namespace std::execution {
111111
`C`型の`c`[コルーチンPromise型](/lang/cpp20/coroutines.md)の左辺値`p`に対して、`await-result-type<C, Promise>``decltype(`[`GET-AWAITER`](../is-awaitable.md)`(c, p).`[`await_resume()`](/lang/cpp20/coroutines.md)`)`型とする。
112112
`V``await-result-type<DS, connect-awaitable-promise>`とする。
113113

114-
`SET-VALUE-SIG(T)`を、`T`がCV修飾された`void`ならば[`set_value_t`](set_value.md)`()`型、そうでなければ[`set_value_t`](set_value.md)`(T)`型とする。
115114
`Sigs`を下記の通り定義する。
116115

117116
```cpp
@@ -121,10 +120,10 @@ completion_signatures<
121120
set_stopped_t()>
122121
```
123122
* completion_signatures[link completion_signatures.md]
123+
* SET-VALUE-SIG[link set_value.md]
124124
* set_error_t[link set_error.md]
125125
* set_stopped_t[link set_stopped.md]
126126
* exception_ptr[link /reference/exception/exception_ptr.md]
127-
* SET-VALUE-SIG[italic]
128127
129128
説明用の関数テンプレート`suspend-complete`とコルーチン`suspend-awaitable`を下記の通り定義する。
130129

reference/execution/execution/continues_on.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ namespace std::execution {
4747
```
4848
* impls-for[link impls-for.md]
4949
* default-impls[link impls-for.md]
50-
* JOIN-ENV[link JOIN-ENV.md.nolink]
51-
* SCHED-ATTRS[link SCHED-ATTRS.md.nolink]
50+
* JOIN-ENV[link ../queryable.md]
51+
* SCHED-ATTRS[link scheduler.md]
5252
* FWD-ENV[link ../forwarding_query.md]
5353
* get_env[link get_env.md]
5454

reference/execution/execution/get_completion_signatures.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ namespace std::execution {
3434
set_stopped_t()>
3535
```
3636
* completion_signatures[link completion_signatures.md]
37-
* SET-VALUE-SIG[link connect.md]
37+
* SET-VALUE-SIG[link set_value.md]
3838
* await-result-type[link connect.md]
3939
* env-promise[link env-promise.md]
4040
* set_error_t[link set_error.md]

reference/execution/execution/into_variant.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ namespace std::execution {
8080
}
8181
```
8282
* set_value_t[link set_value.md]
83+
* TRY-SET-VALUE[link set_value.md]
8384
* decayed-tuple[link decayed-tuple.md]
8485
* std::move[link /reference/utility/move.md]
8586

reference/execution/execution/let_value.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,19 +114,19 @@ namespace std::execution {
114114
```
115115
* set_value[link set_value.md]
116116
* decayed-typeof[link /reference/functional/decayed-typeof.md]
117-
* TRY-EVAL[link TRY-EVAL.md.nolink]
117+
* TRY-EVAL[link set_value.md]
118118
* std::move[link /reference/utility/move.md]
119119
120120
説明用の式`sndr`と`env`に対して、型`Sndr`を`decltype((sndr))`とする。[`sender-for`](sender-for.md)`<Sndr,` [`decayed-typeof`](/reference/functional/decayed-typeof.md)`<let_value>> == false`のとき、式`let_value.transform_env(sndr, env)`は不適格となる。
121121
122-
そうでなければ、式`let_value.transform_env(sndr, env)`は[`JOIN-ENV`](JOIN-ENV.md.nolink)`(let-env(sndr),` [`FWD-ENV`](../forwarding_query.md)`(env))`と等価。
122+
そうでなければ、式`let_value.transform_env(sndr, env)`は[`JOIN-ENV`](../queryable.md)`(let-env(sndr),` [`FWD-ENV`](../forwarding_query.md)`(env))`と等価。
123123
124124
125125
## 説明専用エンティティ
126126
説明用の式`sndr`を用いて、`let-env(sndr)`を下記リストのうち最初に適格となる式と定義する。
127127
128-
- [`SCHED-ENV`](SCHED-ENV.md.nolink)`(`[`get_completion_scheduler`](get_completion_scheduler.md)`<`[`decayed-typeof`](/reference/functional/decayed-typeof.md)`<`[`set_value`](set_value.md)`>>(`[`get_env`](get_env.md)`(sndr)))`
129-
- [`MAKE-ENV`](MAKE-ENV.md.nolink)`(`[`get_domain`](get_domain.md)`,` [`get_domain`](get_domain.md)`(`[`get_env`](get_env.md)`(sndr)))`
128+
- [`SCHED-ENV`](schedule.md)`(`[`get_completion_scheduler`](get_completion_scheduler.md)`<`[`decayed-typeof`](/reference/functional/decayed-typeof.md)`<`[`set_value`](set_value.md)`>>(`[`get_env`](get_env.md)`(sndr)))`
129+
- [`MAKE-ENV`](../queryable.md)`(`[`get_domain`](get_domain.md)`,` [`get_domain`](get_domain.md)`(`[`get_env`](get_env.md)`(sndr)))`
130130
- `(void(sndr),` [`env<>{}`](env.md)`)`
131131
132132
説明専用の`let-bind`テンプレート関数を下記の通り定義する。

reference/execution/execution/on.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ transform_sender(
7979
}
8080
```
8181
* scheduler[link scheduler.md]
82-
* JOIN-ENV[link JOIN-ENV.md.nolink]
83-
* SCHED-ENV[link SCHED-ENV.md.nolink]
82+
* JOIN-ENV[link ../queryable.md]
83+
* SCHED-ENV[link scheduler.md]
8484
* FWD-ENV[link ../forwarding_query.md]
8585
8686
- 式`on.transform_sender(out_sndr, env)`は下記と等価。
@@ -128,7 +128,7 @@ transform_sender(
128128
* get_env[link get_env.md]
129129
* query-with-default[link query-with-default.md]
130130
* write-env[link write-env.md]
131-
* SCHED-ENV[link SCHED-ENV.md.nolink]
131+
* SCHED-ENV[link scheduler.nolink]
132132
* std::move[link /reference/utility/move.md]
133133
134134
説明専用のクラス`not-a-scheduler`を未規定な空のクラス型、`not-a-sender`を下記の通り定義する。

reference/execution/execution/read_env.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ namespace std::execution {
3939
* decayed-typeof[link /reference/functional/decayed-typeof.md]
4040
* impls-for[link impls-for.md]
4141
* default-impls[link impls-for.md]
42+
* TRY-SET-VALUE[link set_value.md]
4243
* get_env[link get_env.md]
4344

4445

reference/execution/execution/schedule_from.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ namespace std::execution {
5959
return JOIN-ENV(SCHED-ATTRS(data), FWD-ENV(get_env(child)));
6060
}
6161
```
62-
* JOIN-ENV[link JOIN-ENV.md.nolink]
63-
* SCHED-ATTRS[link SCHED-ATTRS.md.nolink]
62+
* JOIN-ENV[link ../queryable.md]
63+
* SCHED-ATTRS[link scheduler.md]
6464
* FWD-ENV[link ../forwarding_query.md]
6565
* get_env[link get_env.md]
6666

reference/execution/execution/scheduler.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,20 @@ namespace std::execution {
8080
Scheduler型のデストラクタは、[`schedule`](schedule.md)が返すSenderオブジェクトに接続されたReceiverの完了を待機してブロックしてはならない。
8181

8282

83+
## 説明専用エンティティ
84+
### `SCHED-ATTRS`
85+
説明用のScheduler`sch`に対して、式`SCHED-ATTRS(sch)`は[`queryable`](../queryable.md)を満たす型の式`o1`となり、下記を満たす。
86+
87+
- 型`Tag`が[`set_value_t`](set_value.md)もしくは[`set_stopped_t`](set_stopped.md)のとき、式`o1.query(`[`get_completion_scheduler`](get_completion_scheduler.md)`<Tag>)`の型および値が`sch`と等しい。
88+
- 式`o1.query(`[`get_domain`](get_domain.md)`)`は`sch.query(`[`get_domain`](get_domain.md)`)`と等価。
89+
90+
### `SCHED-ENV`
91+
説明用のScheduler`sch`に対して、式`SCHED-ENV(sch)`は[`queryable`](../queryable.md)を満たす型の式`o2`となり、下記を満たす。
92+
93+
- 式`o2.query(`[`get_scheduler`](get_scheduler.md)`)`は、型および値が`sch`と等しい右辺値。
94+
- 式`o2.query(`[`get_domain`](get_domain.md)`)`は`sch.query(`[`get_domain`](get_domain.md)`)`と等価。
95+
96+
8397
## 例
8498
```cpp example
8599
#include <execution>

0 commit comments

Comments
 (0)