Skip to content

Commit 5918d2a

Browse files
Preview PR 1599: e3a41f918aae7e
1 parent d265845 commit 5918d2a

5 files changed

Lines changed: 73 additions & 42 deletions

File tree

gen/pull/1599/PREVIEW.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
# PR [\#1599](https://github.com/cpprefjp/site/pull/1599) プレビュー
2-
- ⌚ 更新時刻: 2026-04-02 12:31:24 JST
2+
- ⌚ 更新時刻: 2026-04-02 13:03:46 JST
33
- 🔍 [プレビュー (HTML)](https://cpprefjp.github.io/site/gen/pull/1599)
44
- 📈 [プレビュー生成記録](https://github.com/cpprefjp/site/actions?query=event%3Apull_request_target+branch%3Afeat%2F%231598-dangling)
5-
- **⫯** ソースの変更: [`18aae7e..c24e241`](https://github.com/cpprefjp/site/compare/18aae7ed9e191ca5c790f297c4d107cd2594cac9..c24e2417631f1b0fad0e0b0e3fa57ddad471ba8e)
5+
- **⫯** ソースの変更: [`18aae7e..e3a41f9`](https://github.com/cpprefjp/site/compare/18aae7ed9e191ca5c790f297c4d107cd2594cac9..e3a41f9b2e81405ea731e657a51721900b7751a8)
66

7-
## 変更記事一覧 (5件)
7+
## 変更記事一覧 (7件)
88

9+
- 📝 [`reference/functional/function_ref`](https://cpprefjp.github.io/site/gen/pull/1599/reference/functional/function_ref.html)
10+
- 📝 [`reference/generator/generator`](https://cpprefjp.github.io/site/gen/pull/1599/reference/generator/generator.html)
911
- 📝 [`reference/iterator/reverse_iterator/op_deref`](https://cpprefjp.github.io/site/gen/pull/1599/reference/iterator/reverse_iterator/op_deref.html)
1012
- 📝 [`reference/string/basic_string/subview`](https://cpprefjp.github.io/site/gen/pull/1599/reference/string/basic_string/subview.html)
1113
- 📝 [`reference/valarray/gslice_array/op_constructor`](https://cpprefjp.github.io/site/gen/pull/1599/reference/valarray/gslice_array/op_constructor.html)

gen/pull/1599/reference/functional/function_ref.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="2026-02-11T06:05:02">
192-
2026年02月11日 06時05分02秒
191+
<span itemprop="datePublished" content="2026-04-02T03:57:17">
192+
2026年04月02日 03時57分17秒
193193
</span>
194194
<br/>
195195
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
196-
<span itemprop="name">yoh</span>
196+
<span itemprop="name">teruyamato0731</span>
197197
</span>
198198
が更新
199199
</small></p>
@@ -246,7 +246,7 @@ <h3><code>function</code>ファミリとの比較</h3>
246246
<li>対象オブジェクトの束縛タイミングは、構築時または呼び出し時のいずれもサポートする。</li>
247247
</ul>
248248
</li>
249-
<li><a class="cpprefjp-defined-word" data-desc="dangling。寿命が尽きた無効なオブジェクトやメモリ領域を、ポインタ・参照・イテレータなどが指し続けている状態のこと。これらにアクセスすると未定義の動作を引き起こす">ダングリング</a>(dangling)参照を避けるため、左辺値(lvalue)のみを取り扱う。</li>
249+
<li><a class="cpprefjp-defined-word" data-desc="dangling。寿命が尽きた無効なオブジェクトやメモリ領域を、ポインタ・参照・イテレータなどが指し続けている状態のこと。これらにアクセスすると未定義の動作を引き起こす">ダングリング</a>参照を避けるため、左辺値(lvalue)のみを取り扱う。</li>
250250
</ul>
251251
<h2>メンバ関数</h2>
252252
<table border="1" bordercolor="#888" style="border-collapse:collapse">

gen/pull/1599/reference/generator/generator.html

Lines changed: 6 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;generator&#34;], &#34;id-type&#34;: [&#34;class template&#34;], &#34;namespace&#34;: [&#34;std&#34;], &#34;cpp&#34;: [&#34;cpp23&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;ecab885884bd18f44953a55fe6ebab39ddd0fd15&#34;, &#34;source&#34;: &#34;#include &lt;generator&gt;\n#include &lt;ranges&gt;\n#include &lt;iostream&gt;\n\n// \u5076\u6570\u5024\u5217\u3092\u7121\u9650\u751f\u6210\u3059\u308b\u30b3\u30eb\u30fc\u30c1\u30f3\nstd::generator&lt;int&gt; evens()\n{\n int n = 0;\n while (true) {\n co_yield n;\n n += 2;\n }\n}\n\nint main()\n{\n // \u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u306b\u3088\u308a\u751f\u6210\u3055\u308c\u308bRange\u306e\u3046\u3061\n // \u5148\u982d\u304b\u30895\u500b\u307e\u3067\u306e\u8981\u7d20\u5024\u3092\u5217\u6319\u3059\u308b\n for (int n : evens() | std::views::take(5)) {\n std::cout &lt;&lt; n &lt;&lt; std::endl;\n }\n}\n&#34;}, {&#34;id&#34;: &#34;03a2910e503e17fc0c29ff40ea6be1973073a859&#34;, &#34;source&#34;: &#34;#include &lt;generator&gt;\n#include &lt;iostream&gt;\n#include &lt;list&gt;\n#include &lt;ranges&gt;\n#include &lt;vector&gt;\n\n// Range\u306e\u8981\u7d20\u5024\u3092\u9010\u6b21\u751f\u6210\u3059\u308b\u30b3\u30eb\u30fc\u30c1\u30f3\nstd::generator&lt;int&gt; ints()\n{\n int arr[] = {1, 2, 3};\n co_yield std::ranges::elements_of(arr);\n std::vector&lt;int&gt; vec = {4, 5, 6};\n co_yield std::ranges::elements_of(vec);\n std::list&lt;int&gt; lst = {7, 8, 9};\n co_yield std::ranges::elements_of(lst);\n}\n\nint main()\n{\n for (int n : ints()) {\n std::cout &lt;&lt; n &lt;&lt; &#39; &#39;;\n }\n}\n&#34;}, {&#34;id&#34;: &#34;0244c20c28c805764a6df1ab70fa57b55253dca7&#34;, &#34;source&#34;: &#34;#include &lt;generator&gt;\n#include &lt;iostream&gt;\n#include &lt;ranges&gt;\n#include &lt;memory&gt;\n\n// \u4e8c\u5206\u6728\u30ce\u30fc\u30c9\nstruct node {\n int value;\n std::unique_ptr&lt;node&gt; left = nullptr;\n std::unique_ptr&lt;node&gt; right = nullptr;\n};\n\n// \u4e8c\u5206\u6728\u3092\u8d70\u67fb: \u5de6(left)\u2192\u81ea\u30ce\u30fc\u30c9\u2192\u53f3(right)\nstd::generator&lt;int&gt; traverse(const node&amp; e)\n{\n if (e.left) {\n co_yield std::ranges::elements_of(traverse(*e.left));\n }\n co_yield e.value;\n if (e.right) {\n co_yield std::ranges::elements_of(traverse(*e.right));\n }\n}\n\nint main()\n{\n // tree:\n // 2\n // / \u00a5\n // 1 4\n // / \u00a5\n // 3 5\n node tree = {\n 2,\n std::make_unique&lt;node&gt;(1),\n std::make_unique&lt;node&gt;(\n 4,\n std::make_unique&lt;node&gt;(3),\n std::make_unique&lt;node&gt;(5)\n ),\n };\n\n for (int n: traverse(tree)) {\n std::cout &lt;&lt; n &lt;&lt; std::endl;\n }\n}\n&#34;}, {&#34;id&#34;: &#34;756f5011931d68b80b0a20f185be0e7c2f91328b&#34;, &#34;source&#34;: &#34;#include &lt;iostream&gt;\n#include &lt;generator&gt;\n#include &lt;ranges&gt;\n#include &lt;string&gt;\n#include &lt;string_view&gt;\n#include &lt;vector&gt;\n\n// Ref=string_view, V=string \u306e\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u30b3\u30eb\u30fc\u30c1\u30f3\nauto fizzbuzz() -&gt;\n std::generator&lt;std::string_view, std::string&gt;\n{\n for (size_t i = 1; ; ++i) {\n if (i % 15 == 0) {\n co_yield \&#34;FizzBuzz\&#34;;\n } else if (i % 3 == 0) {\n co_yield \&#34;Fizz\&#34;;\n } else if (i % 5 == 0) {\n co_yield \&#34;Buzz\&#34;;\n } else {\n co_yield std::to_string(i);\n }\n }\n}\n\nint main()\n{\n // std::ranges::to&lt;C&gt;() \u306f\u5909\u63db\u5143Range\u306e range_value_t \u3092\u5229\u7528\u3057\u3066\u623b\u308a\u5024\u578b\u3092\u6c7a\u5b9a\u3059\u308b\u3002\n // \u3053\u3053\u3067\u306f std::vector&lt;std::string&gt; \u578b\u3092\u5c0e\u51fa\u3059\u308b\u305f\u3081\u306b\u3001\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u30b3\u30eb\u30fc\u30c1\u30f3\u306e\n // \u7b2c2\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d1\u30e9\u30e1\u30fc\u30bf V = std::string \u3068\u3057\u3066\u660e\u793a\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002\n auto vec = fizzbuzz() | std::views::take(15) | std::ranges::to&lt;std::vector&gt;();\n\n // \u3082\u3057 fizzbuzz() \u623b\u308a\u5024\u578b\u304c std::generator&lt;std::string_view&gt; \u3067\u3042\u3063\u305f\u5834\u5408\u3001\n // \u5909\u6570 vec \u306f std::vector&lt;std::string_view&gt; \u578b\u3068\u306a\u308b\u3002\u3053\u306e\u3068\u304d\u30b3\u30eb\u30fc\u30c1\u30f3\u5185\u90e8\u5b9f\u88c5\u306e\n // std::to_string() \u306e\u623b\u308a\u5024 std::string \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306fco_yield\u5f0f\u672b\u5c3e\u3067\u5bff\u547d\u304c\u5207\u308c\u308b\u305f\u3081\u3001\n // \u5404\u8981\u7d20 vec[i] \u306b\u683c\u7d0d\u3055\u308c\u308b std::string_view \u306f\u30c0\u30f3\u30b0\u30ea\u30f3\u30b0(dangling)\u72b6\u614b\u306b\u306a\u3063\u3066\u3057\u307e\u3046\u3002\n\n for (const auto&amp; e : vec) {\n std::cout &lt;&lt; e &lt;&lt; std::endl;\n }\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;generator&#34;, &#34;generator&#34;]}">
71+
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;generator&#34;], &#34;id-type&#34;: [&#34;class template&#34;], &#34;namespace&#34;: [&#34;std&#34;], &#34;cpp&#34;: [&#34;cpp23&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;ecab885884bd18f44953a55fe6ebab39ddd0fd15&#34;, &#34;source&#34;: &#34;#include &lt;generator&gt;\n#include &lt;ranges&gt;\n#include &lt;iostream&gt;\n\n// \u5076\u6570\u5024\u5217\u3092\u7121\u9650\u751f\u6210\u3059\u308b\u30b3\u30eb\u30fc\u30c1\u30f3\nstd::generator&lt;int&gt; evens()\n{\n int n = 0;\n while (true) {\n co_yield n;\n n += 2;\n }\n}\n\nint main()\n{\n // \u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u306b\u3088\u308a\u751f\u6210\u3055\u308c\u308bRange\u306e\u3046\u3061\n // \u5148\u982d\u304b\u30895\u500b\u307e\u3067\u306e\u8981\u7d20\u5024\u3092\u5217\u6319\u3059\u308b\n for (int n : evens() | std::views::take(5)) {\n std::cout &lt;&lt; n &lt;&lt; std::endl;\n }\n}\n&#34;}, {&#34;id&#34;: &#34;03a2910e503e17fc0c29ff40ea6be1973073a859&#34;, &#34;source&#34;: &#34;#include &lt;generator&gt;\n#include &lt;iostream&gt;\n#include &lt;list&gt;\n#include &lt;ranges&gt;\n#include &lt;vector&gt;\n\n// Range\u306e\u8981\u7d20\u5024\u3092\u9010\u6b21\u751f\u6210\u3059\u308b\u30b3\u30eb\u30fc\u30c1\u30f3\nstd::generator&lt;int&gt; ints()\n{\n int arr[] = {1, 2, 3};\n co_yield std::ranges::elements_of(arr);\n std::vector&lt;int&gt; vec = {4, 5, 6};\n co_yield std::ranges::elements_of(vec);\n std::list&lt;int&gt; lst = {7, 8, 9};\n co_yield std::ranges::elements_of(lst);\n}\n\nint main()\n{\n for (int n : ints()) {\n std::cout &lt;&lt; n &lt;&lt; &#39; &#39;;\n }\n}\n&#34;}, {&#34;id&#34;: &#34;0244c20c28c805764a6df1ab70fa57b55253dca7&#34;, &#34;source&#34;: &#34;#include &lt;generator&gt;\n#include &lt;iostream&gt;\n#include &lt;ranges&gt;\n#include &lt;memory&gt;\n\n// \u4e8c\u5206\u6728\u30ce\u30fc\u30c9\nstruct node {\n int value;\n std::unique_ptr&lt;node&gt; left = nullptr;\n std::unique_ptr&lt;node&gt; right = nullptr;\n};\n\n// \u4e8c\u5206\u6728\u3092\u8d70\u67fb: \u5de6(left)\u2192\u81ea\u30ce\u30fc\u30c9\u2192\u53f3(right)\nstd::generator&lt;int&gt; traverse(const node&amp; e)\n{\n if (e.left) {\n co_yield std::ranges::elements_of(traverse(*e.left));\n }\n co_yield e.value;\n if (e.right) {\n co_yield std::ranges::elements_of(traverse(*e.right));\n }\n}\n\nint main()\n{\n // tree:\n // 2\n // / \u00a5\n // 1 4\n // / \u00a5\n // 3 5\n node tree = {\n 2,\n std::make_unique&lt;node&gt;(1),\n std::make_unique&lt;node&gt;(\n 4,\n std::make_unique&lt;node&gt;(3),\n std::make_unique&lt;node&gt;(5)\n ),\n };\n\n for (int n: traverse(tree)) {\n std::cout &lt;&lt; n &lt;&lt; std::endl;\n }\n}\n&#34;}, {&#34;id&#34;: &#34;af4d406ed6b7a592492f2e377d090f1af3d91682&#34;, &#34;source&#34;: &#34;#include &lt;iostream&gt;\n#include &lt;generator&gt;\n#include &lt;ranges&gt;\n#include &lt;string&gt;\n#include &lt;string_view&gt;\n#include &lt;vector&gt;\n\n// Ref=string_view, V=string \u306e\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u30b3\u30eb\u30fc\u30c1\u30f3\nauto fizzbuzz() -&gt;\n std::generator&lt;std::string_view, std::string&gt;\n{\n for (size_t i = 1; ; ++i) {\n if (i % 15 == 0) {\n co_yield \&#34;FizzBuzz\&#34;;\n } else if (i % 3 == 0) {\n co_yield \&#34;Fizz\&#34;;\n } else if (i % 5 == 0) {\n co_yield \&#34;Buzz\&#34;;\n } else {\n co_yield std::to_string(i);\n }\n }\n}\n\nint main()\n{\n // std::ranges::to&lt;C&gt;() \u306f\u5909\u63db\u5143Range\u306e range_value_t \u3092\u5229\u7528\u3057\u3066\u623b\u308a\u5024\u578b\u3092\u6c7a\u5b9a\u3059\u308b\u3002\n // \u3053\u3053\u3067\u306f std::vector&lt;std::string&gt; \u578b\u3092\u5c0e\u51fa\u3059\u308b\u305f\u3081\u306b\u3001\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u30b3\u30eb\u30fc\u30c1\u30f3\u306e\n // \u7b2c2\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d1\u30e9\u30e1\u30fc\u30bf V = std::string \u3068\u3057\u3066\u660e\u793a\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002\n auto vec = fizzbuzz() | std::views::take(15) | std::ranges::to&lt;std::vector&gt;();\n\n // \u3082\u3057 fizzbuzz() \u623b\u308a\u5024\u578b\u304c std::generator&lt;std::string_view&gt; \u3067\u3042\u3063\u305f\u5834\u5408\u3001\n // \u5909\u6570 vec \u306f std::vector&lt;std::string_view&gt; \u578b\u3068\u306a\u308b\u3002\u3053\u306e\u3068\u304d\u30b3\u30eb\u30fc\u30c1\u30f3\u5185\u90e8\u5b9f\u88c5\u306e\n // std::to_string() \u306e\u623b\u308a\u5024 std::string \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306fco_yield\u5f0f\u672b\u5c3e\u3067\u5bff\u547d\u304c\u5207\u308c\u308b\u305f\u3081\u3001\n // \u5404\u8981\u7d20 vec[i] \u306b\u683c\u7d0d\u3055\u308c\u308b std::string_view \u306f\u30c0\u30f3\u30b0\u30ea\u30f3\u30b0\u72b6\u614b\u306b\u306a\u3063\u3066\u3057\u307e\u3046\u3002\n\n for (const auto&amp; e : vec) {\n std::cout &lt;&lt; e &lt;&lt; std::endl;\n }\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;generator&#34;, &#34;generator&#34;]}">
7272
<nav class="navbar navbar-default" role="navigation">
7373
<div class="container-fluid">
7474
<div class="navbar-header">
@@ -188,12 +188,12 @@
188188

189189
<p class="text-right"><small>
190190
最終更新日時(UTC):
191-
<span itemprop="datePublished" content="2025-08-31T12:36:04">
192-
2025年08月31日 12時36分04秒
191+
<span itemprop="datePublished" content="2026-04-02T03:57:17">
192+
2026年04月02日 03時57分17秒
193193
</span>
194194
<br/>
195195
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
196-
<span itemprop="name">Raclamusi</span>
196+
<span itemprop="name">teruyamato0731</span>
197197
</span>
198198
が更新
199199
</small></p>
@@ -567,7 +567,7 @@ <h4>出力</h4>
567567
5
568568
</code></pre></p>
569569
<h3>例4: 第2テンプレートパラメータVの利用</h3>
570-
<p><div class="yata" id="756f5011931d68b80b0a20f185be0e7c2f91328b"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../iostream.html">&lt;iostream&gt;</a></span>
570+
<p><div class="yata" id="af4d406ed6b7a592492f2e377d090f1af3d91682"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../iostream.html">&lt;iostream&gt;</a></span>
571571
<span class="cp">#include <a href="../generator.html">&lt;generator&gt;</a></span>
572572
<span class="cp">#include <a href="../ranges.html">&lt;ranges&gt;</a></span>
573573
<span class="cp">#include <a href="../string.html">&lt;string&gt;</a></span>
@@ -601,7 +601,7 @@ <h3>例4: 第2テンプレートパラメータVの利用</h3>
601601
<span class="w"> </span><span class="c1">// もし fizzbuzz() 戻り値型が <span style="color:#ff0000">std::generator</span>&lt;<a href="../string_view/basic_string_view.html">std::string_view</a>&gt; であった場合、</span>
602602
<span class="w"> </span><span class="c1">// 変数 vec は <a href="../vector/vector.html">std::vector</a>&lt;<a href="../string_view/basic_string_view.html">std::string_view</a>&gt; 型となる。このときコルーチン内部実装の</span>
603603
<span class="w"> </span><span class="c1">// <a href="../string/to_string.html">std::to_string</a>() の戻り値 <a href="../string/basic_string.html">std::string</a> オブジェクトは<a href="../../lang/cpp20/coroutines.html">co_yield</a>式末尾で寿命が切れるため、</span>
604-
<span class="w"> </span><span class="c1">// 各要素 vec[i] に格納される <a href="../string_view/basic_string_view.html">std::string_view</a> はダングリング(dangling)状態になってしまう</span>
604+
<span class="w"> </span><span class="c1">// 各要素 vec[i] に格納される <a href="../string_view/basic_string_view.html">std::string_view</a> はダングリング状態になってしまう</span>
605605

606606
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">auto</span><span class="o">&amp;</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">vec</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
607607
<span class="w"> </span><span class="n"><a href="../iostream/cout.html">std::cout</a></span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">e</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n"><a href="../ostream/endl.html">std::endl</a></span><span class="p">;</span>

0 commit comments

Comments
 (0)