44* namespace[ meta id-type]
55* cpp17[ meta cpp]
66
7- 名前空間 ` std::execution ` では、アルゴリズムの並列実行を許可するための実行ポリシーに関する機能の定義を行う。
7+ 名前空間 ` std::execution ` では、アルゴリズムの並列実行を許可するための実行ポリシー、汎用的な非同期実行フレームワークとしての実行制御ライブラリを定義する。
8+ (実行制御ライブラリの一部は名前空間 ` std ` および ` std::this_thread ` で定義されるが、本ページでまとめて取り扱う。)
89
910``` cpp
1011namespace std ::execution {
1112 …
1213}
1314```
1415
16+ ## 実行ポリシー(C++17)
1517
1618| 名前 | 説明 | 対応バージョン |
1719|------|------|----------------|
@@ -24,7 +26,140 @@ namespace std::execution {
2426| [`par_unseq`](execution/execution_policy.md) | マルチスレッド化/ベクトル化の実行ポリシー値 (variable) | C++17 |
2527| [`unseq`](execution/execution_policy.md) | ベクトル化の実行ポリシー値 (variable) | C++20 |
2628
29+ 実行ポリシーは全て名前空間 `std::execution` で定義される。
30+
31+
32+ ## 実行制御ライブラリ(C++26)
33+
34+ ### Queries
35+
36+ | 名前 | 説明 | 対応バージョン |
37+ |------|------|----------------|
38+ | [`forwarding_query`](forwarding_query.md.nolink) | 進行保証の問い合わせオブジェクト (customization point object) | C++26 |
39+ | [`get_allocator`](get_allocator.md.nolink) | アロケータ取得の問い合わせオブジェクト (customization point object) | C++26 |
40+ | [`get_stop_token`](get_stop_token.md.nolink) | 停止トークン取得の問い合わせオブジェクト (customization point object) | C++26 |
41+ | [`stop_token_of_t`](get_stop_token.md.nolink) | 指定型から停止トークン型を取得 (alias template) | C++26 |
42+ | [`execution::get_domain`](execution/get_domain.md.nolink) | 実行ドメイン取得の問い合わせオブジェクト (customization point object) | C++26 |
43+ | [`execution::get_scheduler`](execution/get_scheduler.md.nolink) | Scheduler取得の問い合わせオブジェクト (customization point object) | C++26 |
44+ | [`execution::get_delegation_scheduler`](execution/get_delegation_scheduler.md.nolink) | 委譲Scheduler取得の問い合わせオブジェクト (customization point object) | C++26 |
45+ | [`execution::forward_progress_guarantee`](execution/forward_progress_guarantee.md.nolink) | 前進保証 (enum) | C++26 |
46+ | [`execution::get_forward_progress_guarantee`](execution/get_forward_progress_guarantee.md.nolink) | 前進保証取得の問い合わせオブジェクト (customization point object) | C++26 |
47+ | [`execution::get_completion_scheduler`](execution/get_completion_scheduler.md.nolink) | 完了Scheduler取得の問い合わせオブジェクト (customization point object) | C++26 |
48+ | [`execution::get_env`](execution/get_env.md.nolink) | 環境取得の問い合わせオブジェクト (customization point object) | C++26 |
49+ | [`execution::env_of_t`](execution/env_of_t.md.nolink) | 指定型から環境型を取得 (alias template) | C++26 |
50+ | [`execution::prop`](execution/prop.md.nolink) | プロパティ(class template) | C++26 |
51+ | [`execution::env`](execution/env.md.nolink) | 環境 (class template) | C++26 |
52+
53+ 問い合わせオブジェクトは名前空間 `std` および名前空間 `std::execution` で定義される。
54+
55+ ### Scheduler
56+
57+ | 名前 | 説明 | 対応バージョン |
58+ |------|------|----------------|
59+ | [`execution::scheduler`](execution/scheduler.md.nolink) | Scheduler (concept) | C++26 |
60+
61+ ### Reciever
62+
63+ | 名前 | 説明 | 対応バージョン |
64+ |------|------|----------------|
65+ | [`execution::receiver`](execution/receiver.md.nolink) | Reciever (concept) | C++26 |
66+ | [`execution::receiver_of`](execution/receiver_of.md.nolink) | 完了ハンドラ指定Reciever (concept) | C++26 |
67+ | [`execution::set_value`](execution/set_value.md.nolink) | 値による完了関数 (customization point object) | C++26 |
68+ | [`execution::set_error`](execution/set_error.md.nolink) | エラーによる完了関数 (customization point object) | C++26 |
69+ | [`execution::set_stopped`](execution/set_stopped.md.nolink) | 停止による完了関数 (customization point object) | C++26 |
70+
71+ ### Operation State
72+
73+ | 名前 | 説明 | 対応バージョン |
74+ |------|------|----------------|
75+ | [`execution::operation_state`](execution/operation_state.md.nolink) | Operation State (concept) | C++26 |
76+ | [`execution::start`](execution/start.md.nolink) | 非同期操作の開始 (customization point object) | C++26 |
77+
78+ ### Sender
79+
80+ | 名前 | 説明 | 対応バージョン |
81+ |------|------|----------------|
82+ | [`execution::default_domain`](execution/default_domain.md.nolink) | デフォルト実行ドメイン (class) | C++26 |
83+ | [`execution::sender`](execution/sender.md.nolink) | Sender (concept) | C++26 |
84+ | [`execution::sender_in`](execution/sender_in.md.nolink) | 環境に対応するSender (concept) | C++26 |
85+ | [`execution::sender_to`](execution/sender_to.md.nolink) | Recieverに対応するSender (concept) | C++26 |
86+ | [`execution::get_completion_signatures`](execution/get_completion_signatures.md.nolink) | 完了シグネチャ取得の問い合わせオブジェクト (customization point object) | C++26 |
87+ | [`execution::completion_signatures_of_t`](execution/get_completion_signatures.md.nolink) | Senderから完了シグネチャを取得 (alias template) | C++26 |
88+ | [`execution::value_types_of_t`](execution/value_types_of_t.md.nolink) | Senderの値完了型を取得 (alias template) | C++26 |
89+ | [`execution::error_types_of_t`](execution/error_types_of_t.md.nolink) | Senderのエラー完了型を取得 (alias template) | C++26 |
90+ | [`execution::sends_stopped`](execution/value_types_of_t.md.nolink) | Senderが停止完了に対応するか否か (variable template) | C++26 |
91+ | [`execution::tag_of_t`](execution/tag_of_t.md.nolink) | Senderのタグ型を取得 (alias template) | C++26 |
92+ | [`execution::transform_sender`](execution/transform_sender.md.nolink) | Senderを変換 (function template) | C++26 |
93+ | [`execution::transform_env`](execution/transform_env.md.nolink) | 問い合わせオブジェクトを変換 (function template) | C++26 |
94+ | [`execution::apply_sender`](execution/apply_sender.md.nolink) | Senderにタグ型と引数を適用 (function template) | C++26 |
95+ | [`execution::connect`](execution/connect.md.nolink) | SenderとRecieverを接続 (customization point object) | C++26 |
96+ | [`execution::connect_result_t`](execution/connect_result_t.md.nolink) | `connect`結果型を取得 (alias template) | C++26 |
97+
98+ ### Senderファクトリ
99+
100+ | 名前 | 説明 | 対応バージョン |
101+ |------|------|----------------|
102+ | [`execution::just`](execution/just.md.nolink) | 値を送信するSender (customization point object) | C++26 |
103+ | [`execution::just_error`](execution/just_error.md.nolink) | エラーを送信するSender (customization point object) | C++26 |
104+ | [`execution::just_stopped`](execution/just_stopped.md.nolink) | 停止を送信するSender (customization point object) | C++26 |
105+ | [`execution::read_env`](execution/read_env.md.nolink) | Reciever環境から構築されるSender (customization point object) | C++26 |
106+ | [`execution::schedule`](execution/schedule.md.nolink) | Scheduler上で実行されるSender (customization point object) | C++26 |
107+ | [`execution::schedule_result_t`](execution/schedule_result_t.md.nolink) | `schedule`結果型を取得 (alias template) | C++26 |
108+
109+ ### Senderアダプタ
110+
111+ | 名前 | 説明 | 対応バージョン |
112+ |------|------|----------------|
113+ | [`execution::sender_adaptor_closure`](execution/sender_adaptor_closure.md.nolink) | Senderアダプタ実装用クロージャ型(class template) | C++26 |
114+ | [`execution::starts_on`](execution/starts_on.md.nolink) | 指定Scheduler上で開始する (customization point object) | C++26 |
115+ | [`execution::continues_on`](execution/continues_on.md.nolink) | 指定Scheduler上で継続する (customization point object) | C++26 |
116+ | [`execution::on`](execution/on.md.nolink) | 指定Scheduler上で実行する (customization point object) | C++26 |
117+ | [`execution::schedule_from`](execution/schedule_from.md.nolink) | Sender完了に依存する作業をスケジュール (customization point object) | C++26 |
118+ | [`execution::then`](execution/then.md.nolink) | 値完了時の継続処理をアタッチ (customization point object) | C++26 |
119+ | [`execution::upon_error`](execution/upon_error.md.nolink) | エラー完了時の継続処理をアタッチ (customization point object) | C++26 |
120+ | [`execution::upon_stopped`](execution/upon_stopped.md.nolink) | 停止完了時の継続処理をアタッチ (customization point object) | C++26 |
121+ | [`execution::let_value`](execution/let_value.md.nolink) | 値完了の継続にユーザ定義処理を連結 (customization point object) | C++26 |
122+ | [`execution::let_error`](execution/let_error.md.nolink) | エラー完了の継続にユーザ定義処理を連結 (customization point object) | C++26 |
123+ | [`execution::let_stopped`](execution/let_stopped.md.nolink) | 停止完了の継続にユーザ定義処理を連結 (customization point object) | C++26 |
124+ | [`execution::bulk`](execution/bulk.md.nolink) | インデクス空間上で指定関数を連続実行 (customization point object) | C++26 |
125+ | [`execution::split`](execution/split.md.nolink) | 入力Senderの値を複製送信 (customization point object) | C++26 |
126+ | [`execution::when_all`](execution/when_all.md.nolink) | 全ての入力Sender完了を待機 (customization point object) | C++26 |
127+ | [`execution::when_all_with_variant`](execution/when_all_with_variant.md.nolink) | 複数の値完了シグネチャをもつ全ての入力Sender完了を待機 (customization point object) | C++26 |
128+ | [`execution::into_variant`](execution/into_variant.md.nolink) | 複数の値完了シグネチャを単一[`variant`](/reference/variant/variant.md)型の値完了シグネチャに変換 (customization point object) | C++26 |
129+ | [`execution::stopped_as_optional`](execution/stopped_as_optional.md.nolink) | 入力Senderの停止完了を[`optional`](/reference/optional/optional.md)型の値完了に変換 (customization point object) | C++26 |
130+ | [`execution::stopped_as_error`](execution/stopped_as_error.md.nolink) | 入力Senderの停止完了をエラー完了に変換 (customization point object) | C++26 |
131+
132+ ### Senderコンシューマ
133+
134+ | 名前 | 説明 | 対応バージョン |
135+ |------|------|----------------|
136+ | [`this_thread::sync_wait`](this_thread/sync_wait.md.nolink) | 現在のスレッド上でSender完了を待機 (customization point object) | C++26 |
137+ | [`this_thread::sync_wait_with_variant`](this_thread/sync_wait_with_variant.md.nolink) | 現在のスレッド上でSender完了を待機 (customization point object) | C++26 |
138+
139+ Senderコンシューマは名前空間 `std::this_thread` で定義される。
140+
141+ ### Sender/Recieverユーティリティ
142+
143+ | 名前 | 説明 | 対応バージョン |
144+ |------|------|----------------|
145+ | [`execution::completion_signatures`](execution/completion_signatures.md.nolink) | 完了シグネチャ (class template) | C++26 |
146+ | [`execution::transform_completion_signatures`](execution/transform_completion_signatures.md.nolink) | 完了シグネチャを変換 (alias template) | C++26 |
147+ | [`execution::transform_completion_signatures_of`](execution/transform_completion_signatures_of.md.nolink) | 完了シグネチャを変換 (alias template) | C++26 |
148+ | [`execution::run_loop`](execution/run_loop.md.nolink) | 実行ループ (class) | C++26 |
149+
150+ ### コルーチンユーティリティ
151+
152+ | 名前 | 説明 | 対応バージョン |
153+ |------|------|----------------|
154+ | [`execution::as_awaitable`](execution/as_awaitable.md.nolink) | Senderを[Awaitable型](/lang/cpp20/coroutines.md)へ変換 (customization point object) | C++26 |
155+ | [`execution::with_awaitable_senders`](execution/with_awaitable_senders.md.nolink) | [Promise型](/lang/cpp20/coroutines.md)の基底クラス (class template) | C++26 |
156+
27157
28158## バージョン
29159### 言語
30160- C++17
161+ - C++26 実行制御ライブラリ
162+
163+ ## 参照
164+ - [P0024R2 The Parallelism TS Should be Standardized](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0024r2.html)
165+ - [P2300R10 `std::execution`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2300r10.html)
0 commit comments