Skip to content

Commit 3e3271b

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent 4cb415b commit 3e3271b

10 files changed

Lines changed: 620 additions & 88 deletions

File tree

lang/cpp17/constexpr_lambda.html

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -189,12 +189,12 @@
189189
<p class="text-right"><small>
190190
最終更新日時:
191191
<time itemprop="datePublished" class="js-local-time"
192-
datetime="2025-10-17T18:16:31+09:00">
193-
2025年10月17日 18時16分31秒 (JST)
192+
datetime="2026-08-24T13:42:59+09:00">
193+
2026年08月24日 13時42分59秒 (JST)
194194
</time>
195195
<br/>
196196
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
197-
<span itemprop="name">Raclamusi</span>
197+
<span itemprop="name">Akira Takahashi</span>
198198
</span>
199199
が更新
200200
</small></p>
@@ -385,15 +385,26 @@ <h2>この機能が必要になった背景・経緯</h2>
385385
上記の無名クラスや他の冗長な方法でconstexprラムダをエミュレートする開発者が少なからずいた。</p>
386386
<p>ラムダがconstexprでないことによって不要に複雑なコードを書くことは混乱のもとであるとして、C++17にconstexprラムダが提案された。</p>
387387
<h2>検討されたほかの選択肢</h2>
388-
<p>(執筆中)</p>
388+
<h3><code>constexpr</code>指定を必須とするか、推論するか</h3>
389+
<p>ラムダ式に<code>constexpr</code>を明示的に指定することを必須とする案も考えられた。しかし、暗黙定義されるコンストラクタや代入演算子が条件を満たせば自動的に<code>constexpr</code>となる先例に倣い、<code>constexpr</code>指定を省略した場合は<code>operator()</code><a href="../cpp11/constexpr.html"><code>constexpr</code>関数</a>の要件を満たすなら自動的に<code>constexpr</code>として扱う方式が採用された。同時に、明示的な<code>constexpr</code>指定も可能とされている。</p>
390+
<p>これは、<code>constexpr</code>キーワードには、テンプレート特殊化の実体化タイミングの制御・コンパイル時間の削減・意図の表明・ライブラリのソース互換性の維持といった有用性がある、という指摘を踏まえたものである。</p>
391+
<h3>未評価オペランド内のラムダ式</h3>
392+
<p><code>sizeof</code><code>decltype</code>といった未評価オペランドの内側にラムダ式を書けるようにする案は、シグネチャ内でのマングリングなど本提案とは独立した問題を含むため、この提案では見送られた。この機能はのちにC++20で、<a href="../cpp20/wording_for_lambdas_in_unevaluated_contexts.html">未評価文脈でのラムダ式</a>として別途導入された。</p>
389393
<h2><a href="#relative-page" id="relative-page">関連項目</a></h2>
390394
<ul>
391395
<li><a href="../cpp11/constexpr.html">C++11 <code>constexpr</code></a></li>
396+
<li><a href="../cpp20/wording_for_lambdas_in_unevaluated_contexts.html">C++20 未評価文脈でのラムダ式</a></li>
392397
</ul>
393398
<h2>参照</h2>
394-
<p>(執筆中)</p>
395399
<ul>
396-
<li><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0170r1.pdf" target="_blank">P0170R1 Wording for Constexpr Lambda</a></li>
400+
<li><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4487.pdf" target="_blank">N4487 Constexpr Lambda</a><ul>
401+
<li>EWGに採択された設計提案</li>
402+
</ul>
403+
</li>
404+
<li><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0170r1.pdf" target="_blank">P0170R1 Wording for Constexpr Lambda</a><ul>
405+
<li>N4487に対応するコアワーディング提案</li>
406+
</ul>
407+
</li>
397408
</ul></div>
398409

399410
</div>

reference/algorithm/ranges_in_value_result.html

