Skip to content

Commit c2a0c2c

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent 7afa282 commit c2a0c2c

7 files changed

Lines changed: 2623 additions & 3900 deletions

File tree

lang/cpp26/feature_test_macros.html

Lines changed: 4 additions & 4 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-15T05:22:58">
192-
2026年05月15日 05時22分58秒
191+
<span itemprop="datePublished" content="2026-05-18T02:56:37">
192+
2026年05月18日 02時56分37秒
193193
</span>
194194
<br/>
195195
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -546,7 +546,7 @@ <h3>ライブラリ</h3>
546546
</tr>
547547
<tr>
548548
<td><code>__cpp_lib_exception_ptr_cast</code></td>
549-
<td><code>202506L</code></td>
549+
<td><code>202603L</code></td>
550550
<td><code><a href="../../reference/exception/exception_ptr.html">std::exception_ptr</a></code>を指定した<a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>型にキャストする<code><a href="../../reference/exception/exception_ptr_cast.html">std::exception_ptr_cast()</a></code>関数を追加</td>
551551
<td><code><a href="../../reference/exception.html">&lt;exception&gt;</a></code></td>
552552
</tr>
@@ -750,7 +750,7 @@ <h3>ライブラリ</h3>
750750
</tr>
751751
<tr>
752752
<td><code>__cpp_lib_inplace_vector</code></td>
753-
<td><code>202406L</code></td>
753+
<td><code>202603L</code></td>
754754
<td>容量固定の可変長配列のライブラリ<code><a href="../../reference/inplace_vector.html">&lt;inplace_vector&gt;</a></code>を追加</td>
755755
<td><code><a href="../../reference/inplace_vector.html">&lt;inplace_vector&gt;</a></code></td>
756756
</tr>

reference/exception/exception_ptr_cast.html

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868

6969
</head>
7070
<body>
71-
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;exception&#34;], &#34;namespace&#34;: [&#34;std&#34;], &#34;id-type&#34;: [&#34;function&#34;], &#34;cpp&#34;: [&#34;cpp26&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;a8f55ec91fe094adba3fd5fb61bb98d5fbd99e0a&#34;, &#34;source&#34;: &#34;#include &lt;print&gt;\n#include &lt;exception&gt;\n#include &lt;stdexcept&gt;\n\nint main()\n{\n std::exception_ptr ep;\n\n try {\n throw std::runtime_error(\&#34;error!\&#34;);\n }\n catch (...) {\n std::println(\&#34;catch\&#34;);\n ep = std::current_exception(); // \u51e6\u7406\u4e2d\u306e\u4f8b\u5916\u30dd\u30a4\u30f3\u30bf\u3092\u53d6\u5f97\n }\n\n if (const std::runtime_error* e = std::exception_ptr_cast&lt;std::runtime_error&gt;(ep)) {\n std::println(\&#34;exception: {}\&#34;, e-&gt;what());\n }\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;exception&#34;, &#34;exception_ptr_cast&#34;]}">
71+
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;exception&#34;], &#34;namespace&#34;: [&#34;std&#34;], &#34;id-type&#34;: [&#34;function&#34;], &#34;cpp&#34;: [&#34;cpp26&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;9401e8ecf3539ca5ae2a252f35224e4eb5582af6&#34;, &#34;source&#34;: &#34;#include &lt;print&gt;\n#include &lt;exception&gt;\n#include &lt;stdexcept&gt;\n\nint main()\n{\n std::exception_ptr ep;\n\n try {\n throw std::runtime_error(\&#34;error!\&#34;);\n }\n catch (...) {\n std::println(\&#34;catch\&#34;);\n ep = std::current_exception(); // \u51e6\u7406\u4e2d\u306e\u4f8b\u5916\u30dd\u30a4\u30f3\u30bf\u3092\u53d6\u5f97\n }\n\n if (auto e = std::exception_ptr_cast&lt;std::runtime_error&gt;(ep)) {\n std::println(\&#34;exception: {}\&#34;, e-&gt;what());\n }\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;exception&#34;, &#34;exception_ptr_cast&#34;]}">
7272
<nav class="navbar navbar-default" role="navigation">
7373
<div class="container-fluid">
7474
<div class="navbar-header">
@@ -188,8 +188,8 @@
188188

