Skip to content

Commit 7eb8789

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent 44bdc0d commit 7eb8789

22 files changed

Lines changed: 4855 additions & 7196 deletions

reference/execution/execution.html

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,8 @@
188188

189189
<p class="text-right"><small>
190190
最終更新日時(UTC):
191-
<span itemprop="datePublished" content="2026-05-16T15:17:02">
192-
2026年05月16日 15時17分02秒
191+
<span itemprop="datePublished" content="2026-06-06T16:11:27">
192+
2026年06月06日 16時11分27秒
193193
</span>
194194
<br/>
195195
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -315,6 +315,11 @@ <h3>Queries</h3>
315315
<td>C++26</td>
316316
</tr>
317317
<tr>
318+
<td><code><a href="execution/get_start_scheduler.html">execution::get_start_scheduler</a></code></td>
319+
<td>開始Scheduler取得のクエリオブジェクト (customization point object)</td>
320+
<td>C++26</td>
321+
</tr>
322+
<tr>
318323
<td><code><a href="execution/get_delegation_scheduler.html">execution::get_delegation_scheduler</a></code></td>
319324
<td>委任Scheduler取得のクエリオブジェクト (customization point object)</td>
320325
<td>C++26</td>
@@ -805,11 +810,6 @@ <h3>コルーチンユーティリティ</h3>
805810
<td>C++26</td>
806811
</tr>
807812
<tr>
808-
<td><code><a href="execution/change_coroutine_scheduler.html">execution::change_coroutine_scheduler</a></code></td>
809-
<td>タスクコルーチンのScheduler変更 (class template)</td>
810-
<td>C++26</td>
811-
</tr>
812-
<tr>
813813
<td><code><a href="execution/task.html">execution::task</a></code></td>
814814
<td>タスクコルーチン<a class="cpprefjp-defined-word" data-desc="関数呼び出し式の評価結果となるオブジェクト・値">戻り値</a>型 (class template)</td>
815815
<td>C++26</td>
@@ -896,6 +896,7 @@ <h2>参照</h2>
896896
<li><a href="https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3815r1.html" target="_blank">P3815R1 Add <code>scope_association</code> concept to P3149</a></li>
897897
<li><a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2026/p3986r1.pdf" target="_blank">P3986R1 A Wording Strategy for Inlinable Receivers</a></li>
898898
<li><a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2026/p3826r5.html" target="_blank">P3826R5 Fix Sender Algorithm Customization</a></li>
899+
<li><a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2026/p3941r4.html" target="_blank">P3941R4 Scheduler Affinity</a></li>
899900
</ul></div>
900901

901902
</div>

reference/execution/execution/affine_on.html

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@
2828
<meta property="og:url" content="https://cpprefjp.github.io/reference/execution/execution/affine_on.html" />
2929
<meta property="og:site_name" content="cpprefjp - C++日本語リファレンス" />
3030
<meta property="og:type" content="article" />
31-
<meta property="og:description" content="`affine_on`は、指定[Scheduler](scheduler.md)上で完了させるSenderアダプタである。" />
31+
<meta property="og:description" content="`affine_on`は、[Receiver](receiver.md)の[Scheduler](scheduler.md)上で完了させるSenderアダプタである。" />
3232
<meta name="twitter:card" content="summary" />
3333
<meta name="twitter:title" content="std::execution::affine_on - cpprefjp C++日本語リファレンス" />
3434
<meta name="twitter:url" content="https://cpprefjp.github.io/reference/execution/execution/affine_on.html" />
35-
<meta name="twitter:description" content="`affine_on`は、指定[Scheduler](scheduler.md)上で完了させるSenderアダプタである。" />
35+
<meta name="twitter:description" content="`affine_on`は、[Receiver](receiver.md)の[Scheduler](scheduler.md)上で完了させるSenderアダプタである。" />
3636

3737

3838
<link rel="alternate" type="application/atom+xml" title="Atom" href="https://cpprefjp.github.io/rss.xml" />
@@ -200,8 +200,8 @@
200200