Lines changed: 21 additions & 6 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;algorithm&#34;], &#34;namespace&#34;: [&#34;std::ranges&#34;], &#34;id-type&#34;: [&#34;class template&#34;], &#34;cpp&#34;: [&#34;cpp23&#34;], &#34;alias&#34;: [&#34;fold_left_with_iter_result,fold_left_first_with_iter_result&#34;]}, &#34;sources&#34;: [], &#34;page_id&#34;: [&#34;reference&#34;, &#34;algorithm&#34;, &#34;ranges_in_value_result&#34;]}">
71+
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;algorithm&#34;], &#34;namespace&#34;: [&#34;std::ranges&#34;], &#34;id-type&#34;: [&#34;class template&#34;], &#34;cpp&#34;: [&#34;cpp23&#34;], &#34;alias&#34;: [&#34;fold_left_with_iter_result,fold_left_first_with_iter_result&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;54ce68d0d2db151e90688f415508ca04a31193cf&#34;, &#34;source&#34;: &#34;#include &lt;cassert&gt;\n#include &lt;algorithm&gt;\n#include &lt;functional&gt;\n#include &lt;vector&gt;\n\nint main() {\n std::vector&lt;int&gt; v = {1, 2, 3, 4};\n\n // fold_left_with_iter\u306fin_value_result\uff08fold_left_with_iter_result\uff09\u3092\u8fd4\u3059\n const std::ranges::in_value_result result = std::ranges::fold_left_with_iter(v, 0, std::plus&lt;&gt;{});\n\n assert(result.in == v.end()); // \u8d70\u67fb\u3057\u7d42\u3048\u305f\u7d42\u7aef\u30a4\u30c6\u30ec\u30fc\u30bf\n assert(result.value == 10); // \u7573\u307f\u8fbc\u307f\u7d50\u679c\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;algorithm&#34;, &#34;ranges_in_value_result&#34;]}">
7272
<nav class="navbar navbar-default" role="navigation">
7373
<div class="container-fluid">
7474
<div class="navbar-header">
@@ -189,12 +189,12 @@
189189
<p class="text-right"><small>
190190
最終更新日時:
191191
<time itemprop="datePublished" class="js-local-time"
192-
datetime="2026-01-09T11:10:05+09:00">
193-
2026年01月09日 11時10分05秒 (JST)
192+
datetime="2026-08-24T13:42:59+09:00">
193+
2026年08月24日 13時42分59秒 (JST)
194194
</time>
195195
<br/>
196196
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
197-
<span itemprop="name">Raclamusi</span>
197+
<span itemprop="name">Akira Takahashi</span>
198198
</span>
199199
が更新
200200
</small></p>
@@ -318,9 +318,24 @@ <h2>メンバ関数</h2>
318318
</table>
319319
<p>変換演算子は、各テンプレートパラメーターが変換できる場合のみ<a class="cpprefjp-defined-word" data-desc="関数呼び出し時に、同名の関数の中から実際に呼び出す関数を決定する処理。このときの候補になることを、オーバーロード解決に参加するという">オーバーロード解決</a>に参加する。</p>
320320
<h2></h2>
321-
<p>(執筆中)</p>
321+
<p><div class="yata" id="54ce68d0d2db151e90688f415508ca04a31193cf"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../cassert.html">&lt;cassert&gt;</a></span>
322+
<span class="cp">#include <a href="../algorithm.html">&lt;algorithm&gt;</a></span>
323+
<span class="cp">#include <a href="../functional.html">&lt;functional&gt;</a></span>
324+
<span class="cp">#include <a href="../vector.html">&lt;vector&gt;</a></span>
325+
326+
<span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
327+
<span class="w"> </span><span class="n"><a href="../vector/vector.html">std::vector</a></span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="w"> </span><span class="n">v</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">};</span>
328+
329+
<span class="w"> </span><span class="c1">// fold_left_with_iterはin_value_result(fold_left_with_iter_result)を返す</span>
330+
<span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n"><span style="color:#ff0000">std::ranges::in_value_result</span></span><span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n"><a href="ranges_fold_left_with_iter.html">std::ranges::fold_left_with_iter</a></span><span class="p">(</span><span class="n">v</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">plus</span><span class="o">&lt;&gt;</span><span class="p">{});</span>
331+
332+
<span class="w"> </span><span class="n"><a href="../cassert/assert.html">assert</a></span><span class="p">(</span><span class="n">result</span><span class="p">.</span><span class="n">in</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n"><a href="../vector/vector/end.html">v.end()</a></span><span class="p">);</span><span class="w"> </span><span class="c1">// 走査し終えた終端イテレータ</span>
333+
<span class="w"> </span><span class="n"><a href="../cassert/assert.html">assert</a></span><span class="p">(</span><span class="n">result</span><span class="p">.</span><span class="n">value</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span><span class="w"> </span><span class="c1">// 畳み込み結果</span>
334+
<span class="p">}</span>
335+
</code></pre></div>
336+
</div></p>
322337
<h3>出力</h3>
323-
<p>(執筆中)</p>
338+
<p><pre><code></code></pre></p>
324339
<h2>バージョン</h2>
325340
<h3>言語</h3>
326341
<ul>

reference/algorithm/ranges_out_value_result.html

Lines changed: 21 additions & 6 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;algorithm&#34;], &#34;namespace&#34;: [&#34;std::ranges&#34;], &#34;id-type&#34;: [&#34;class template&#34;], &#34;cpp&#34;: [&#34;cpp23&#34;], &#34;alias&#34;: [&#34;iota_result&#34;]}, &#34;sources&#34;: [], &#34;page_id&#34;: [&#34;reference&#34;, &#34;algorithm&#34;, &#34;ranges_out_value_result&#34;]}">
71+
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;algorithm&#34;], &#34;namespace&#34;: [&#34;std::ranges&#34;], &#34;id-type&#34;: [&#34;class template&#34;], &#34;cpp&#34;: [&#34;cpp23&#34;], &#34;alias&#34;: [&#34;iota_result&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;87e67e94d60c03bee74f755388685aab39963f25&#34;, &#34;source&#34;: &#34;#include &lt;cassert&gt;\n#include &lt;numeric&gt;\n#include &lt;vector&gt;\n\nint main() {\n std::vector&lt;int&gt; v(5);\n\n // ranges::iota\u306fout_value_result\uff08iota_result\uff09\u3092\u8fd4\u3059\n const std::ranges::out_value_result result = std::ranges::iota(v, 0);\n\n assert(result.out == v.end()); // \u66f8\u304d\u8fbc\u307f\u7d42\u3048\u305f\u7d42\u7aef\u30a4\u30c6\u30ec\u30fc\u30bf\n assert(result.value == 5); // \u6b21\u306b\u66f8\u304d\u8fbc\u3080\u306f\u305a\u306e\u5024\n // v \u306f {0, 1, 2, 3, 4}\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;algorithm&#34;, &#34;ranges_out_value_result&#34;]}">
7272
<nav class="navbar navbar-default" role="navigation">
7373
<div class="container-fluid">
7474
<div class="navbar-header">
@@ -189,12 +189,12 @@
189189
<p class="text-right"><small>
190190
最終更新日時:
191191
<time itemprop="datePublished" class="js-local-time"
192-
datetime="2026-01-09T11:10:05+09:00">
193-
2026年01月09日 11時10分05秒 (JST)
192+
datetime="2026-08-24T13:42:59+09:00">
193+
2026年08月24日 13時42分59秒 (JST)
194194
</time>
195195
<br/>
196196
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
197-
<span itemprop="name">Raclamusi</span>
197+
<span itemprop="name">Akira Takahashi</span>
198198
</span>
199199
が更新
200200
</small></p>
@@ -311,9 +311,24 @@ <h2>メンバ関数</h2>
311311
</table>
312312
<p>変換演算子は、各テンプレートパラメーターが変換できる場合のみ<a class="cpprefjp-defined-word" data-desc="関数呼び出し時に、同名の関数の中から実際に呼び出す関数を決定する処理。このときの候補になることを、オーバーロード解決に参加するという">オーバーロード解決</a>に参加する。</p>
313313
<h2></h2>
314-
<p>(執筆中)</p>
314+
<p><div class="yata" id="87e67e94d60c03bee74f755388685aab39963f25"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../cassert.html">&lt;cassert&gt;</a></span>
315+
<span class="cp">#include <a href="../numeric.html">&lt;numeric&gt;</a></span>
316+
<span class="cp">#include <a href="../vector.html">&lt;vector&gt;</a></span>
317+
318+
<span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
319+
<span class="w"> </span><span class="n"><a href="../vector/vector.html">std::vector</a></span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="w"> </span><span class="n">v</span><span class="p">(</span><span class="mi">5</span><span class="p">);</span>
320+
321+
<span class="w"> </span><span class="c1">// ranges::iotaはout_value_result(iota_result)を返す</span>
322+
<span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n"><span style="color:#ff0000">std::ranges::out_value_result</span></span><span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n"><a href="../numeric/ranges_iota.html">std::ranges::iota</a></span><span class="p">(</span><span class="n">v</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
323+
324+
<span class="w"> </span><span class="n"><a href="../cassert/assert.html">assert</a></span><span class="p">(</span><span class="n">result</span><span class="p">.</span><span class="n">out</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n"><a href="../vector/vector/end.html">v.end()</a></span><span class="p">);</span><span class="w"> </span><span class="c1">// 書き込み終えた終端イテレータ</span>
325+
<span class="w"> </span><span class="n"><a href="../cassert/assert.html">assert</a></span><span class="p">(</span><span class="n">result</span><span class="p">.</span><span class="n">value</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">5</span><span class="p">);</span><span class="w"> </span><span class="c1">// 次に書き込むはずの値</span>
326+
<span class="w"> </span><span class="c1">// v は {0, 1, 2, 3, 4}</span>
327+
<span class="p">}</span>
328+
</code></pre></div>
329+
</div></p>
315330
<h3>出力</h3>
316-
<p>(執筆中)</p>
331+
<p><pre><code></code></pre></p>
317332
<h2>バージョン</h2>
318333
<h3>言語</h3>
319334
<ul>

reference/ranges/filter_view/iterator/op_equal.html

Lines changed: 26 additions & 5 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;ranges&#34;], &#34;namespace&#34;: [&#34;std::ranges&#34;], &#34;class&#34;: [&#34;filter_view::iterator&#34;], &#34;id-type&#34;: [&#34;function&#34;], &#34;cpp&#34;: [&#34;cpp20&#34;]}, &#34;sources&#34;: [], &#34;page_id&#34;: [&#34;reference&#34;, &#34;ranges&#34;, &#34;filter_view&#34;, &#34;iterator&#34;, &#34;op_equal&#34;]}">
71+
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;ranges&#34;], &#34;namespace&#34;: [&#34;std::ranges&#34;], &#34;class&#34;: [&#34;filter_view::iterator&#34;], &#34;id-type&#34;: [&#34;function&#34;], &#34;cpp&#34;: [&#34;cpp20&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;27b92ba68aa93713a2069860b68a1ea957101206&#34;, &#34;source&#34;: &#34;#include &lt;ranges&gt;\n#include &lt;vector&gt;\n#include &lt;cassert&gt;\n\nint main()\n{\n std::vector&lt;int&gt; v = {1, 2, 3, 4, 5};\n auto fv = v | std::views::filter([](int i) { return i % 2 == 0; });\n\n auto a = fv.begin();\n auto b = fv.begin();\n\n // a\u3068b\u306f\u540c\u3058\u8981\u7d20\uff082\uff09\u3092\u6307\u3059\u305f\u3081\u7b49\u3057\u3044\n assert(a == b);\n\n ++a; // a\u306f\u6b21\u306e\u5076\u6570\uff084\uff09\u3092\u6307\u3059\n assert(a != b);\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;ranges&#34;, &#34;filter_view&#34;, &#34;iterator&#34;, &#34;op_equal&#34;]}">
7272
<nav class="navbar navbar-default" role="navigation">
7373
<div class="container-fluid">
7474
<div class="navbar-header">
@@ -213,12 +213,12 @@
213213
<p class="text-right"><small>
214214
最終更新日時:
215215
<time itemprop="datePublished" class="js-local-time"
216-
datetime="2024-08-29T22:31:34+09:00">
217-
2024年08月29日 22時31分34秒 (JST)
216+
datetime="2026-08-24T13:42:59+09:00">
217+
2026年08月24日 13時42分59秒 (JST)
218218
</time>
219219
<br/>
220220
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
221-
<span itemprop="name">Tetsuro Matsumura</span>
221+
<span itemprop="name">Akira Takahashi</span>
222222
</span>
223223
が更新
224224
</small></p>
@@ -278,7 +278,28 @@ <h2>備考</h2>
278278
<li>この演算子により <code>!=</code> 演算子が使用可能になる。</li>
279279
</ul>
280280
<h2></h2>
281-
<p>(執筆中)</p>
281+
<p><div class="yata" id="27b92ba68aa93713a2069860b68a1ea957101206"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../../../ranges.html">&lt;ranges&gt;</a></span>
282+
<span class="cp">#include <a href="../../../vector.html">&lt;vector&gt;</a></span>
283+
<span class="cp">#include <a href="../../../cassert.html">&lt;cassert&gt;</a></span>
284+
285+
<span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span>
286+
<span class="p">{</span>
287+
<span class="w"> </span><span class="n"><a href="../../../vector/vector.html">std::vector</a></span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="w"> </span><span class="n">v</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">};</span>
288+
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">fv</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">v</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n"><a href="../../filter_view.html">std::views::filter</a></span><span class="p">([](</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="p">});</span>
289+
290+
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fv</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
291+
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fv</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
292+
293+
<span class="w"> </span><span class="c1">// aとbは同じ要素(2)を指すため等しい</span>
294+
<span class="w"> </span><span class="n"><a href="../../../cassert/assert.html">assert</a></span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">b</span><span class="p">);</span>
295+
296+
<span class="w"> </span><span class="o">++</span><span class="n">a</span><span class="p">;</span><span class="w"> </span><span class="c1">// aは次の偶数(4)を指す</span>
297+
<span class="w"> </span><span class="n"><a href="../../../cassert/assert.html">assert</a></span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">b</span><span class="p">);</span>
298+
<span class="p">}</span>
299+
</code></pre></div>
300+
</div></p>
301+
<h3>出力</h3>
302+
<p><pre><code></code></pre></p>
282303
<h2>バージョン</h2>
283304
<h3>言語</h3>
284305
<ul>

0 commit comments

Comments
 (0)