Skip to content

Commit 922eff8

Browse files
Preview PR 1597: 7c04cf395faa01
1 parent 9b51aa9 commit 922eff8

5 files changed

Lines changed: 87 additions & 1968 deletions

File tree

gen/pull/1597/PREVIEW.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# PR [\#1597](https://github.com/cpprefjp/site/pull/1597) プレビュー
2-
- ⌚ 更新時刻: 2026-04-01 19:41:36 JST
2+
- ⌚ 更新時刻: 2026-04-01 21:40:59 JST
33
- 🔍 [プレビュー (HTML)](https://cpprefjp.github.io/site/gen/pull/1597)
44
- 📈 [プレビュー生成記録](https://github.com/cpprefjp/site/actions?query=event%3Apull_request_target+branch%3Afeat%2Franges_minmax-dangling)
5-
- **⫯** ソースの変更: [`95faa01..b09641b`](https://github.com/cpprefjp/site/compare/95faa017bbda880f37192b63b16f6442c1c47ab9..b09641b1266ce22aaa4e42acd457caa3080f23dc)
5+
- **⫯** ソースの変更: [`95faa01..7c04cf3`](https://github.com/cpprefjp/site/compare/95faa017bbda880f37192b63b16f6442c1c47ab9..7c04cf3f0acd2041ab79a63508c5dce99f2a17ae)
66

77
## 変更記事一覧 (1件)
88

gen/pull/1597/reference/algorithm/ranges_minmax.html

Lines changed: 21 additions & 8 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;function template&#34;], &#34;cpp&#34;: [&#34;cpp20&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;53465b82ec9f0bd288c699e2bed1f28e0429213a&#34;, &#34;source&#34;: &#34;#include &lt;cassert&gt;\n#include &lt;algorithm&gt;\n\nint main()\n{\n int x = 10;\n auto result1 = std::ranges::minmax(x, 11); // decltype(result1) == std::ranges::minmax_result&lt;const int&amp;&gt;\n assert(result1.min == 10); // ok: result1.min \u306f x\u3092\u53c2\u7167\u3057\u3066\u3044\u308b\n //assert(result1.max == 11); // \u672a\u5b9a\u7fa9\u52d5\u4f5c : result1.max\u306f\u5bff\u547d\u304c\u5c3d\u304d\u305f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8(\u53f3\u8fba\u502411)\u3092\u6307\u3057\u3066\u3044\u308b\u305f\u3081\u3001\n // \u305d\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u306f\u306a\u3089\u306a\u3044\n\n // \u69cb\u9020\u5316\u675f\u7e1b\u3092\u4f7f\u7528\u3057\u305f\u5834\u5408\u3082\u540c\u69d8\u306b\u672a\u5b9a\u7fa9\u52d5\u4f5c\u3092\u5f15\u304d\u8d77\u3053\u3059\n // auto [min_val, max_val] = std::ranges::minmax(x, 11);\n // max_val; // \u672a\u5b9a\u7fa9\u52d5\u4f5c : \u53f3\u8fba\u502411\u306e\u5bff\u547d\u306f\u5c3d\u304d\u3066\u3044\u308b\n\n // \u521d\u671f\u5316\u5b50\u30ea\u30b9\u30c8\u3084Range\u3092\u6e21\u3059\u30aa\u30fc\u30d0\u30fc\u30ed\u30fc\u30c9(2), (3)\u3067\u306f\u3001\u5024\u304c\u8fd4\u3055\u308c\u308b\u305f\u3081\u554f\u984c\u306a\u3044\n auto result2 = std::ranges::minmax({x, 11}); // decltype(result2) == std::ranges::minmax_result&lt;int&gt;\n assert(result2.min == 10); // ok: result2.min \u306f x\u306e\u30b3\u30d4\u30fc\u3092\u6301\u3063\u3066\u3044\u308b\n assert(result2.max == 11); // ok: result2.max \u306f \u53f3\u8fba\u502411\u306e\u30b3\u30d4\u30fc\u3092\u6301\u3063\u3066\u3044\u308b\n}\n&#34;}, {&#34;id&#34;: &#34;9a58b13d8f0a47189c7c3a8d331caf2669f5252f&#34;, &#34;source&#34;: &#34;#include &lt;array&gt;\n#include &lt;cassert&gt;\n#include &lt;algorithm&gt;\n#include &lt;functional&gt;\n\nint main()\n{\n const auto result1 = std::ranges::minmax(2, 3);\n assert(result1.min == 2 &amp;&amp; result1.max == 3);\n\n const auto result2 = std::ranges::minmax(2, 3, std::ranges::greater());\n assert(result2.min == 3 &amp;&amp; result2.max == 2);\n\n constexpr auto result3 = std::ranges::minmax({1, 2, 3});\n static_assert(result3.min == 1 &amp;&amp; result3.max == 3);\n\n constexpr std::array&lt;int, 3&gt; a = {1, 2, 3};\n\n constexpr auto result4 = std::ranges::minmax(a, std::ranges::greater());\n static_assert(result4.min == 3 &amp;&amp; result4.max == 1);\n}\n&#34;}, {&#34;id&#34;: &#34;dc42bede395e6c17be9958143560fb63f1036eb7&#34;, &#34;source&#34;: &#34;#include &lt;algorithm&gt;\n#include &lt;execution&gt;\n#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nint main() {\n std::vector&lt;int&gt; v = {3, 1, 4, 1, 5, 9, 2, 6};\n\n // \u4e26\u5217\u306b\u6700\u5c0f\u5024\u3068\u6700\u5927\u5024\u3092\u53d6\u5f97\n auto [min_val, max_val] = std::ranges::minmax(std::execution::par, v);\n std::cout &lt;&lt; min_val &lt;&lt; \&#34;, \&#34; &lt;&lt; max_val &lt;&lt; std::endl;\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;algorithm&#34;, &#34;ranges_minmax&#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;function template&#34;], &#34;cpp&#34;: [&#34;cpp20&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;53465b82ec9f0bd288c699e2bed1f28e0429213a&#34;, &#34;source&#34;: &#34;#include &lt;cassert&gt;\n#include &lt;algorithm&gt;\n\nint main()\n{\n int x = 10;\n auto result1 = std::ranges::minmax(x, 11); // decltype(result1) == std::ranges::minmax_result&lt;const int&amp;&gt;\n assert(result1.min == 10); // ok: result1.min \u306f x\u3092\u53c2\u7167\u3057\u3066\u3044\u308b\n //assert(result1.max == 11); // \u672a\u5b9a\u7fa9\u52d5\u4f5c : result1.max\u306f\u5bff\u547d\u304c\u5c3d\u304d\u305f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8(\u53f3\u8fba\u502411)\u3092\u6307\u3057\u3066\u3044\u308b\u305f\u3081\u3001\n // \u305d\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u306f\u306a\u3089\u306a\u3044\n\n // \u69cb\u9020\u5316\u675f\u7e1b\u3092\u4f7f\u7528\u3057\u305f\u5834\u5408\u3082\u540c\u69d8\u306b\u672a\u5b9a\u7fa9\u52d5\u4f5c\u3092\u5f15\u304d\u8d77\u3053\u3059\n // auto [min_val, max_val] = std::ranges::minmax(x, 11);\n // max_val; // \u672a\u5b9a\u7fa9\u52d5\u4f5c : \u53f3\u8fba\u502411\u306e\u5bff\u547d\u306f\u5c3d\u304d\u3066\u3044\u308b\n\n // \u521d\u671f\u5316\u5b50\u30ea\u30b9\u30c8\u3084Range\u3092\u6e21\u3059\u30aa\u30fc\u30d0\u30fc\u30ed\u30fc\u30c9(2), (3)\u3067\u306f\u3001\u5024\u304c\u8fd4\u3055\u308c\u308b\u305f\u3081\u554f\u984c\u306a\u3044\n auto result2 = std::ranges::minmax({x, 11}); // decltype(result2) == std::ranges::minmax_result&lt;int&gt;\n assert(result2.min == 10); // ok: result2.min \u306f x\u306e\u30b3\u30d4\u30fc\u3092\u6301\u3063\u3066\u3044\u308b\n assert(result2.max == 11); // ok: result2.max \u306f \u53f3\u8fba\u502411\u306e\u30b3\u30d4\u30fc\u3092\u6301\u3063\u3066\u3044\u308b\n}\n&#34;}, {&#34;id&#34;: &#34;01692344d5d990952f1807f769901d95965e5eed&#34;, &#34;source&#34;: &#34;#include &lt;algorithm&gt;\n#include &lt;array&gt;\n#include &lt;cassert&gt;\n#include &lt;functional&gt;\n\nint main()\n{\n const int x = 2;\n const int y = 3;\n\n // (1) 2\u3064\u306e\u5024\u3092\u53d7\u3051\u53d6\u308b\u30aa\u30fc\u30d0\u30fc\u30ed\u30fc\u30c9\n // \u53f3\u8fba\u5024(\u4e00\u6642\u30aa\u30d6\u30b8\u30a7\u30af\u30c8)\u3092\u6e21\u3059\u3068\u623b\u308a\u5024\u306e\u30e1\u30f3\u30d0\u304c\u30c0\u30f3\u30b0\u30ea\u30f3\u30b0\u53c2\u7167\u306b\u306a\u308b\u305f\u3081\u3001\u5de6\u8fba\u5024\u3092\u6e21\u3059\n const auto result1 = std::ranges::minmax(x, y);\n assert(result1.min == 2 &amp;&amp; result1.max == 3);\n\n const auto result2 = std::ranges::minmax(x, y, std::ranges::greater());\n assert(result2.min == 3 &amp;&amp; result2.max == 2);\n\n // NG! \u30c0\u30f3\u30b0\u30ea\u30f3\u30b0\u53c2\u7167\u304c\u767a\u751f\u3059\u308b\n // const auto result1 = std::ranges::minmax(2, 3);\n\n // (2) \u521d\u671f\u5316\u5b50\u30ea\u30b9\u30c8\u3092\u53d7\u3051\u53d6\u308b\u30aa\u30fc\u30d0\u30fc\u30ed\u30fc\u30c9\n constexpr auto result3 = std::ranges::minmax({1, 2, 3});\n static_assert(result3.min == 1 &amp;&amp; result3.max == 3);\n\n // \u69cb\u9020\u5316\u675f\u7e1b\u3082\u53ef\u80fd\n auto [min_val, max_val] = std::ranges::minmax({1, 2, 3}, std::ranges::greater());\n assert(min_val == 3 &amp;&amp; max_val == 1);\n\n // (3) Range\u3092\u53d7\u3051\u53d6\u308b\u30aa\u30fc\u30d0\u30fc\u30ed\u30fc\u30c9\n constexpr std::array&lt;int, 3&gt; a = {1, 2, 3};\n constexpr auto result4 = std::ranges::minmax(a, std::ranges::greater());\n static_assert(result4.min == 3 &amp;&amp; result4.max == 1);\n}\n&#34;}, {&#34;id&#34;: &#34;dc42bede395e6c17be9958143560fb63f1036eb7&#34;, &#34;source&#34;: &#34;#include &lt;algorithm&gt;\n#include &lt;execution&gt;\n#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nint main() {\n std::vector&lt;int&gt; v = {3, 1, 4, 1, 5, 9, 2, 6};\n\n // \u4e26\u5217\u306b\u6700\u5c0f\u5024\u3068\u6700\u5927\u5024\u3092\u53d6\u5f97\n auto [min_val, max_val] = std::ranges::minmax(std::execution::par, v);\n std::cout &lt;&lt; min_val &lt;&lt; \&#34;, \&#34; &lt;&lt; max_val &lt;&lt; std::endl;\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;algorithm&#34;, &#34;ranges_minmax&#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-04-01T10:36:52">
192-
2026年04月01日 10時36分52秒
191+
<span itemprop="datePublished" content="2026-04-01T12:36:15">
192+
2026年04月01日 12時36分15秒
193193
</span>
194194
<br/>
195195
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -302,24 +302,37 @@ <h2>備考</h2>
302302
</div></p>
303303
<h2></h2>
304304
<h3>基本的な使い方</h3>
305-
<p><div class="yata" id="9a58b13d8f0a47189c7c3a8d331caf2669f5252f"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../array.html">&lt;array&gt;</a></span>
305+
<p><div class="yata" id="01692344d5d990952f1807f769901d95965e5eed"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../algorithm.html">&lt;algorithm&gt;</a></span>
306+
<span class="cp">#include <a href="../array.html">&lt;array&gt;</a></span>
306307
<span class="cp">#include <a href="../cassert.html">&lt;cassert&gt;</a></span>
307-
<span class="cp">#include <a href="../algorithm.html">&lt;algorithm&gt;</a></span>
308308
<span class="cp">#include <a href="../functional.html">&lt;functional&gt;</a></span>
309309

310310
<span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span>
311311
<span class="p">{</span>
312-
<span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">result1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n"><span style="color:#ff0000">std::ranges::minmax</span></span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
312+
<span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
313+
<span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">y</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">3</span><span class="p">;</span>
314+
315+
<span class="w"> </span><span class="c1">// (1) 2つの値を受け取るオーバーロード</span>
316+
<span class="w"> </span><span class="c1">// 右辺値(一時オブジェクト)を渡すと戻り値のメンバがダングリング参照になるため、左辺値を渡す</span>
317+
<span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">result1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n"><span style="color:#ff0000">std::ranges::minmax</span></span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="n">y</span><span class="p">);</span>
313318
<span class="w"> </span><span class="n"><a href="../cassert/assert.html">assert</a></span><span class="p">(</span><span class="n">result1</span><span class="p">.</span><span class="n">min</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">&amp;&amp;</span><span class="w"> </span><span class="n">result1</span><span class="p">.</span><span class="n">max</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
314319

315-
<span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">result2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n"><span style="color:#ff0000">std::ranges::minmax</span></span><span class="p">(</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="n"><a href="../functional/ranges_greater.html">std::ranges::greater</a></span><span class="p">());</span>
320+
<span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">result2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n"><span style="color:#ff0000">std::ranges::minmax</span></span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="n">y</span><span class="p">,</span><span class="w"> </span><span class="n"><a href="../functional/ranges_greater.html">std::ranges::greater</a></span><span class="p">());</span>
316321
<span class="w"> </span><span class="n"><a href="../cassert/assert.html">assert</a></span><span class="p">(</span><span class="n">result2</span><span class="p">.</span><span class="n">min</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">result2</span><span class="p">.</span><span class="n">max</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
317322

323+
<span class="w"> </span><span class="c1">// NG! ダングリング参照が発生する</span>
324+
<span class="w"> </span><span class="c1">// const auto result1 = <span style="color:#ff0000">std::ranges::minmax</span>(2, 3);</span>
325+
326+
<span class="w"> </span><span class="c1">// (2) 初期化子リストを受け取るオーバーロード</span>
318327
<span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">result3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n"><span style="color:#ff0000">std::ranges::minmax</span></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>
319328
<span class="w"> </span><span class="k">static_assert</span><span class="p">(</span><span class="n">result3</span><span class="p">.</span><span class="n">min</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">result3</span><span class="p">.</span><span class="n">max</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
320329

321-
<span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n"><a href="../array/array.html">std::array</a></span><span class="o">&lt;</span><span class="kt">int</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="o">&gt;</span><span class="w"> </span><span class="n">a</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>
330+
<span class="w"> </span><span class="c1">// 構造化束縛も可能</span>
331+
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="p">[</span><span class="n">min_val</span><span class="p">,</span><span class="w"> </span><span class="n">max_val</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n"><span style="color:#ff0000">std::ranges::minmax</span></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="n"><a href="../functional/ranges_greater.html">std::ranges::greater</a></span><span class="p">());</span>
332+
<span class="w"> </span><span class="n"><a href="../cassert/assert.html">assert</a></span><span class="p">(</span><span class="n">min_val</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">max_val</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
322333

334+
<span class="w"> </span><span class="c1">// (3) Rangeを受け取るオーバーロード</span>
335+
<span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n"><a href="../array/array.html">std::array</a></span><span class="o">&lt;</span><span class="kt">int</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="o">&gt;</span><span class="w"> </span><span class="n">a</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>
323336
<span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">result4</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n"><span style="color:#ff0000">std::ranges::minmax</span></span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n"><a href="../functional/ranges_greater.html">std::ranges::greater</a></span><span class="p">());</span>
324337
<span class="w"> </span><span class="k">static_assert</span><span class="p">(</span><span class="n">result4</span><span class="p">.</span><span class="n">min</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">result4</span><span class="p">.</span><span class="n">max</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
325338
<span class="p">}</span>

0 commit comments

Comments
 (0)