|
200 | 200 |
|
201 | 201 | <p class="text-right"><small> |
202 | 202 | 最終更新日時(UTC): |
203 | | - <span itemprop="datePublished" content="2026-01-20T07:36:33"> |
204 | | - 2026年01月20日 07時36分33秒 |
| 203 | + <span itemprop="datePublished" content="2026-01-20T11:10:28"> |
| 204 | + 2026年01月20日 11時10分28秒 |
205 | 205 | </span> |
206 | 206 | <br/> |
207 | 207 | <span itemprop="author" itemscope itemtype="http://schema.org/Person"> |
@@ -249,7 +249,7 @@ <h2>効果</h2> |
249 | 249 | </ul> |
250 | 250 | <p>呼び出し式<code>spawn(sndr, token, env)</code>は<code>void</code>型であり、次の効果をもつ。</p> |
251 | 251 | <ul> |
252 | | -<li><code>alloc</code>を用いてメモリ確保し、<code>alloc</code>, <code><a href="write_env.html">write_env</a>(token.wrap(sndr), senv)</code>, <code>token</code>から特殊化された<code>spawn-state</code>型のオブジェクト<code>o</code>を構築し、<code>o.run()</code>を呼び出す。いずれかのオブジェクト構築・破棄時に<a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>送出されたときは、確保されたメモリが解放される。</li> |
| 252 | +<li><code>alloc</code>を用いてメモリ確保し、<code>alloc</code>, <code><a href="write_env.html">write_env</a>(token.wrap(sndr), senv)</code>, <code>token</code>から<code>decltype(spawn-state(alloc, write_env(token.wrap(sndr), senv), token))</code>型のオブジェクト<code>o</code>を構築し、<code>o.run()</code>を呼び出す。いずれかのオブジェクト構築・破棄時に<a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>送出されたときは、確保されたメモリが解放される。</li> |
253 | 253 | </ul> |
254 | 254 | <p>呼び出し式<code>spawn(sndr, token)</code>は、式<code>spawn(sndr, token, <a href="env.html">execution::env<></a>())</code>と等価である。</p> |
255 | 255 | <h2>説明専用エンティティ</h2> |
@@ -284,12 +284,10 @@ <h3>クラステンプレート<code>spawn-state</code></h3> |
284 | 284 | <span class="kt">void</span> <span class="nf">run</span><span class="p">()</span> <span class="k">noexcept</span><span class="p">;</span> <span class="c1">// exposition only</span> |
285 | 285 |
|
286 | 286 | <span class="k">private</span><span class="o">:</span> |
287 | | - <span class="k">using</span> <span class="n">alloc</span><span class="o">-</span><span class="n">t</span> <span class="o">=</span> <span class="c1">// exposition only</span> |
288 | | - <span class="k">typename</span> <span class="n"><a href="../../memory/allocator_traits.html">allocator_traits</a></span><span class="o"><</span><span class="n">Alloc</span><span class="o">>::</span><span class="k">template</span> <span class="n">rebind_alloc</span><span class="o"><</span><span class="n">spawn</span><span class="o">-</span><span class="n">state</span><span class="o">></span><span class="p">;</span> |
289 | 287 | <span class="k">using</span> <span class="n">assoc</span><span class="o">-</span><span class="n">t</span> <span class="o">=</span> <span class="c1">// exposition only</span> |
290 | 288 | <span class="n"><a href="../../type_traits/remove_cvref.html">remove_cvref_t</a></span><span class="o"><</span><span class="k">decltype</span><span class="p">(</span><span class="n"><a href="../../utility/declval.html">declval</a></span><span class="o"><</span><span class="n">Token</span><span class="o">&></span><span class="p">().</span><span class="n">try_associate</span><span class="p">())</span><span class="o">></span><span class="p">;</span> |
291 | 289 |
|
292 | | - <span class="n">alloc</span><span class="o">-</span><span class="n">t</span> <span class="n">alloc</span><span class="p">;</span> <span class="c1">// exposition only</span> |
| 290 | + <span class="n">Alloc</span> <span class="n">alloc</span><span class="p">;</span> <span class="c1">// exposition only</span> |
293 | 291 | <span class="n">op</span><span class="o">-</span><span class="n">t</span> <span class="n">op</span><span class="p">;</span> <span class="c1">// exposition only</span> |
294 | 292 | <span class="n">assoc</span><span class="o">-</span><span class="n">t</span> <span class="n">assoc</span><span class="p">;</span> <span class="c1">// exposition only</span> |
295 | 293 | <span class="p">};</span> |
@@ -328,10 +326,12 @@ <h3>クラステンプレート<code>spawn-state</code></h3> |
328 | 326 | <li> |
329 | 327 | <p>効果 : 下記と等価</p> |
330 | 328 | <p><div class="codehilite"><pre><span></span><code><span class="k">auto</span> <span class="n">assoc</span> <span class="o">=</span> <span class="n"><a href="../../utility/move.html">std::move</a></span><span class="p">(</span><span class="k">this</span><span class="o">-></span><span class="n">assoc</span><span class="p">);</span> |
331 | | -<span class="k">auto</span> <span class="n">alloc</span> <span class="o">=</span> <span class="n"><a href="../../utility/move.html">std::move</a></span><span class="p">(</span><span class="k">this</span><span class="o">-></span><span class="n">alloc</span><span class="p">);</span> |
332 | | - |
333 | | -<span class="n"><a href="../../memory/allocator_traits.html">allocator_traits</a></span><span class="o"><</span><span class="n">alloc</span><span class="o">-</span><span class="n">t</span><span class="o">>::</span><span class="n"><a href="../../memory/allocator_traits/destroy.html">destroy</a></span><span class="p">(</span><span class="n">alloc</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span> |
334 | | -<span class="n"><a href="../../memory/allocator_traits.html">allocator_traits</a></span><span class="o"><</span><span class="n">alloc</span><span class="o">-</span><span class="n">t</span><span class="o">>::</span><span class="n"><a href="../../memory/allocator_traits/deallocate.html">deallocate</a></span><span class="p">(</span><span class="n">alloc</span><span class="p">,</span> <span class="k">this</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span> |
| 329 | +<span class="p">{</span> |
| 330 | + <span class="k">using</span> <span class="n">traits</span> <span class="o">=</span> <span class="n"><a href="../../memory/allocator_traits.html">allocator_traits</a></span><span class="o"><</span><span class="n">Alloc</span><span class="o">>::</span><span class="k">template</span> <span class="n">rebind_traits</span><span class="o"><</span><span class="n">spawn</span><span class="o">-</span><span class="n">state</span><span class="o">></span><span class="p">;</span> |
| 331 | + <span class="k">typename</span> <span class="n">traits</span><span class="o">::</span><span class="n">allocator_type</span> <span class="n">alloc</span><span class="p">(</span><span class="k">this</span><span class="o">-></span><span class="n">alloc</span><span class="p">);</span> |
| 332 | + <span class="n">traits</span><span class="o">::</span><span class="n"><a href="../../memory/allocator_traits/destroy.html">destroy</a></span><span class="p">(</span><span class="n">alloc</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span> |
| 333 | + <span class="n">traits</span><span class="o">::</span><span class="n"><a href="../../memory/allocator_traits/deallocate.html">deallocate</a></span><span class="p">(</span><span class="n">alloc</span><span class="p">,</span> <span class="k">this</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span> |
| 334 | +<span class="p">}</span> |
335 | 335 | </code></pre></div> |
336 | 336 | </p> |
337 | 337 | </li> |
@@ -388,6 +388,7 @@ <h2>参照</h2> |
388 | 388 | <ul> |
389 | 389 | <li><a href="https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3149r11.html" target="_blank">P3149R11 <code>async_scope</code> - Creating scopes for non-sequential concurrency</a></li> |
390 | 390 | <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> |
| 391 | +<li><a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3923r0.html" target="_blank">P3923R0 Additional NB comment resolutions for Kona 2025</a>, US 227-346, 229-347</li> |
391 | 392 | </ul></div> |
392 | 393 |
|
393 | 394 | </div> |
|
0 commit comments