22<feed xmlns="http://www.w3.org/2005/Atom">
33 <title>cpprefjp - C++日本語リファレンス</title>
44 <link href="https://cpprefjp.github.io" />
5- <updated>2026-04-07T13:05:35.667698 </updated>
6- <id>add30dc3-cb30-4f85-a444-96afed76fc04 </id>
5+ <updated>2026-04-07T13:11:06.200947 </updated>
6+ <id>b313ee34-42be-420b-8fe9-41a8eceb7d1f </id>
77
88
9+ <entry>
10+ <title>コンセプトと変数テンプレートをテンプレート引数として渡せるようにする [P2841R7] -- コード修飾を追加</title>
11+ <link href="https://cpprefjp.github.io/lang/cpp26/concept_and_variable-template_template-parameters.html"/>
12+ <id>b2a6ab890935f23f70faacf5aac5d43c84a0fd9e:lang/cpp26/concept_and_variable-template_template-parameters.md</id>
13+ <updated>2026-04-07T22:06:31+09:00</updated>
14+
15+ <summary type="html"><pre><code>diff --git a/lang/cpp26/concept_and_variable-template_template-parameters.md b/lang/cpp26/concept_and_variable-template_template-parameters.md
16+ index 6decc9f00..6775b7bcb 100644
17+ --- a/lang/cpp26/concept_and_variable-template_template-parameters.md
18+ +++ b/lang/cpp26/concept_and_variable-template_template-parameters.md
19+ @@ -58,6 +58,7 @@ concept decays_to = C&lt;std::decay_t&lt;T&gt;&gt;;
20+ template &lt;decays_to&lt;std::copyable&gt; T&gt;
21+ auto f(T&amp;&amp; x);
22+ ```
23+ +* std::copyable[link /reference/concepts/copyable.md]
24+
25+ ### 変数テンプレートテンプレートパラメータ
26+ テンプレートパラメータリストにおいて、`auto`キーワードで変数テンプレートを受け取るパラメータを宣言できる。
27+ </code></pre></summary>
28+
29+ <author>
30+ <name>Akira Takahashi</name>
31+ <email>faithandbrave@gmail.com</email>
32+ </author>
33+ </entry>
34+
35+ <entry>
36+ <title>制約式内での畳み込み式の順序付け [P2963R3] -- コード修飾を追加</title>
37+ <link href="https://cpprefjp.github.io/lang/cpp26/ordering_of_constraints_involving_fold_expressions.html"/>
38+ <id>b2a6ab890935f23f70faacf5aac5d43c84a0fd9e:lang/cpp26/ordering_of_constraints_involving_fold_expressions.md</id>
39+ <updated>2026-04-07T22:06:31+09:00</updated>
40+
41+ <summary type="html"><pre><code>diff --git a/lang/cpp26/ordering_of_constraints_involving_fold_expressions.md b/lang/cpp26/ordering_of_constraints_involving_fold_expressions.md
42+ index f86aa70d5..3b64d8b34 100644
43+ --- a/lang/cpp26/ordering_of_constraints_involving_fold_expressions.md
44+ +++ b/lang/cpp26/ordering_of_constraints_involving_fold_expressions.md
45+ @@ -36,6 +36,8 @@ void g(T...);
46+ // C++26: C&lt;T&gt;はA&lt;T&gt;を包摂するため、2番目のオーバーロードが選択される
47+ g(std::vector{1, 2, 3});
48+ ```
49+ +* std::is_move_constructible_v[link /reference/type_traits/is_move_constructible.md]
50+ +* std::is_copy_constructible_v[link /reference/type_traits/is_copy_constructible.md]
51+
52+ C++26では、`&amp;&amp;`による畳み込み式は個別の制約の連言として、`||`による畳み込み式は個別の制約の選言として正規化され、通常の原子制約と同じ包摂規則が適用される。
53+
54+ @@ -73,7 +75,7 @@ f();
55+ ## この機能が必要になった背景・経緯
56+ コンセプトと畳み込み式は、可変引数テンプレートの制約を簡潔に記述するために組み合わせて使われることが多い。しかし、C++23では畳み込み式が原子制約として扱われるため、概念的に明らかな包摂関係が認識されず、オーバーロード解決が曖昧になる問題があった。
57+
58+ -たとえば、`std::ranges::bidirectional_range`と`std::ranges::random_access_range`は非可変引数テンプレートでは正しく順序付けられるが、可変引数テンプレートで畳み込み式を使用すると順序付けが失われていた。この提案はその問題を解決する。
59+ +たとえば、[`std::ranges::bidirectional_range`](/reference/ranges/bidirectional_range.md)と[`std::ranges::random_access_range`](/reference/ranges/random_access_range.md)は非可変引数テンプレートでは正しく順序付けられるが、可変引数テンプレートで畳み込み式を使用すると順序付けが失われていた。この提案はその問題を解決する。
60+
61+ この提案はP2841R0 (コンセプトと変数テンプレートのテンプレートテンプレートパラメータ) から派生したもので、畳み込み式のパターンが通常の制約式である場合を扱う。パターンがコンセプトテンプレートパラメータである場合はP2841で扱われる。
62+
63+ </code></pre></summary>
64+
65+ <author>
66+ <name>Akira Takahashi</name>
67+ <email>faithandbrave@gmail.com</email>
68+ </author>
69+ </entry>
70+
971 <entry>
1072 <title>コンパイラの実装状況 -- C++26: 畳み込み式の制約と、コンセプト・変数テンプレートのテンプレートテンプレートパラメータ対応を追加 (#1307 #1447)</title>
1173 <link href="https://cpprefjp.github.io/implementation-status.html"/>
@@ -8875,63 +8937,4 @@ index e52f66568..50c2e18b1 100644
88758937 </author>
88768938 </entry>
88778939
8878- <entry>
8879- <title>共用体の特殊メンバ関数のトリビアル化 [P3074R7] -- インデントを修正</title>
8880- <link href="https://cpprefjp.github.io/lang/cpp26/trivial_unions.html"/>
8881- <id>321f8d140117e4fa3530ed309c7233aaa4598df3:lang/cpp26/trivial_unions.md</id>
8882- <updated>2026-04-06T18:09:22+09:00</updated>
8883-
8884- <summary type="html"><pre><code>diff --git a/lang/cpp26/trivial_unions.md b/lang/cpp26/trivial_unions.md
8885- index bca9abfe9..418c69d5a 100644
8886- --- a/lang/cpp26/trivial_unions.md
8887- +++ b/lang/cpp26/trivial_unions.md
8888- @@ -15,25 +15,27 @@ C++26では、共用体 (`union`) のデフォルトコンストラクタとデ
8889- これにより、非トリビアルな型のメンバをもつ共用体を未初期化のストレージとして`constexpr`の文脈で使用できるようになる。
8890-
8891- ```cpp
8892- -template &lt;typename T, size_t N&gt;
8893- +template &lt;typename T, std::size_t N&gt;
8894- struct FixedVector {
8895- - union { T storage[N]; };
8896- - size_t size = 0;
8897- + union { T storage[N]; };
8898- + std::size_t size = 0;
8899-
8900- - // C++23まで: unionのコンストラクタ/デストラクタが削除されるためコンパイルエラー
8901- - // C++26: OK。unionのコンストラクタ/デストラクタはトリビアル
8902- - constexpr FixedVector() = default;
8903- + // C++23まで: unionのコンストラクタ/デストラクタが削除されるためコンパイルエラー
8904- + // C++26: OK。unionのコンストラクタ/デストラクタはトリビアル
8905- + constexpr FixedVector() = default;
8906-
8907- - constexpr ~FixedVector() {
8908- - std::destroy(storage, storage + size);
8909- - }
8910- + constexpr ~FixedVector() {
8911- + std::destroy(storage, storage + size);
8912- + }
8913-
8914- - constexpr auto push_back(T const&amp; v) -&gt; void {
8915- - std::construct_at(storage + size, v);
8916- - ++size;
8917- - }
8918- + constexpr auto push_back(T const&amp; v) -&gt; void {
8919- + std::construct_at(storage + size, v);
8920- + ++size;
8921- + }
8922- };
8923- ```
8924- +* std::construct_at[link /reference/memory/construct_at.md]
8925- +* std::destroy[link /reference/memory/destroy.md]
8926-
8927-
8928- ## 仕様
8929- </code></pre></summary>
8930-
8931- <author>
8932- <name>Akira Takahashi</name>
8933- <email>faithandbrave@gmail.com</email>
8934- </author>
8935- </entry>
8936-
89378940</feed>
0 commit comments