Skip to content

Commit 776df8f

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent 0cecd9a commit 776df8f

File tree

109 files changed

+154
-258
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

109 files changed

+154
-258
lines changed

article/lib/how_to_use_cv.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -254,9 +254,9 @@ <h2>利用パターン</h2>
254254
<code>notify_all()</code>が待機中の全スレッドに通知を行うのに対し、<code>notify_one()</code>は待機中の任意の1スレッドにのみ通知を行うため、後者は実行時オーバーヘッドの観点で有利である。
255255
一方、待機処理における指定条件によっては、<code>notify_one()</code>利用ではライブロック(live lock)に陥るケースも存在する。
256256
なお、<code>notify_all()</code>の動作セマンティクスは<code>notify_one()</code>を完全に包含するため、<code>notify_one()</code>で正しく動作する並行処理は<code>notify_all()</code>利用でも正しく動作する。)</p>
257-
<p>待機処理の実装では、第2引数に述語をとる<code><a href="../../reference/condition_variable/condition_variable/wait.html">wait()</a></code>を利用することで、条件変数のSpurious Wakeupと呼ばれる現象を考慮しなくとも正しい処理を記述できる。
257+
<p>待機処理の実装では、第2引数に<a class="cpprefjp-defined-word" data-desc="boolを返す関数・関数オブジェクト。predicate">述語</a>をとる<code><a href="../../reference/condition_variable/condition_variable/wait.html">wait()</a></code>を利用することで、条件変数のSpurious Wakeupと呼ばれる現象を考慮しなくとも正しい処理を記述できる。
258258
<code>wait()</code>メンバ関数はロック型のみを引数にとる1引数オーバーロードも提供するが、特殊なケースを除いて上記の2引数オーバーロード利用を推奨する。
259-
待機関数によるブロッキング期間以外では、そのスレッド自身がロック<code>lk</code>保持中であると保証されるため、述語処理(前掲実装ではラムダ式)や<code>wait()</code>呼出より後に"ステート"変数へと安全にアクセスできる。</p>
259+
待機関数によるブロッキング期間以外では、そのスレッド自身がロック<code>lk</code>保持中であると保証されるため、<a class="cpprefjp-defined-word" data-desc="boolを返す関数・関数オブジェクト。predicate">述語</a>処理(前掲実装ではラムダ式)や<code>wait()</code>呼出より後に"ステート"変数へと安全にアクセスできる。</p>
260260
<h2>条件変数と状態</h2>
261261
<p>条件変数オブジェクトはスレッド間通知/待機機能を提供するだけであり、オブジェクトそれ自身は永続的な状態管理を行わない。
262262
このため条件変数オブジェクトに対する通知関数<code>notify_one()</code>/<code>notify_all()</code>は、その通知時点で同オブジェクトの待機関数<code>wait()</code>/<code>wait_for()</code>/<code>wait_until()</code>にてブロックされているスレッド群にしか影響しない。</p>

