Skip to content

Commit 8af05d1

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent ead31c2 commit 8af05d1

File tree

3 files changed

+78
-69
lines changed

3 files changed

+78
-69
lines changed

lang/cpp26/structured_bindings_can_introduce_a_pack.html

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@
2828
<meta property="og:url" content="https://cpprefjp.github.io/lang/cpp26/structured_bindings_can_introduce_a_pack.html" />
2929
<meta property="og:site_name" content="cpprefjp - C++日本語リファレンス" />
3030
<meta property="og:type" content="article" />
31-
<meta property="og:description" content="C++26では、構造化束縛でタプルを分解する際に、パックで受け取れるようになる。" />
31+
<meta property="og:description" content="C++26では、構造化束縛でタプルを分解する際に、パックで受け取れるようになる。この記法はテンプレート内でのみ利用できる。" />
3232
<meta name="twitter:card" content="summary" />
3333
<meta name="twitter:title" content="構造化束縛でパックを導入できるようにする [P1061R10] - cpprefjp C++日本語リファレンス" />
3434
<meta name="twitter:url" content="https://cpprefjp.github.io/lang/cpp26/structured_bindings_can_introduce_a_pack.html" />
35-
<meta name="twitter:description" content="C++26では、構造化束縛でタプルを分解する際に、パックで受け取れるようになる。" />
35+
<meta name="twitter:description" content="C++26では、構造化束縛でタプルを分解する際に、パックで受け取れるようになる。この記法はテンプレート内でのみ利用できる。" />
3636

3737

3838
<link rel="alternate" type="application/atom+xml" title="Atom" href="https://cpprefjp.github.io/rss.xml" />
@@ -188,12 +188,12 @@
188188

189189
<p class="text-right"><small>
190190
最終更新日時(UTC):
191-
<span itemprop="datePublished" content="2025-07-10T01:26:30">
192-
2025年07月10日 01時26分30秒
191+
<span itemprop="datePublished" content="2025-09-12T01:46:45">
192+
2025年09月12日 01時46分45秒
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">yoh</span>
197197
</span>
198198
が更新
199199
</small></p>
@@ -218,15 +218,25 @@ <h1 itemprop="name"><span class="token">構造化束縛でパックを導入で
218218
<p>のちのC++規格でさらに変更される場合があるため<a href="#relative-page">関連項目</a>を参照してください。</p>
219219
<p></p>
220220
<h2>概要</h2>
221-
<p>C++26では、構造化束縛でタプルを分解する際に、パックで受け取れるようになる。</p>
221+
<p>C++26では、構造化束縛でタプルを分解する際に、パックで受け取れるようになる。この記法はテンプレート内でのみ利用できる。</p>
222222
<p><div class="codehilite"><pre><span></span><code><span class="n"><a href="../../reference/tuple/tuple.html">std::tuple</a></span><span class="o">&lt;</span><span class="n">X</span><span class="p">,</span> <span class="n">Y</span><span class="p">,</span> <span class="n">Z</span><span class="o">&gt;</span> <span class="n">f</span><span class="p">();</span>
223223