201201
<p class="text-right"><small>
202202
最終更新日時(UTC):
203-
<span itemprop="datePublished" content="2026-05-16T15:17:02">
204-
2026年05月16日 15時17分02秒
203+
<span itemprop="datePublished" content="2026-06-06T16:24:43">
204+
2026年06月06日 16時24分43秒
205205
</span>
206206
<br/>
207207
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -232,28 +232,45 @@
232232
</code></pre></div>
233233
</p>
234234
<h2>概要</h2>
235-
<p><code>affine_on</code>は、指定<a href="scheduler.html">Scheduler</a>上で完了させるSenderアダプタである。
235+
<p><code>affine_on</code>は、<a href="receiver.html">Receiver</a><a href="scheduler.html">Scheduler</a>上で完了させるSenderアダプタである。
236236
アダプト対象Senderが正しいScheduler上で完了すると判断できるとき、アルゴリズムはスケジューリング操作を回避できる。</p>
237237
<p><code>affine_on</code><a href="sender_adaptor_closure.html">パイプ可能Senderアダプタオブジェクト</a>であり、パイプライン記法をサポートする。</p>
238238
<h2>効果</h2>
239-
<p>説明用の式<code>sch</code><code>sndr</code>に対して、<code>decltype((sch))</code><code><a href="scheduler.html">scheduler</a></code>を満たさない、もしくは<code>decltype((sndr))</code><code><a href="sender.html">sender</a></code>を満たさないとき、呼び出し式<code>affine_on(sndr, sch)</code><a class="cpprefjp-defined-word" data-desc="プログラムが適格でないこと。コンパイルエラーなどになる" href="../../../implementation-compliance.html#dfn-ill-formed">不適格</a>となる。</p>
240-
<p>そうでなければ、呼び出し式<code>affine_on(sndr, sch)</code>は下記と等価。</p>
241-
<p><div class="codehilite"><pre><span></span><code><span class="n"><a href="make-sender.html">make-sender</a></span><span class="p">(</span><span class="n">affine_on</span><span class="p">,</span><span class="w"> </span><span class="n">sch</span><span class="p">,</span><span class="w"> </span><span class="n">sndr</span><span class="p">)</span>
239+
<p>説明用の式<code>sndr</code>に対して、<code>decltype((sndr))</code><code><a href="sender.html">sender</a></code>を満たさないとき、呼び出し式<code>affine_on(sndr)</code><a class="cpprefjp-defined-word" data-desc="プログラムが適格でないこと。コンパイルエラーなどになる" href="../../../implementation-compliance.html#dfn-ill-formed">不適格</a>となる。</p>
240+
<p>そうでなければ、呼び出し式<code>affine_on(sndr)</code>は下記と等価。</p>
241+
<p><div class="codehilite"><pre><span></span><code><span class="n"><a href="make-sender.html">make-sender</a></span><span class="p">(</span><span class="n">affine_on</span><span class="p">,</span><span class="w"> </span><span class="n"><a href="env.html">env&lt;&gt;</a></span><span class="p">(),</span><span class="w"> </span><span class="n">sndr</span><span class="p">)</span>
242+
</code></pre></div>
243+
</p>
244+
<h3>Senderアルゴリズムタグ <code>affine_on</code></h3>
245+
<p>型が<code><a href="scheduler.html">scheduler</a></code>のモデルである部分式<code>sch</code>に対して、説明用の式<code>UNSTOPPABLE-SCHEDULER(sch)</code>を、その型が<code><a href="scheduler.html">scheduler</a></code>のモデルである式<code>e</code>とする。</p>
246+
<ul>
247+
<li><code><a href="schedule.html">schedule</a>(e)</code><code><a href="unstoppable.html">unstoppable</a>(<a href="schedule.html">schedule</a>(sch))</code>と等価な式。</li>
248+
<li>任意の<a href="../queryable.html">クエリオブジェクト</a><code>q</code>と部分式のパック<code>args...</code>に対して、式<code>e.query(q, args...)</code><code>sch.query(q, args...)</code>と等価な式。</li>
249+
<li><code>e == UNSTOPPABLE-SCHEDULER(other)</code><code>sch == other</code>と等価な式。</li>
250+
</ul>
251+
<p>説明用の式<code>sndr</code><code>ev</code>に対して、<code><a href="sender-for.html">sender-for</a>&lt;decltype((sndr)), affine_on_t&gt; == false</code>のとき、式<code>affine_on.transform_sender(sndr, ev)</code><a class="cpprefjp-defined-word" data-desc="プログラムが適格でないこと。コンパイルエラーなどになる" href="../../../implementation-compliance.html#dfn-ill-formed">不適格</a>となる。</p>
252+
<p>そうでなければ、式<code>affine_on.transform_sender(sndr, ev)</code>は下記と等価。</p>
253+
<p><div class="codehilite"><pre><span></span><code><span class="k">auto</span><span class="o">&amp;</span><span class="w"> </span><span class="p">[</span><span class="n">_</span><span class="p">,</span><span class="w"> </span><span class="n">_</span><span class="p">,</span><span class="w"> </span><span class="n">child</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sndr</span><span class="p">;</span>
254+
<span class="k">if</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="p">(</span><span class="k">requires</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n"><a href="../../utility/forward_like.html">std::forward_like</a></span><span class="o">&lt;</span><span class="n">Sndr</span><span class="o">&gt;</span><span class="p">(</span><span class="n">child</span><span class="p">).</span><span class="n">affine_on</span><span class="p">();</span><span class="w"> </span><span class="p">})</span><span class="w"> </span><span class="p">{</span>
255+
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n"><a href="../../utility/forward_like.html">std::forward_like</a></span><span class="o">&lt;</span><span class="n">Sndr</span><span class="o">&gt;</span><span class="p">(</span><span class="n">child</span><span class="p">).</span><span class="n">affine_on</span><span class="p">();</span>
256+
<span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
257+
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n"><a href="continues_on.html">continues_on</a></span><span class="p">(</span><span class="n"><a href="../../utility/forward_like.html">std::forward_like</a></span><span class="o">&lt;</span><span class="n">Sndr</span><span class="o">&gt;</span><span class="p">(</span><span class="n">child</span><span class="p">),</span>
258+
<span class="w"> </span><span class="n">UNSTOPPABLE</span><span class="o">-</span><span class="n">SCHEDULER</span><span class="p">(</span><span class="n"><a href="get_start_scheduler.html">get_start_scheduler</a></span><span class="p">(</span><span class="n">ev</span><span class="p">)));</span>
259+
<span class="p">}</span>
242260
</code></pre></div>
243261
</p>
244262
<h2>カスタマイゼーションポイント</h2>
245263
<p><a href="receiver.html">Receiver</a>接続時に、関連付けられた実行ドメインに対して<code><a href="transform_sender.html">execution::transform_sender</a></code>経由でSender変換が行われる。
246264
<a href="default_domain.html">デフォルト実行ドメイン</a>では無変換。</p>
247-
<p>説明用の式<code>out_sndr</code><code>affine_on(sndr, sch)</code><a class="cpprefjp-defined-word" data-desc="関数呼び出し式の評価結果となるオブジェクト・値">戻り値</a><a href="sender.html">Sender</a>とし、型<code>OutSndr</code><code>decltype((out_sndr))</code>とする。式<code>out_rcvr</code><code><a href="sender_in.html">sender_in</a>&lt;OutSndr, Env&gt; == true</code>となる<a href="../queryable.html">環境</a><code>Env</code>に関連付けられた<a href="receiver.html">Receiver</a>とする。<code>out_sndr</code><code>out_rcvr</code>との<a href="connect.html">接続(connect)</a>結果<a href="operation_state.html">Operation State</a>への左辺値参照を<code>op</code>としたとき、</p>
265+
<p>説明用の式<code>out_sndr</code><code>affine_on(sndr)</code><a class="cpprefjp-defined-word" data-desc="関数呼び出し式の評価結果となるオブジェクト・値">戻り値</a><a href="sender.html">Sender</a>とし、型<code>OutSndr</code><code>decltype((out_sndr))</code>とする。式<code>out_rcvr</code><a href="../queryable.html">環境</a><code>Env</code>に関連付けられた<a href="receiver.html">Receiver</a>とする。<code><a href="get_start_scheduler.html">get_start_scheduler</a>(<a href="get_env.html">get_env</a>(out_rcvr))</code><a class="cpprefjp-defined-word" data-desc="プログラムが適格でないこと。コンパイルエラーなどになる" href="../../../implementation-compliance.html#dfn-ill-formed">不適格</a>もしくは<code><a href="infallible-scheduler.html">infallible-scheduler</a>&lt;Env&gt;</code>を満たさないとき、式<code><a href="get_completion_signatures.html">get_completion_signatures</a>&lt;OutSndr, Env&gt;()</code>の評価は<a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>で終了する。<code>out_sndr</code><code>out_rcvr</code>との<a href="connect.html">接続(connect)</a>結果<a href="operation_state.html">Operation State</a>への左辺値参照を<code>op</code>としたとき、</p>
248266
<ul>
249267
<li>呼び出し<code><a href="start.html">start</a>(op)</code>は、現在の実行エージェント上で入力<a href="sender.html">Sender</a><code>sndr</code>を開始し、<a href="scheduler.html">Scheduler</a><code>sch</code>に関連付けられた実行リソースに属する実行エージェント上で<code>out_rcvr</code>の完了操作が実行される。</li>
250268
<li>現在の実行リソースが<code>sch</code>に関連付けられた実行リソースと同一のとき、<code><a href="start.html">start</a>(op)</code>の完了よりも前に<code>out_rcvr</code>の完了操作が呼ばれる可能性がある。</li>
251-
<li><code>sch</code>上でのスケジューリングが失敗した場合、<a class="cpprefjp-defined-word" data-desc="未規定の動作。事前の断りなく処理系によって異なる動作をする" href="../../../implementation-compliance.html#dfn-unspecified-behavior">未規定</a>の実行エージェント上で<code>out_rcvr</code><a href="set_error.html">エラー完了</a>が行われるべき。</li>
252269
</ul>
253270
<h2>備考</h2>
254-
<p><code>affine_on</code>アルゴリズムの動作は<code><a href="continues_on.html">continues_on</a></code>と等価だが、処理系は不要なスケジューリング操作を省略(最適化)する可能性がある。</p>
255271
<p><code>affine_on</code><a href="task.html">タスクコルーチン</a>のScheduler Affinity実現に用いられる。
256272
詳細仕様は<code><a href="task/promise_type/await_transform.html">task::promise::await_transform</a></code>を参照のこと。</p>
273+
<p>開始された<a href="scheduler.html">Scheduler</a>上で再開(resume)されると分かっている<a href="sender.html">Sender</a>に対して、処理系(標準ライブラリ実装)は<code>affine_on</code>メンバ関数を提供すべきである。そのようなSenderの例として、<code><a href="just.html">just</a></code>, <code><a href="just_error.html">just_error</a></code>, <code><a href="just_stopped.html">just_stopped</a></code>, <code><a href="read_env.html">read_env</a></code>, <code><a href="write_env.html">write_env</a></code>等がある。</p>
257274
<h2>バージョン</h2>
258275
<h3>言語</h3>
259276
<ul>
@@ -274,6 +291,7 @@ <h2>参照</h2>
274291
<ul>
275292
<li><a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3552r3.html" target="_blank">P3552R3 Add a Coroutine Task Type</a></li>
276293
<li><a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2026/p3826r5.html" target="_blank">P3826R5 Fix Sender Algorithm Customization</a></li>
294+
<li><a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2026/p3941r4.html" target="_blank">P3941R4 Scheduler Affinity</a></li>
277295
</ul></div>
278296

279297
</div>

0 commit comments

Comments
 (0)