lang/cpp17/has_include.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ <h1 itemprop="name"><span class="token">__has_include [P0061R1]</span><span clas
218218
<p>のちのC++規格でさらに変更される場合があるため<a href="#relative-page">関連項目</a>を参照してください。</p>
219219
<p></p>
220220
<h2>概要</h2>
221-
<p><code>__has_include</code>はインクルードするファイルが存在するかどうかを返す述語である</p>
221+
<p><code>__has_include</code>はインクルードするファイルが存在するかどうかを返す<a class="cpprefjp-defined-word" data-desc="boolを返す関数・関数オブジェクト。predicate">述語</a>である</p>
222222
<p>処理系によって異なるヘッダファイルをインクルードする場合、従来はコンパイラのみでヘッダファイルの有無を確認する方法がなく、下記例のように外部ツールにより補助する方法を取ることが多かった。</p>
223223
<ul>
224224
<li>外部ツールでヘッダファイルの存在を確認し、ヘッダファイルの有無を表すマクロ (例: <code>#define HAS_STDIO_H 1</code>など) を生成</li>

lang/future/contract-based_programming.html

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -249,10 +249,10 @@ <h3>契約属性</h3>
249249
<li><code>[[ensure: 述語]]</code>:関数から戻る際に期待する事後条件を定義する。</li>
250250
<li><code>[[assert: 述語]]</code>:アサーションを定義する。</li>
251251
</ul>
252-
<p>expectおよびensure属性の述語は、関数の最初の式文と同じセマンティクスで評価される。
252+
<p>expectおよびensure属性の<a class="cpprefjp-defined-word" data-desc="boolを返す関数・関数オブジェクト。predicate">述語</a>、関数の最初の式文と同じセマンティクスで評価される。
253253
より詳細に言えば、仮引数は見えるがローカル変数は見えない。</p>
254-
<p>述語が例外を送出すると<code><a href="../../reference/exception/terminate.html">std::terminate()</a></code>関数を呼び出してプログラムを終了させる。</p>
255-
<p>述語が副作用を持つ場合<a class="cpprefjp-defined-word" data-desc="未定義の動作。処理系は予期せぬ動作をする可能性がある。要するに動作保証対象外。undefined behavior (UB)。" href="../../implementation-compliance.html#dfn-undefined-behavior">動作は未定義</a>である。例えば、グローバル変数の変更、<code>volatile</code>変数の参照、変数を変更する可能性のある関数の呼び出しなどが該当する。</p>
254+
<p><a class="cpprefjp-defined-word" data-desc="boolを返す関数・関数オブジェクト。predicate">述語</a>が例外を送出すると<code><a href="../../reference/exception/terminate.html">std::terminate()</a></code>関数を呼び出してプログラムを終了させる。</p>
255+
<p><a class="cpprefjp-defined-word" data-desc="boolを返す関数・関数オブジェクト。predicate">述語</a>が副作用を持つ場合<a class="cpprefjp-defined-word" data-desc="未定義の動作。処理系は予期せぬ動作をする可能性がある。要するに動作保証対象外。undefined behavior (UB)。" href="../../implementation-compliance.html#dfn-undefined-behavior">動作は未定義</a>である。例えば、グローバル変数の変更、<code>volatile</code>変数の参照、変数を変更する可能性のある関数の呼び出しなどが該当する。</p>
256256
<p><div class="codehilite"><pre><span></span><code><span class="c1">// <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0542r5.html" target="_blank">P0542R5</a>より引用</span>
257257
<span class="kt">int</span> <span class="n">x</span><span class="p">;</span>
258258
<span class="k">volatile</span> <span class="kt">int</span> <span class="n">y</span><span class="p">;</span>
@@ -338,12 +338,12 @@ <h3>expect属性</h3>
338338
</code></pre></div>
339339
</p>
340340
<p>この属性は関数宣言の関数型に対して指定する。</p>
341-
<p>述語では、関数の引数を参照できる。</p>
341+
<p><a class="cpprefjp-defined-word" data-desc="boolを返す関数・関数オブジェクト。predicate">述語</a>では、関数の引数を参照できる。</p>
342342
<p><div class="codehilite"><pre><span></span><code><span class="kt">void</span> <span class="n">f</span><span class="p">(</span><span class="kt">int</span> <span class="n">x</span><span class="p">)</span>
343343
<span class="p">[[</span><span class="nl">expects</span><span class="p">:</span> <span class="n">x</span><span class="o">&gt;</span><span class="mi">0</span><span class="p">]]</span>
344344
</code></pre></div>
345345
</p>
346-
<p>expect属性の述語は関数の本体を評価する直前に評価される。関数の本体には、関数tryブロックおよびコンストラクタのメンバ初期化子を含む。</p>
346+
<p>expect属性の<a class="cpprefjp-defined-word" data-desc="boolを返す関数・関数オブジェクト。predicate">述語</a>は関数の本体を評価する直前に評価される。関数の本体には、関数tryブロックおよびコンストラクタのメンバ初期化子を含む。</p>
347347
<p>1つの関数に複数のexpect属性がある場合、評価は記述した順になる。</p>
348348
<h3>ensure属性</h3>
349349
<p><div class="codehilite"><pre><span></span><code><span class="p">[[</span><span class="nl">ensure</span><span class="p">:</span> <span class="err">述語</span><span class="p">]]</span>
@@ -359,7 +359,7 @@ <h3>ensure属性</h3>
359359
<span class="p">[[</span><span class="n">ensures</span> <span class="nl">r</span><span class="p">:</span> <span class="n">get</span><span class="o">&lt;</span><span class="mi">0</span><span class="o">&gt;</span><span class="p">(</span><span class="n">r</span><span class="p">)</span><span class="o">&gt;</span><span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="n">get</span><span class="o">&lt;</span><span class="mi">1</span><span class="o">&gt;</span><span class="p">(</span><span class="n">r</span><span class="p">).</span><span class="n">size</span><span class="p">()</span><span class="o">&gt;</span><span class="mi">0</span><span class="p">]];</span> <span class="c1">// OK</span>
360360
</code></pre></div>
361361
</p>
362-
<p>ensure属性の述語は関数から戻る直前に評価される。このとき、ローカル変数や一時オブジェクトの寿命はすでに尽きている。</p>
362+
<p>ensure属性の<a class="cpprefjp-defined-word" data-desc="boolを返す関数・関数オブジェクト。predicate">述語</a>は関数から戻る直前に評価される。このとき、ローカル変数や一時オブジェクトの寿命はすでに尽きている。</p>
363363
<p>1つの関数に複数のensure属性がある場合、評価は記述した順になる。</p>
364364
<h3>assert属性</h3>
365365
<p><div class="codehilite"><pre><span></span><code><span class="p">[[</span><span class="nl"><a href="../../reference/cassert/assert.html">assert</a></span><span class="p">:</span> <span class="err">述語</span><span class="p">]]</span>
@@ -369,7 +369,7 @@ <h3>assert属性</h3>
369369
<p><div class="codehilite"><pre><span></span><code><span class="p">[[</span><span class="nl"><a href="../../reference/cassert/assert.html">assert</a></span><span class="p">:</span> <span class="n">x</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">]];</span>
370370
</code></pre></div>
371371
</p>
372-
<p>assert属性の述語は適用先の空文と共に評価される</p>
372+
<p>assert属性の<a class="cpprefjp-defined-word" data-desc="boolを返す関数・関数オブジェクト。predicate">述語</a>は適用先の空文と共に評価される</p>
373373
<h3>契約と継承 - Assertion Redeclaration rule</h3>
374374
<p>あるクラス内で契約されている関数がそのクラスを継承した別のクラスでオーバーライドされる場合、オーバーライドした関数は少なくとも元の関数になされた契約を遵守しなければならない。より詳細には</p>
375375
<ul>

reference/algorithm.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -287,8 +287,8 @@ <h3>射影とRangeサポート(C++20)</h3>
287287
<span class="n"><a href="algorithm/ranges_sort.html">ranges::sort</a></span><span class="p">(</span><span class="n"><a href="vector/vector/begin.html">v.begin()</a></span><span class="p">,</span> <span class="n"><a href="vector/vector/end.html">v.end()</a></span><span class="p">);</span>
288288
</code></pre></div>
289289
</p>
290-
<p>射影は、述語とは別に渡すことができる関数オブジェクトで、特定のメンバだけを対象にアルゴリズムを実行するために用いる。</p>
291-
<p>例えば、クラス型の配列のソートでは、特定のメンバによってソートしたいことはよくある。しかし、従来のアルゴリズム関数では特定のメンバで比較を行う述語を用意しなければならなかった</p>
290+
<p>射影は、<a class="cpprefjp-defined-word" data-desc="boolを返す関数・関数オブジェクト。predicate">述語</a>とは別に渡すことができる関数オブジェクトで、特定のメンバだけを対象にアルゴリズムを実行するために用いる。</p>
291+
<p>例えば、クラス型の配列のソートでは、特定のメンバによってソートしたいことはよくある。しかし、従来のアルゴリズム関数では特定のメンバで比較を行う<a class="cpprefjp-defined-word" data-desc="boolを返す関数・関数オブジェクト。predicate">述語</a>を用意しなければならなかった</p>
292292
<p><div class="codehilite"><pre><span></span><code><span class="k">struct</span> <span class="n">Person</span> <span class="p">{</span>
293293
<span class="n">string</span> <span class="n">name</span><span class="p">;</span>
294294
<span class="kt">int</span> <span class="n">age</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
@@ -299,7 +299,7 @@ <h3>射影とRangeサポート(C++20)</h3>
299299
<span class="n"><a href="algorithm/sort.html">sort</a></span><span class="p">(</span><span class="n">pv</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span> <span class="n">pv</span><span class="p">.</span><span class="n">end</span><span class="p">(),</span> <span class="p">[](</span><span class="k">auto</span><span class="o">&amp;&amp;</span> <span class="n">a</span><span class="p">,</span> <span class="k">auto</span><span class="o">&amp;&amp;</span> <span class="n">b</span><span class="p">){</span> <span class="k">return</span> <span class="n">a</span><span class="p">.</span><span class="n">name</span> <span class="o">&lt;</span> <span class="n">b</span><span class="p">.</span><span class="n">name</span><span class="p">;</span> <span class="p">});</span>
300300
</code></pre></div>
301301
</p>
302-
<p>これは、述語がメンバの選択と比較という2つの仕事をしてしまっている点でよくない。この責務を分割し、メンバの選択だけを行うようにしたものが射影である。</p>
302+
<p>これは、<a class="cpprefjp-defined-word" data-desc="boolを返す関数・関数オブジェクト。predicate">述語</a>がメンバの選択と比較という2つの仕事をしてしまっている点でよくない。この責務を分割し、メンバの選択だけを行うようにしたものが射影である。</p>
303303
<p><div class="codehilite"><pre><span></span><code><span class="c1">// デフォルトの述語(<a href="functional/ranges_less.html">ranges::less</a>{})で、nameでソート</span>
304304
<span class="n"><a href="algorithm/ranges_sort.html">ranges::sort</a></span><span class="p">(</span><span class="n">pv</span><span class="p">,</span> <span class="p">{},</span> <span class="p">[](</span><span class="k">auto</span><span class="o">&amp;&amp;</span> <span class="n">a</span><span class="p">){</span> <span class="k">return</span> <span class="n">a</span><span class="p">.</span><span class="n">name</span><span class="p">;</span> <span class="p">});</span>
305305
<span class="c1">// <a href="functional/invoke.html">std::invoke</a>で呼び出されるため、メンバ変数ポインタでもよい</span>

reference/algorithm/adjacent_find.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -271,8 +271,8 @@ <h2>戻り値</h2>
271271
<p>もしそのようなイテレータが見つからなかった場合は <code>last</code> を返す。</p>
272272
<h2>計算量</h2>
273273
<ul>
274-
<li>(1), (2) : 与えられたシーケンスが空でない場合、正確に <code><a href="min.html">min</a>((i - first) + 1, (last - first) - 1)</code> 回(<code>i</code><code>adjacent_find</code> の戻り値)の比較または述語が適用される</li>
275-
<li>(3), (4) : O<code>(last - first)</code>の計算量の回数だけ比較または述語が適用される</li>
274+
<li>(1), (2) : 与えられたシーケンスが空でない場合、正確に <code><a href="min.html">min</a>((i - first) + 1, (last - first) - 1)</code> 回(<code>i</code><code>adjacent_find</code> の戻り値)の比較または<a class="cpprefjp-defined-word" data-desc="boolを返す関数・関数オブジェクト。predicate">述語</a>が適用される</li>
275+
<li>(3), (4) : O<code>(last - first)</code>の計算量の回数だけ比較または<a class="cpprefjp-defined-word" data-desc="boolを返す関数・関数オブジェクト。predicate">述語</a>が適用される</li>
276276
</ul>
277277
<h2></h2>
278278
<p><div class="yata" id="3840f2fa4f5f51ae3fc16c6d57eebc35170c95ce"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../algorithm.html">&lt;algorithm&gt;</a></span><span class="cp"></span>

reference/algorithm/copy_if.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ <h2>効果</h2>
248248
<h2>戻り値</h2>
249249
<p>コピー先の<a class="cpprefjp-defined-word" data-desc="2つのイテレータで表現される半開区間を表す。C++20からイテレータと番兵で異なる型であっても指定可能になる">イテレータ範囲</a>の終端を返す。</p>
250250
<h2>計算量</h2>
251-
<p>正確に <code>last - first</code> 回述語を適用する</p>
251+
<p>正確に <code>last - first</code> <a class="cpprefjp-defined-word" data-desc="boolを返す関数・関数オブジェクト。predicate">述語</a>を適用する</p>
252252
<h2>備考</h2>
253253
<p>このコピーは安定なコピーである。つまり、コピーによって要素の前後が入れ替わることは無い。</p>
254254
<h2></h2>

reference/algorithm/count_if.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ <h2>概要</h2>
240240
<h2>戻り値</h2>
241241
<p><a class="cpprefjp-defined-word" data-desc="2つのイテレータで表現される半開区間を表す。C++20からイテレータと番兵で異なる型であっても指定可能になる">イテレータ範囲</a><code>[first,last)</code> 内のイテレータ <code>i</code> について、<code>pred(*i) != false</code> であるイテレータの数を返す</p>
242242
<h2>計算量</h2>
243-
<p>正確に <code>last - first</code> 回の述語の適用を行う</p>
243+
<p>正確に <code>last - first</code> 回の<a class="cpprefjp-defined-word" data-desc="boolを返す関数・関数オブジェクト。predicate">述語</a>の適用を行う</p>
244244
<h2></h2>
245245
<p><div class="yata" id="66330ac439d31f59877a5ae5da300306981b2cac"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../algorithm.html">&lt;algorithm&gt;</a></span><span class="cp"></span>
246246
<span class="cp">#include</span> <span class="cpf"><a href="../iostream.html">&lt;iostream&gt;</a></span><span class="cp"></span>

0 commit comments

Comments
 (0)