189189
<p class="text-right"><small>
190190
最終更新日時(UTC):
191-
<span itemprop="datePublished" content="2026-01-28T09:55:26">
192-
2026年01月28日 09時55分26秒
191+
<span itemprop="datePublished" content="2026-05-18T02:56:37">
192+
2026年05月18日 02時56分37秒
193193
</span>
194194
<br/>
195195
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -215,7 +215,7 @@
215215
<div class="identifier-type">function</div><div class="header">&lt;exception&gt;</div><h1 itemprop="name"><span class="namespace" title="namespace std">std::</span><span class="token">exception_ptr_cast</span><span class="cpp cpp26" title="C++26で追加">(C++26)</span></h1>
216216
<div itemprop="articleBody"><p><div class="codehilite"><pre><span></span><code><span class="k">namespace</span><span class="w"> </span><span class="nn">std</span><span class="w"> </span><span class="p">{</span>
217217
<span class="w"> </span><span class="k">template</span><span class="w"> </span><span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="nc">E</span><span class="o">&gt;</span>
218-
<span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">E</span><span class="o">*</span>
218+
<span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n"><a href="../optional/optional.html">std::optional</a></span><span class="o">&lt;</span><span class="k">const</span><span class="w"> </span><span class="n">E</span><span class="o">&amp;&gt;</span>
219219
<span class="w"> </span><span class="n">exception_ptr_cast</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n"><a href="exception_ptr.html">exception_ptr</a></span><span class="o">&amp;</span><span class="w"> </span><span class="n">p</span><span class="p">)</span><span class="w"> </span><span class="k">noexcept</span><span class="p">;</span><span class="w"> </span><span class="c1">// (1) C++26</span>
220220

221221
<span class="w"> </span><span class="k">template</span><span class="w"> </span><span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="nc">E</span><span class="o">&gt;</span>
@@ -228,7 +228,7 @@ <h2>概要</h2>
228228
<p><a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>ポインタを指定された<a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>型にキャストする。</p>
229229
<p>この関数は、<code><a href="exception_ptr.html">std::exception_ptr</a></code>オブジェクトに格納されている実際の<a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>型を取り出すために使用できる。<code><a href="rethrow_exception.html">std::rethrow_exception()</a></code>関数でも同様のことはできるが、こちらの方が高速である可能性がある。</p>
230230
<ul>
231-
<li>(1): <code><a href="exception_ptr.html">std::exception_ptr</a></code>オブジェクトを、指定された<a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a><code>E</code>へのポインタに変換して返す</li>
231+
<li>(1): <code><a href="exception_ptr.html">std::exception_ptr</a></code>オブジェクトを、指定された<a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a><code>E</code>への参照を保持した<code><a href="../optional/optional.html">std::optional</a></code>に変換して返す</li>
232232
<li>(2): 右辺値の<code><a href="exception_ptr.html">std::exception_ptr</a></code>オブジェクトを引数にするのは禁止されている</li>
233233
</ul>
234234
<h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成する要素の1つ。Mandates。満たさなければプログラムが不適格となる要件。この要件は、オーバーロード解決によって選択された関数内での`static_assert`の定数条件式や、関数に対するdelete宣言などで表現できる">適格要件</a></h2>
@@ -239,16 +239,16 @@ <h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成
239239
<li><code>E</code>はポインタ型またはメンバポインタ型ではないこと<ul>
240240
<li>注: 型<code>E</code>がポインタ型またはメンバポインタを許可してしまう場合、以下のような問題が起きる</li>
241241
<li>多重継承した派生型のポインタを<a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>送出して基底クラスのポインタ型で捕捉するような場合、<code>catch</code>節に渡ってくるのは送出された直接のポインタ値ではなく、基底クラスがどれなのかを算出するために調整されたポインタ値となり、元の<a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>送出された値には束縛されていないという状況になる</li>
242-
<li>この関数は、元となる<a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>オブジェクトそのものへのポインタを返すことを設計目的にしているため、上記のような問題を避けるために、ポインタ型およびメンバポインタ型は許可されていない</li>
242+
<li>この関数は、元となる<a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>オブジェクトそのものへの参照を返すことを設計目的にしているため、上記のような問題を避けるために、ポインタ型およびメンバポインタ型は許可されていない</li>
243243
</ul>
244244
</li>
245245
</ul>
246246
<h2><a class="cpprefjp-defined-word" data-desc="関数呼び出し式の評価結果となるオブジェクト・値">戻り値</a></h2>
247-
<p><code>p</code>がnullではなく、かつ型<code>const E&amp;</code>のハンドラがその<a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>オブジェクトに対するマッチ条件を満たす場合、<code>p</code>が指す<a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>オブジェクトへのポインタを返す。そうでない場合は、<code>nullptr</code>を返す。</p>
247+
<p><code>p</code>がnullではなく、かつ型<code>const E&amp;</code>のハンドラがその<a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>オブジェクトに対するマッチ条件を満たす場合、<code>p</code>が指す<a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>オブジェクトへの参照を保持した<code><a href="../optional/optional.html">std::optional</a></code>を返す。そうでない場合は、<code><a href="../optional/nullopt_t.html">std::nullopt</a></code>を返す。</p>
248248
<h2><a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a></h2>
249249
<p>投げない</p>
250250
<h2></h2>
251-
<p><div class="yata" id="a8f55ec91fe094adba3fd5fb61bb98d5fbd99e0a"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../print.html">&lt;print&gt;</a></span>
251+
<p><div class="yata" id="9401e8ecf3539ca5ae2a252f35224e4eb5582af6"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../print.html">&lt;print&gt;</a></span>
252252
<span class="cp">#include <a href="../exception.html">&lt;exception&gt;</a></span>
253253
<span class="cp">#include <a href="../stdexcept.html">&lt;stdexcept&gt;</a></span>
254254

@@ -264,7 +264,7 @@ <h2>例</h2>
264264
<span class="w"> </span><span class="n">ep</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n"><a href="current_exception.html">std::current_exception</a></span><span class="p">();</span><span class="w"> </span><span class="c1">// 処理中の例外ポインタを取得</span>
265265
<span class="w"> </span><span class="p">}</span>
266266