224-
<span class="k">auto</span> <span class="p">[</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="p">();</span> <span class="c1">// C++23: OK, C++26: OK</span>
225-
<span class="k">auto</span> <span class="p">[...</span><span class="n">xs</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="p">();</span> <span class="c1">// C++26: OK. パックxsは長さ3でX, Y, Zが含まれる</span>
226-
<span class="k">auto</span> <span class="p">[</span><span class="n">x</span><span class="p">,</span> <span class="p">...</span><span class="n">rest</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="p">();</span> <span class="c1">// C++26: OK. xはX、パックrestは長さ2でYとZが含まれる</span>
227-
<span class="k">auto</span> <span class="p">[</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span><span class="p">,</span> <span class="p">...</span><span class="n">rest</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="p">();</span> <span class="c1">// C++26: OK. restは空のパック</span>
228-
<span class="k">auto</span> <span class="p">[</span><span class="n">x</span><span class="p">,</span> <span class="p">...</span><span class="n">rest</span><span class="p">,</span> <span class="n">z</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="p">();</span> <span class="c1">// C++26: OK. xはX、パックrestは長さ1でYに対応、zはZ</span>
229-
<span class="k">auto</span> <span class="p">[...</span><span class="n">a</span><span class="p">,</span> <span class="p">...</span><span class="n">b</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="p">();</span> <span class="c1">// NG: 複数のパックは指定できない</span>
224+
<span class="k">template</span> <span class="o">&lt;</span><span class="n">class</span><span class="o">&gt;</span>
225+
<span class="kt">void</span> <span class="n">g</span><span class="p">()</span>
226+
<span class="p">{</span>
227+
<span class="k">auto</span> <span class="p">[</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="p">();</span> <span class="c1">// C++23: OK, C++26: OK</span>
228+
<span class="k">auto</span> <span class="p">[...</span><span class="n">xs</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="p">();</span> <span class="c1">// C++26: OK. パックxsは長さ3でX, Y, Zが含まれる</span>
229+
<span class="k">auto</span> <span class="p">[</span><span class="n">x</span><span class="p">,</span> <span class="p">...</span><span class="n">rest</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="p">();</span> <span class="c1">// C++26: OK. xはX、パックrestは長さ2でYとZが含まれる</span>
230+
<span class="k">auto</span> <span class="p">[</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span><span class="p">,</span> <span class="p">...</span><span class="n">rest</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="p">();</span> <span class="c1">// C++26: OK. restは空のパック</span>
231+
<span class="k">auto</span> <span class="p">[</span><span class="n">x</span><span class="p">,</span> <span class="p">...</span><span class="n">rest</span><span class="p">,</span> <span class="n">z</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="p">();</span> <span class="c1">// C++26: OK. xはX、パックrestは長さ1でYに対応、zはZ</span>
232+
<span class="k">auto</span> <span class="p">[...</span><span class="n">a</span><span class="p">,</span> <span class="p">...</span><span class="n">b</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="p">();</span> <span class="c1">// NG: 複数のパックは指定できない</span>
233+
<span class="p">}</span>
234+
235+
<span class="kt">void</span> <span class="n">h</span><span class="p">()</span>
236+
<span class="p">{</span>
237+
<span class="k">auto</span> <span class="p">[</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="p">();</span> <span class="c1">// C++23: OK, C++26: OK</span>
238+
<span class="k">auto</span> <span class="p">[...</span><span class="n">xs</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="p">();</span> <span class="c1">// NG: テンプレートの外では不適格となる</span>
239+
<span class="p">}</span>
230240
</code></pre></div>
231241
</p>
232242
<h3>std::apply()の実装改善</h3>

rss.xml

Lines changed: 55 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,63 @@
22
<feed xmlns="http://www.w3.org/2005/Atom">
33
<title>cpprefjp - C++日本語リファレンス</title>
44
<link href="https://cpprefjp.github.io" />
5-
<updated>2025-09-11T14:43:43.579201</updated>
6-
<id>5b3cb4c6-403e-4f17-8ef3-f08c469dffb0</id>
5+
<updated>2025-09-12T01:52:28.326640</updated>
6+
<id>db19257e-c4c5-420c-a310-19eb56bd5af4</id>
77

88

9+
<entry>
10+
<title>構造化束縛でパックを導入できるようにする [P1061R10] -- cpp26/structured_bindings_can_introduce_a_pack: テンプレート内でのみ有効 (#1376)</title>
11+
<link href="https://cpprefjp.github.io/lang/cpp26/structured_bindings_can_introduce_a_pack.html"/>
12+
<id>76555be2403ff70e2daa8f28f7fa6cc5338c9a47:lang/cpp26/structured_bindings_can_introduce_a_pack.md</id>
13+
<updated>2025-09-12T10:46:45+09:00</updated>
14+
15+
<summary type="html">&lt;pre&gt;&lt;code&gt;diff --git a/lang/cpp26/structured_bindings_can_introduce_a_pack.md b/lang/cpp26/structured_bindings_can_introduce_a_pack.md
16+
index 0eef804d9..70def2ae1 100644
17+
--- a/lang/cpp26/structured_bindings_can_introduce_a_pack.md
18+
+++ b/lang/cpp26/structured_bindings_can_introduce_a_pack.md
19+
@@ -10,17 +10,27 @@
20+
&amp;lt;!-- last lang caution --&amp;gt;
21+
22+
## 概要
23+
-C++26では、構造化束縛でタプルを分解する際に、パックで受け取れるようになる。
24+
+C++26では、構造化束縛でタプルを分解する際に、パックで受け取れるようになる。この記法はテンプレート内でのみ利用できる。
25+
26+
```cpp
27+
std::tuple&amp;lt;X, Y, Z&amp;gt; f();
28+
29+
-auto [x, y, z] = f(); // C++23: OK, C++26: OK
30+
-auto [...xs] = f(); // C++26: OK. パックxsは長さ3でX, Y, Zが含まれる
31+
-auto [x, ...rest] = f(); // C++26: OK. xはX、パックrestは長さ2でYとZが含まれる
32+
-auto [x, y, z, ...rest] = f(); // C++26: OK. restは空のパック
33+
-auto [x, ...rest, z] = f(); // C++26: OK. xはX、パックrestは長さ1でYに対応、zはZ
34+
-auto [...a, ...b] = f(); // NG: 複数のパックは指定できない
35+
+template &amp;lt;class&amp;gt;
36+
+void g()
37+
+{
38+
+ auto [x, y, z] = f(); // C++23: OK, C++26: OK
39+
+ auto [...xs] = f(); // C++26: OK. パックxsは長さ3でX, Y, Zが含まれる
40+
+ auto [x, ...rest] = f(); // C++26: OK. xはX、パックrestは長さ2でYとZが含まれる
41+
+ auto [x, y, z, ...rest] = f(); // C++26: OK. restは空のパック
42+
+ auto [x, ...rest, z] = f(); // C++26: OK. xはX、パックrestは長さ1でYに対応、zはZ
43+
+ auto [...a, ...b] = f(); // NG: 複数のパックは指定できない
44+
+}
45+
+
46+
+void h()
47+
+{
48+
+ auto [x, y, z] = f(); // C++23: OK, C++26: OK
49+
+ auto [...xs] = f(); // NG: テンプレートの外では不適格となる
50+
+}
51+
```
52+
53+
### std::apply()の実装改善
54+
&lt;/code&gt;&lt;/pre&gt;</summary>
55+
56+
<author>
57+
<name>yoh</name>
58+
<email>[email protected]</email>
59+
</author>
60+
</entry>
61+
962
<entry>
1063
<title>cstdio -- Merge pull request #1490 from rotarymars/master</title>
1164
<link href="https://cpprefjp.github.io/reference/cstdio.html"/>
@@ -2996,58 +3049,4 @@ index e27ee0a45..64ca67a18 100644
29963049
</author>
29973050
</entry>
29983051

2999-
<entry>
3000-
<title>定数式での`dynamic_cast`、多態的な`typeid`を許可 [P1327R1] -- コード例の include の不足を修正</title>
3001-
<link href="https://cpprefjp.github.io/lang/cpp20/allowing_dynamic_cast_polymorphic_typeid_in_constant_expressions.html"/>
3002-
<id>2e2e084e92532875c8d35931ce7b3dd7b1a5e199:lang/cpp20/allowing_dynamic_cast_polymorphic_typeid_in_constant_expressions.md</id>
3003-
<updated>2025-09-06T22:24:12+09:00</updated>
3004-
3005-
<summary type="html">&lt;pre&gt;&lt;code&gt;diff --git a/lang/cpp20/allowing_dynamic_cast_polymorphic_typeid_in_constant_expressions.md b/lang/cpp20/allowing_dynamic_cast_polymorphic_typeid_in_constant_expressions.md
3006-
index 309c3d4fd..ab04fc2aa 100644
3007-
--- a/lang/cpp20/allowing_dynamic_cast_polymorphic_typeid_in_constant_expressions.md
3008-
+++ b/lang/cpp20/allowing_dynamic_cast_polymorphic_typeid_in_constant_expressions.md
3009-
@@ -17,6 +17,9 @@ C++20より、`constexpr`関数内(定数式)で`dynamic_cast`および多
3010-
3011-
## 例
3012-
```cpp example
3013-
+#include &amp;lt;iostream&amp;gt;
3014-
+#include &amp;lt;typeinfo&amp;gt;
3015-
+
3016-
struct base {
3017-
virtual int f() const = 0;
3018-
};
3019-
&lt;/code&gt;&lt;/pre&gt;</summary>
3020-
3021-
<author>
3022-
<name>Raclamusi</name>
3023-
<email>[email protected]</email>
3024-
</author>
3025-
</entry>
3026-
3027-
<entry>
3028-
<title>未初期化変数の読み取りをエラー性動作とする [P2795R5] -- コード例の include の不足を修正</title>
3029-
<link href="https://cpprefjp.github.io/lang/cpp26/erroneous_behavior_for_uninitialized_reads.html"/>
3030-
<id>2e2e084e92532875c8d35931ce7b3dd7b1a5e199:lang/cpp26/erroneous_behavior_for_uninitialized_reads.md</id>
3031-
<updated>2025-09-06T22:24:12+09:00</updated>
3032-
3033-
<summary type="html">&lt;pre&gt;&lt;code&gt;diff --git a/lang/cpp26/erroneous_behavior_for_uninitialized_reads.md b/lang/cpp26/erroneous_behavior_for_uninitialized_reads.md
3034-
index d3f5519aa..777703aa8 100644
3035-
--- a/lang/cpp26/erroneous_behavior_for_uninitialized_reads.md
3036-
+++ b/lang/cpp26/erroneous_behavior_for_uninitialized_reads.md
3037-
@@ -53,6 +53,7 @@ int main() {
3038-
3039-
```cpp example
3040-
#include &amp;lt;cassert&amp;gt;
3041-
+#include &amp;lt;cstring&amp;gt;
3042-
3043-
int g(bool b) {
3044-
unsigned char c;
3045-
&lt;/code&gt;&lt;/pre&gt;</summary>
3046-
3047-
<author>
3048-
<name>Raclamusi</name>
3049-
<email>[email protected]</email>
3050-
</author>
3051-
</entry>
3052-
30533052
</feed>

sitemap.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41471,7 +41471,7 @@
4147141471

4147241472
<url>
4147341473
<loc>https://cpprefjp.github.io/lang/cpp26/structured_bindings_can_introduce_a_pack.html</loc>
41474-
<lastmod>2025-07-22T23:37:52+09:00</lastmod>
41474+
<lastmod>2025-09-12T10:46:45+09:00</lastmod>
4147541475
<changefreq>daily</changefreq>
4147641476
<priority>0.7</priority>
4147741477
</url>

0 commit comments

Comments
 (0)