Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion reference/execution/execution.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ namespace std::execution {
| [`execution::forward_progress_guarantee`](execution/forward_progress_guarantee.md) | 前方進行保証 (enum) | C++26 |
| [`execution::get_forward_progress_guarantee`](execution/get_forward_progress_guarantee.md) | 前方進行保証取得のクエリオブジェクト (customization point object) | C++26 |
| [`execution::get_completion_scheduler`](execution/get_completion_scheduler.md) | 完了Scheduler取得のクエリオブジェクト (customization point object) | C++26 |
| [`execution::get_completion_domain`](execution/get_completion_domain.md) | 完了ドメイン取得のクエリオブジェクト (customization point object) | C++26 |
| [`execution::get_await_completion_adaptor`](execution/get_await_completion_adaptor.md) | Awaitable完了アダプタ取得のクエリオブジェクト (customization point object) | C++26 |
| [`execution::get_env`](execution/get_env.md) | 環境取得のクエリオブジェクト (customization point object) | C++26 |
| [`execution::env_of_t`](execution/env_of_t.md) | 指定型から環境型を取得 (alias template) | C++26 |
Expand Down Expand Up @@ -81,6 +82,7 @@ namespace std::execution {

| 名前 | 説明 | 対応バージョン |
|------|------|----------------|
| [`execution::indeterminate_domain`](execution/indeterminate_domain.md.nolink) | 未確定実行ドメイン (class template) | C++26 |
| [`execution::default_domain`](execution/default_domain.md) | デフォルト実行ドメイン (class) | C++26 |
| [`execution::sender`](execution/sender.md) | Sender型 (concept) | C++26 |
| [`execution::sender_in`](execution/sender_in.md) | 指定環境で有効なSender (concept) | C++26 |
Expand All @@ -91,7 +93,6 @@ namespace std::execution {
| [`execution::sends_stopped`](execution/sends_stopped.md) | Senderが停止完了を送信しうるか否か (variable template) | C++26 |
| [`execution::tag_of_t`](execution/tag_of_t.md) | Senderアルゴリズムタグ型を取得 (alias template) | C++26 |
| [`execution::transform_sender`](execution/transform_sender.md) | Senderを変換 (function template) | C++26 |
| [`execution::transform_env`](execution/transform_env.md) | 環境を変換 (function template) | C++26 |
| [`execution::apply_sender`](execution/apply_sender.md) | Senderアルゴリズムを適用 (function template) | C++26 |
| [`execution::connect`](execution/connect.md) | SenderとReceiverを接続 (customization point object) | C++26 |
| [`execution::connect_result_t`](execution/connect_result_t.md) | [`connect`](execution/connect.md)結果型を取得 (alias template) | C++26 |
Expand Down Expand Up @@ -204,3 +205,4 @@ Senderコンシューマは名前空間 `std::this_thread` および名前空間
- [P3682R0 Remove `std::execution::split`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3682r0.pdf)
- [P3815R1 Add `scope_association` concept to P3149](https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3815r1.html)
- [P3986R1 A Wording Strategy for Inlinable Receivers](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2026/p3986r1.pdf)
- [P3826R5 Fix Sender Algorithm Customization](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2026/p3826r5.html)
31 changes: 4 additions & 27 deletions reference/execution/execution/affine_on.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,40 +22,16 @@ namespace std::execution {
## 効果
説明用の式`sch`と`sndr`に対して、`decltype((sch))`が[`scheduler`](scheduler.md)を満たさない、もしくは`decltype((sndr))`が[`sender`](sender.md)を満たさないとき、呼び出し式`affine_on(sndr, sch)`は不適格となる。

そうでなければ、呼び出し式`affine_on(sndr, sch)`は`sndr`が1回だけ評価されることを除いて、下記と等価
そうでなければ、呼び出し式`affine_on(sndr, sch)`は下記と等価

```cpp
transform_sender(get-domain-early(sndr), make-sender(affine_on, sch, sndr))
make-sender(affine_on, sch, sndr)
```
* transform_sender[link transform_sender.md]
* get-domain-early[link get-domain-early.md]
* make-sender[link make-sender.md]


### Senderアルゴリズムタグ `affine_on`
Senderアルゴリズム動作説明用のクラステンプレート[`impls-for`](impls-for.md)に対して、下記の特殊化が定義される。

```cpp
namespace std::execution {
template<>
struct impls-for<affine_on_t> : default-impls {
static constexpr auto get-attrs =
[](const auto& data, const auto& child) noexcept -> decltype(auto) {
return JOIN-ENV(SCHED-ATTRS(data), FWD-ENV(get_env(child)));
};
};
}
```
* impls-for[link impls-for.md]
* default-impls[link impls-for.md]
* JOIN-ENV[link ../queryable.md]
* SCHED-ATTRS[link scheduler.md]
* FWD-ENV[link ../forwarding_query.md]
* get_env[link get_env.md]


## カスタマイゼーションポイント
Senderアルゴリズム構築時および[Receiver](receiver.md)接続時に、関連付けられた実行ドメインに対して[`execution::transform_sender`](transform_sender.md)経由でSender変換が行われる。
[Receiver](receiver.md)接続時に、関連付けられた実行ドメインに対して[`execution::transform_sender`](transform_sender.md)経由でSender変換が行われる。
[デフォルト実行ドメイン](default_domain.md)では無変換。

説明用の式`out_sndr`を`affine_on(sndr, sch)`の戻り値[Sender](sender.md)とし、型`OutSndr`を`decltype((out_sndr))`とする。式`out_rcvr`を[`sender_in`](sender_in.md)`<OutSndr, Env> == true`となる[環境](../queryable.md)`Env`に関連付けられた[Receiver](receiver.md)とする。`out_sndr`と`out_rcvr`との[接続(connect)](connect.md)結果[Operation State](operation_state.md)への左辺値参照を`op`としたとき、
Expand Down Expand Up @@ -89,3 +65,4 @@ Senderアルゴリズム構築時および[Receiver](receiver.md)接続時に、

## 参照
- [P3552R3 Add a Coroutine Task Type](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3552r3.html)
- [P3826R5 Fix Sender Algorithm Customization](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2026/p3826r5.html)
11 changes: 4 additions & 7 deletions reference/execution/execution/associate.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,11 @@ associated状態の関連Senderに対する[接続(connect)](connect.md)操作
## 効果
説明用の式`sndr`と`token`に対して、`decltype((sndr))`が[`sender`](sender.md)を満たさない、もしくは[`remove_cvref_t`](/reference/type_traits/remove_cvref.md)`<decltype((token))>`が[`scope_token`](scope_token.md)を満たさないとき、呼び出し式`associate(sndr, token)`は不適格となる。

そうでなければ、呼び出し式`associate(sndr, token)`は`sndr`が1回だけ評価されることを除いて、下記と等価
そうでなければ、呼び出し式`associate(sndr, token)`は下記と等価

```cpp
transform_sender(get-domain-early(sndr),
make-sender(associate, associate-data(token, sndr)))
make-sender(associate, associate-data(token, sndr))
```
* transform_sender[link transform_sender.md]
* get-domain-early[link get-domain-early.md]
* make-sender[link make-sender.md]
* associate-data[italic]

Expand Down Expand Up @@ -248,7 +245,7 @@ pair<assoc-t, sender-ref> release() && noexcept;


## カスタマイゼーションポイント
Senderアルゴリズム構築時および[Receiver](receiver.md)接続時に、関連付けられた実行ドメインに対して[`execution::transform_sender`](transform_sender.md)経由でSender変換が行われる。
[Receiver](receiver.md)接続時に、関連付けられた実行ドメインに対して[`execution::transform_sender`](transform_sender.md)経由でSender変換が行われる。
[デフォルト実行ドメイン](default_domain.md)では無変換。


Expand Down Expand Up @@ -309,7 +306,7 @@ value=42


## 参照
- [P2999R3 Sender Algorithm Customization](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2999r3.html)
- [P2300R10 `std::execution`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2300r10.html)
- [P3149R11 `async_scope` - Creating scopes for non-sequential concurrency](https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3149r11.html)
- [P3815R1 Add `scope_association` concept to P3149](https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3815r1.html)
- [P3826R5 Fix Sender Algorithm Customization](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2026/p3826r5.html)
17 changes: 5 additions & 12 deletions reference/execution/execution/bulk.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,11 @@ namespace std::execution {
- `Shape`が[`integral`](/reference/concepts/integral.md)を満たさない、もしくは
- `Func`が[`copy_constructible`](/reference/concepts/copy_constructible.md)のモデルでないとき。

そうでなければ、呼び出し式`bulk(sndr, policy, shape, f)`は`sndr`が1回だけ評価されることを除いて、下記と等価
そうでなければ、呼び出し式`bulk(sndr, policy, shape, f)`は下記と等価

```cpp
transform_sender(
get-domain-early(sndr),
make-sender(bulk, product-type<see below, Shape, Func>{policy, shape, f}, sndr))
make-sender(bulk, product-type<see below, Shape, Func>{policy, shape, f}, sndr))
```
* transform_sender[link transform_sender.md]
* get-domain-early[link get-domain-early.md]
* make-sender[link make-sender.md]
* product-type[link product-type.md]

Expand All @@ -65,11 +61,8 @@ return bulk_chunked(std::move(child), policy, shape, std::move(new_f));


## カスタマイゼーションポイント
Senderアルゴリズム構築時に、[Sender](sender.md)`sndr`に[関連付けられた実行ドメイン](get-domain-early.md)に対して[`execution::transform_sender`](transform_sender.md)経由でSender変換が行われる。
[デフォルト実行ドメイン](default_domain.md)では無変換。

[Receiver](receiver.md)との[接続(connect)](connect.md)時に、[関連付けられた実行ドメイン](get-domain-late.md)に対して[`execution::transform_sender`](transform_sender.md)経由でSender変換が行われる。
[デフォルト実行ドメイン](default_domain.md)では`bulk.transform_sender(out_sndr, env)`が呼ばれ、[`bulk_chunked`](bulk_chunked.md)Senderへと変換される。
[Receiver](receiver.md)との[接続(connect)](connect.md)時に、関連付けられた実行ドメインに対して[`execution::transform_sender`](transform_sender.md)経由でSender変換が行われる。
[デフォルト実行ドメイン](default_domain.md)では`bulk.transform_sender(set_value, out_sndr, env)`が呼ばれ、[`bulk_chunked`](bulk_chunked.md)Senderへと変換される。

説明用の式`out_sndr`を`bulk(sndr, policy, shape, f)`の戻り値[Sender](sender.md)とし、式`rcvr`を式[`connect`](connect.md)`(out_sndr, rcvr)`が適格となる[Receiver](receiver.md)とする。式[`connect`](connect.md)`(out_sndr, rcvr)`は[開始(start)](start.md)時に下記を満たす非同期操作を生成しない場合、動作は未定義となる。

Expand Down Expand Up @@ -135,6 +128,6 @@ int main()


## 参照
- [P2999R3 Sender Algorithm Customization](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2999r3.html)
- [P2300R10 `std::execution`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2300r10.html)
- [P3481R5 `std::execution::bulk()` issues](https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3481r5.html)
- [P3826R5 Fix Sender Algorithm Customization](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2026/p3826r5.html)
12 changes: 4 additions & 8 deletions reference/execution/execution/bulk_chunked.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,11 @@ namespace std::execution {
- `Shape`が[`integral`](/reference/concepts/integral.md)を満たさない、もしくは
- `Func`が[`copy_constructible`](/reference/concepts/copy_constructible.md)のモデルでないとき。

そうでなければ、呼び出し式`bulk_chunked(sndr, policy, shape, f)`は`sndr`が1回だけ評価されることを除いて、下記と等価
そうでなければ、呼び出し式`bulk_chunked(sndr, policy, shape, f)`は下記と等価

```cpp
transform_sender(
get-domain-early(sndr),
make-sender(bulk_chunked, product-type<see below, Shape, Func>{policy, shape, f}, sndr))
make-sender(bulk_chunked, product-type<see below, Shape, Func>{policy, shape, f}, sndr))
```
* transform_sender[link transform_sender.md]
* get-domain-early[link get-domain-early.md]
* make-sender[link make-sender.md]
* product-type[link product-type.md]

Expand Down Expand Up @@ -108,7 +104,7 @@ cs.for-each(overload-set{fn, [](auto){}});


## カスタマイゼーションポイント
Senderアルゴリズム構築時および[Receiver](receiver.md)接続時に、関連付けられた実行ドメインに対して[`execution::transform_sender`](transform_sender.md)経由でSender変換が行われる。
[Receiver](receiver.md)接続時に、関連付けられた実行ドメインに対して[`execution::transform_sender`](transform_sender.md)経由でSender変換が行われる。
[デフォルト実行ドメイン](default_domain.md)では無変換。

説明用の式`out_sndr`を`bulk_chunked(sndr, policy, shape, f)`の戻り値[Sender](sender.md)とし、式`rcvr`を式[`connect`](connect.md)`(out_sndr, rcvr)`が適格となる[Receiver](receiver.md)とする。式[`connect`](connect.md)`(out_sndr, rcvr)`は[開始(start)](start.md)時に下記を満たす非同期操作を生成しない場合、動作は未定義となる。
Expand Down Expand Up @@ -176,8 +172,8 @@ int main()


## 参照
- [P2999R3 Sender Algorithm Customization](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2999r3.html)
- [P2300R10 `std::execution`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2300r10.html)
- [P2079R10 Parallel scheduler](https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p2079r10.html)
- [P3481R5 `std::execution::bulk()` issues](https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3481r5.html)
- [P3557R3 High-Quality Sender Diagnostics with Constexpr Exceptions](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3557r3.html)
- [P3826R5 Fix Sender Algorithm Customization](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2026/p3826r5.html)
12 changes: 4 additions & 8 deletions reference/execution/execution/bulk_unchunked.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,11 @@ namespace std::execution {
- `Shape`が[`integral`](/reference/concepts/integral.md)を満たさない、もしくは
- `Func`が[`copy_constructible`](/reference/concepts/copy_constructible.md)のモデルでないとき。

そうでなければ、呼び出し式`bulk_unchunked(sndr, policy, shape, f)`は`sndr`が1回だけ評価されることを除いて、下記と等価
そうでなければ、呼び出し式`bulk_unchunked(sndr, policy, shape, f)`は下記と等価

```cpp
transform_sender(
get-domain-early(sndr),
make-sender(bulk_unchunked, product-type<see below, Shape, Func>{policy, shape, f}, sndr))
make-sender(bulk_unchunked, product-type<see below, Shape, Func>{policy, shape, f}, sndr))
```
* transform_sender[link transform_sender.md]
* get-domain-early[link get-domain-early.md]
* make-sender[link make-sender.md]
* product-type[link product-type.md]

Expand Down Expand Up @@ -117,7 +113,7 @@ static consteval void check-types();


## カスタマイゼーションポイント
Senderアルゴリズム構築時および[Receiver](receiver.md)接続時に、関連付けられた実行ドメインに対して[`execution::transform_sender`](transform_sender.md)経由でSender変換が行われる。
[Receiver](receiver.md)接続時に、関連付けられた実行ドメインに対して[`execution::transform_sender`](transform_sender.md)経由でSender変換が行われる。
[デフォルト実行ドメイン](default_domain.md)では無変換。

説明用の式`out_sndr`を`bulk_unchunked(sndr, policy, shape, f)`の戻り値[Sender](sender.md)とし、式`rcvr`を式[`connect`](connect.md)`(out_sndr, rcvr)`が適格となる[Receiver](receiver.md)とする。式[`connect`](connect.md)`(out_sndr, rcvr)`は[開始(start)](start.md)時に下記を満たす非同期操作を生成しない場合、動作は未定義となる。
Expand Down Expand Up @@ -182,8 +178,8 @@ int main()


## 参照
- [P2999R3 Sender Algorithm Customization](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2999r3.html)
- [P2300R10 `std::execution`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2300r10.html)
- [P2079R10 Parallel scheduler](https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p2079r10.html)
- [P3481R5 `std::execution::bulk()` issues](https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3481r5.html)
- [P3923R0 Additional NB comment resolutions for Kona 2025](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3923r0.html), US 221-339
- [P3826R5 Fix Sender Algorithm Customization](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2026/p3826r5.html)
42 changes: 0 additions & 42 deletions reference/execution/execution/completion-domain.md

This file was deleted.

4 changes: 2 additions & 2 deletions reference/execution/execution/connect.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,9 @@ namespace std::execution {
説明用の型`Sndr`を`decltype((sndr))`、型`Rcvr`を`decltype((rcvr))`とし、式`new_sndr`を次の通りとする。

```cpp
transform_sender(decltype(get-domain-late(sndr, get_env(rcvr))){}, sndr, get_env(rcvr))
transform_sender(sndr, get_env(rcvr))
```
* transform_sender[link transform_sender.md]
* get-domain-late[link get-domain-late.md]
* get_env[link get_env.md]

式`connect(sndr, rcvr)`は`rcvr`が1回だけ評価されることを除いて、下記と等価。式の型は[`operation_state`](operation_state.md)を満たす。
Expand Down Expand Up @@ -255,3 +254,4 @@ int main()
- [P3557R3 High-Quality Sender Diagnostics with Constexpr Exceptions](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3557r3.html)
- [P3388R3 When Do You Know connect Doesn't Throw?](https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3388r3.pdf)
- [LWG 4208. Wording needs to ensure that in `connect(sndr, rcvr)` that `rcvr` expression is only evaluated once](https://cplusplus.github.io/LWG/issue4208)
- [P3826R5 Fix Sender Algorithm Customization](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2026/p3826r5.html)
Loading
Loading