267-
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n"><a href="../stdexcept.html">std::runtime_error</a></span><span class="o">*</span><span class="w"> </span><span class="n">e</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n"><span style="color:#ff0000">std::exception_ptr_cast</span></span><span class="o">&lt;</span><span class="n"><a href="../stdexcept.html">std::runtime_error</a></span><span class="o">&gt;</span><span class="p">(</span><span class="n">ep</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
267+
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="k">auto</span><span class="w"> </span><span class="n">e</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n"><span style="color:#ff0000">std::exception_ptr_cast</span></span><span class="o">&lt;</span><span class="n"><a href="../stdexcept.html">std::runtime_error</a></span><span class="o">&gt;</span><span class="p">(</span><span class="n">ep</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
268268
<span class="w"> </span><span class="n"><a href="../print/println.html">std::println</a></span><span class="p">(</span><span class="s">"exception: {}"</span><span class="p">,</span><span class="w"> </span><span class="n">e</span><span class="o">-&gt;</span><span class="n">what</span><span class="p">());</span>
269269
<span class="w"> </span><span class="p">}</span>
270270
<span class="p">}</span>
@@ -289,6 +289,10 @@ <h2>参照</h2>
289289
<ul>
290290
<li><a href="https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p2927r3.html" target="_blank">P2927R3 Inspecting <code>exception_ptr</code></a></li>
291291
<li><a href="https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3748r0.html" target="_blank">P3748R0 Inspecting <code>exception_ptr</code> should be <code>constexpr</code></a></li>
292+
<li><a href="https://open-std.org/jtc1/sc22/wg21/docs/papers/2026/p3981r2.html" target="_blank">P3981R2 Better return types in <code>std::inplace_vector</code> and <code>std::exception_ptr_cast</code></a><ul>
293+
<li><a class="cpprefjp-defined-word" data-desc="関数呼び出し式の評価結果となるオブジェクト・値">戻り値</a>型を<code>const E*</code>から<code><a href="../optional/optional.html">std::optional</a>&lt;const E&amp;&gt;</code>に変更</li>
294+
</ul>
295+
</li>
292296
</ul></div>
293297

294298
</div>

0 commit comments

Comments
 (0)