Skip to content

Commit 9443c2d

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent 764472a commit 9443c2d

File tree

6 files changed

+346
-1251
lines changed

6 files changed

+346
-1251
lines changed

reference/contracts.html

Lines changed: 57 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,8 @@
176176

177177
<p class="text-right"><small>
178178
最終更新日時(UTC):
179-
<span itemprop="datePublished" content="2025-06-13T03:11:41">
180-
2025年06月13日 03時11分41秒
179+
<span itemprop="datePublished" content="2025-12-26T08:14:06">
180+
2025年12月26日 08時14分06秒
181181
</span>
182182
<br/>
183183
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -204,6 +204,9 @@
204204
<div itemprop="articleBody"><h2>概要</h2>
205205
<p><code>&lt;contracts&gt;</code>ヘッダでは、C++における契約プログラミングのサポートを提供する。</p>
206206
<p>契約プログラミングは、関数やクラスの前提条件、<a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成する要素の1つ。Postconditions。関数を実行後に満たされている条件。契約属性の`[[ensures]]`に相当">事後条件</a>、およびアサーションを明示的に指定するプログラミング手法である。これらの条件が満たされない場合、プログラムは契約違反を報告する。</p>
207+
<p>このヘッダで提供される機能は、<a class="cpprefjp-defined-word" data-desc="プログラム定義。ユーザー(プログラマ)によって定義されること(標準ライブラリで定義されるものを除く)">ユーザー定義</a>の契約違反ハンドラ(<code>handle_contract_violation</code>関数)を記述するために使用することを主な目的としており、契約アサーション(<code>pre</code><code>post</code><code>contract_assert</code>)を記述するためにこのヘッダをインクルードする必要はない。</p>
208+
<p>このヘッダのすべての宣言は名前空間<code>std::contracts</code>に属する。</p>
209+
<h2>列挙型</h2>
207210
<table border="1" bordercolor="#888" style="border-collapse:collapse">
208211
<thead>
209212
<tr>
@@ -215,42 +218,85 @@
215218
<tbody>
216219
<tr>
217220
<td><code><a href="contracts/assertion_kind.html">assertion_kind</a></code></td>
218-
<td>アサーションの種類 (enum)</td>
221+
<td>契約アサーションの種類(enum</td>
219222
<td>C++26</td>
220223
</tr>
221224
<tr>
222225
<td><code><a href="contracts/evaluation_semantic.html">evaluation_semantic</a></code></td>
223-
<td>アサーションの評価の種類(enum)</td>
226+
<td>契約アサーションの評価セマンティクス(enum</td>
224227
<td>C++26</td>
225228
</tr>
226229
<tr>
227230
<td><code><a href="contracts/detection_mode.html">detection_mode</a></code></td>
228-
<td>契約違反の検出モード(enum)</td>
231+
<td>契約違反の検出方法(enum</td>
229232
<td>C++26</td>
230233
</tr>
234+
</tbody>
235+
</table>
236+
<h2>クラス</h2>
237+
<table border="1" bordercolor="#888" style="border-collapse:collapse">
238+
<thead>
239+
<tr>
240+
<th>名前</th>
241+
<th>説明</th>
242+
<th>対応バージョン</th>
243+
</tr>
244+
</thead>
245+
<tbody>
231246
<tr>
232247
<td><code><a href="contracts/contract_violation.html">contract_violation</a></code></td>
233248
<td>契約違反に関する情報 (class)</td>
234249
<td>C++26</td>
235250
</tr>
251+
</tbody>
252+
</table>
253+
<h2>関数</h2>
254+
<table border="1" bordercolor="#888" style="border-collapse:collapse">
255+
<thead>
256+
<tr>
257+
<th>名前</th>
258+
<th>説明</th>
259+
<th>対応バージョン</th>
260+
</tr>
261+
</thead>
262+
<tbody>
236263
<tr>
237264
<td><code><a href="contracts/invoke_default_contract_violation_handler.html">invoke_default_contract_violation_handler</a></code></td>
238-
<td>デフォルトcontract_violationハンドラー</td>
265+
<td>デフォルトの契約違反ハンドラを呼び出す(function)</td>
266+
<td>C++26</td>
267+
</tr>
268+
</tbody>
269+
</table>
270+
<h2>機能テストマクロ</h2>
271+
<table border="1" bordercolor="#888" style="border-collapse:collapse">
272+
<thead>
273+
<tr>
274+
<th>マクロ名</th>
275+
<th></th>
276+
<th>説明</th>
277+
<th>対応バージョン</th>
278+
</tr>
279+
</thead>
280+
<tbody>
281+
<tr>
282+
<td><code>__cpp_lib_contracts</code></td>
283+
<td>???</td>
284+
<td><code>&lt;contracts&gt;</code>ヘッダが利用可能かを検出する</td>
239285
<td>C++26</td>
240286
</tr>
241287
</tbody>
242288
</table>
289+
<p>言語機能(<code>pre</code><code>post</code><code>contract_assert</code>構文)の検出には<code>__cpp_contracts</code>マクロを使用する。ライブラリと言語機能は異なるベンダーから提供される可能性があるため、別々のマクロが用意されている。</p>
243290
<h2>バージョン</h2>
244291
<h3>言語</h3>
245292
<ul>
246293
<li>C++26</li>
247294
</ul>
248295
<h3>処理系</h3>
249296
<ul>
250-
<li><a href="../implementation.html#clang">Clang</a>: ?</li>
251-
<li><a href="../implementation.html#gcc">GCC</a>: ?</li>
252-
<li><a href="../implementation.html#icc">ICC</a>: ?</li>
253-
<li><a href="../implementation.html#visual_cpp">Visual C++</a>: ?</li>
297+
<li><a href="../implementation.html#clang">Clang</a>: ??</li>
298+
<li><a href="../implementation.html#gcc">GCC</a>: ??</li>
299+
<li><a href="../implementation.html#visual_cpp">Visual C++</a>: ??</li>
254300
</ul>
255301
<h2>関連項目</h2>
256302
<ul>
@@ -259,7 +305,7 @@ <h2>関連項目</h2>
259305
</ul>
260306
<h2>参照</h2>
261307
<ul>
262-
<li><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0542r5.html" target="_blank">P0542R5 Support for contract based programming in C++</a></li>
308+
<li><a href="https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p2900r14.pdf" target="_blank">P2900R14 Contracts for C++</a></li>
263309
</ul></div>
264310

265311
</div>

reference/contracts/assertion_kind.html

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

189189
<p class="text-right"><small>
190190
最終更新日時(UTC):
191-
<span itemprop="datePublished" content="2025-06-11T14:15:20">
192-
2025年06月11日 14時15分20秒
191+
<span itemprop="datePublished" content="2025-12-26T09:09:53">
192+
2025年12月26日 09時09分53秒
193193
</span>
194194
<br/>
195195
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
196-
<span itemprop="name">Raclamusi</span>
196+
<span itemprop="name">rotarymars</span>
197197
</span>
198198
が更新
199199
</small></p>
@@ -217,7 +217,7 @@
217217
<span class="k">enum</span> <span class="k">class</span> <span class="nc">assertion_kind</span> <span class="o">:</span> <span class="n">unspecified</span> <span class="p">{</span>
218218
<span class="n">pre</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
219219
<span class="n">post</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
220-
<span class="n">assertion</span> <span class="o">=</span> <span class="mi">3</span>
220+
<span class="n"><a href="../cassert/assert.html">assert</a></span> <span class="o">=</span> <span class="mi">3</span>
221221
<span class="p">};</span>
222222
<span class="p">}</span>
223223
</code></pre></div>
@@ -244,7 +244,7 @@ <h2>関連項目</h2>
244244
</ul>
245245
<h2>参照</h2>
246246
<ul>
247-
<li><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0542r5.html" target="_blank">P0542R5 Support for contract based programming in C++</a></li>
247+
<li><a href="https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p2900r14.pdf" target="_blank">P2900R14 Contracts for C++</a></li>
248248
</ul></div>
249249

250250
</div>

reference/contracts/detection_mode.html

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

189189
<p class="text-right"><small>
190190
最終更新日時(UTC):
191-
<span itemprop="datePublished" content="2025-07-11T17:16:44">
192-
2025年07月11日 17時16分44秒
191+
<span itemprop="datePublished" content="2025-12-26T09:09:46">
192+
2025年12月26日 09時09分46秒
193193
</span>
194194
<br/>
195195
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
196-
<span itemprop="name">Koichi Murase</span>
196+
<span itemprop="name">rotarymars</span>
197197
</span>
198198
が更新
199199
</small></p>
@@ -264,7 +264,7 @@ <h2>関連項目</h2>
264264
</ul>
265265
<h2>参照</h2>
266266
<ul>
267-
<li><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0542r5.html" target="_blank">P0542R5 Support for contract based programming in C++</a></li>
267+
<li><a href="https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p2900r14.pdf" target="_blank">P2900R14 Contracts for C++</a></li>
268268
</ul></div>
269269

270270
</div>

reference/contracts/evaluation_semantic.html

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -188,12 +188,12 @@
188188

189189
<p class="text-right"><small>
190190
最終更新日時(UTC):
191-
<span itemprop="datePublished" content="2025-06-11T14:15:20">
192-
2025年06月11日 14時15分20秒
191+
<span itemprop="datePublished" content="2025-12-26T09:09:21">
192+
2025年12月26日 09時09分21秒
193193
</span>
194194
<br/>
195195
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
196-
<span itemprop="name">Raclamusi</span>
196+
<span itemprop="name">rotarymars</span>
197197
</span>
198198
が更新
199199
</small></p>
@@ -226,6 +226,39 @@
226226
</p>
227227
<h2>概要</h2>
228228
<p>契約違反をどのように評価するかを表す列挙型。</p>
229+
<p>これの他に、<a class="cpprefjp-defined-word" data-desc="処理系定義の動作。処理系によって事前に定めた動作をする" href="../../implementation-compliance.html#dfn-implementation-defined-behavior">処理系定義</a>のものを定めてもよい。</p>
230+
<h3>列挙子</h3>
231+
<table border="1" bordercolor="#888" style="border-collapse:collapse">
232+
<thead>
233+
<tr>
234+
<th>列挙子</th>
235+
<th></th>
236+
<th>説明</th>
237+
</tr>
238+
</thead>
239+
<tbody>
240+
<tr>
241+
<td><code>ignore</code></td>
242+
<td>1</td>
243+
<td><a class="cpprefjp-defined-word" data-desc="boolを返す関数・関数オブジェクト。predicate">述語</a>を評価しない</td>
244+
</tr>
245+
<tr>
246+
<td><code>observe</code></td>
247+
<td>2</td>
248+
<td><a class="cpprefjp-defined-word" data-desc="boolを返す関数・関数オブジェクト。predicate">述語</a>を評価し、違反時にハンドラを呼ぶが、実行を継続する</td>
249+
</tr>
250+
<tr>
251+
<td><code>enforce</code></td>
252+
<td>3</td>
253+
<td><a class="cpprefjp-defined-word" data-desc="boolを返す関数・関数オブジェクト。predicate">述語</a>を評価し、違反時にハンドラを呼び、その後プログラムを終了する</td>
254+
</tr>
255+
<tr>
256+
<td><code>quick_enforce</code></td>
257+
<td>4</td>
258+
<td><a class="cpprefjp-defined-word" data-desc="boolを返す関数・関数オブジェクト。predicate">述語</a>を評価し、違反時にハンドラを呼ばずにプログラムを終了する</td>
259+
</tr>
260+
</tbody>
261+
</table>
229262
<h2>バージョン</h2>
230263
<h3>言語</h3>
231264
<ul>
@@ -245,7 +278,7 @@ <h2>関連項目</h2>
245278
</ul>
246279
<h2>参照</h2>
247280
<ul>
248-
<li><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0542r5.html" target="_blank">P0542R5 Support for contract based programming in C++</a></li>
281+
<li><a href="https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p2900r14.pdf" target="_blank">P2900R14 Contracts for C++</a></li>
249282
</ul></div>
250283

251284
</div>

0 commit comments

Comments
 (0)