Skip to content

Commit 18237b5

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent 8a85ddc commit 18237b5

File tree

4 files changed

+74
-71
lines changed

4 files changed

+74
-71
lines changed

lang/cpp26/concept_and_variable-template_template-parameters.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,8 @@
188188

189189
<p class="text-right"><small>
190190
最終更新日時(UTC):
191-
<span itemprop="datePublished" content="2026-04-07T13:01:19">
192-
2026年04月07日 13時01分19秒
191+
<span itemprop="datePublished" content="2026-04-07T13:06:31">
192+
2026年04月07日 13時06分31秒
193193
</span>
194194
<br/>
195195
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -255,7 +255,7 @@ <h3>コンセプトテンプレートパラメータ</h3>
255255
<span class="k">concept</span><span class="w"> </span><span class="nc">decays_to</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">C</span><span class="o">&lt;</span><span class="n"><a href="../../reference/type_traits/decay.html">std::decay_t</a></span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;&gt;</span><span class="p">;</span>
256256

257257
<span class="c1">// 簡略構文での使用</span>
258-
<span class="k">template</span><span class="w"> </span><span class="o">&lt;</span><span class="n">decays_to</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">copyable</span><span class="o">&gt;</span><span class="w"> </span><span class="n">T</span><span class="o">&gt;</span>
258+
<span class="k">template</span><span class="w"> </span><span class="o">&lt;</span><span class="n">decays_to</span><span class="o">&lt;</span><span class="n"><a href="../../reference/concepts/copyable.html">std::copyable</a></span><span class="o">&gt;</span><span class="w"> </span><span class="n">T</span><span class="o">&gt;</span>
259259
<span class="k">auto</span><span class="w"> </span><span class="n">f</span><span class="p">(</span><span class="n">T</span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">x</span><span class="p">);</span>
260260
</code></pre></div>
261261
</p>

lang/cpp26/ordering_of_constraints_involving_fold_expressions.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,8 @@
188188

189189
<p class="text-right"><small>
190190
最終更新日時(UTC):
191-
<span itemprop="datePublished" content="2026-04-07T13:01:19">
192-
2026年04月07日 13時01分19秒
191+
<span itemprop="datePublished" content="2026-04-07T13:06:31">
192+
2026年04月07日 13時06分31秒
193193
</span>
194194
<br/>
195195
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -221,10 +221,10 @@ <h2>概要</h2>
221221
<p>C++26では、制約式 (constraint) 内で使用される畳み込み式 (fold expression) に対して、包摂関係 (subsumption) の規則を導入する。</p>
222222
<p>C++23では、<code>(C&lt;T&gt; &amp;&amp; ...)</code>のような畳み込み式は構文上は連言 (conjunction) や選言 (disjunction) のように見えるが、制約の順序付けにおいては単一の原子制約 (atomic constraint) として扱われていた。そのため、概念的には一方がもう一方をより強く制約しているにもかかわらず、<a class="cpprefjp-defined-word" data-desc="関数呼び出し時に、同名の関数の中から実際に呼び出す関数を決定する処理。このときの候補になることを、オーバーロード解決に参加するという">オーバーロード解決</a>で曖昧になるケースがあった。</p>
223223
<p><div class="codehilite"><pre><span></span><code><span class="k">template</span><span class="w"> </span><span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="nc">T</span><span class="o">&gt;</span>
224-
<span class="k">concept</span><span class="w"> </span><span class="nc">A</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">is_move_constructible_v</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="p">;</span>
224+
<span class="k">concept</span><span class="w"> </span><span class="nc">A</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n"><a href="../../reference/type_traits/is_move_constructible.html">std::is_move_constructible_v</a></span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="p">;</span>
225225

226226
<span class="k">template</span><span class="w"> </span><span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="nc">T</span><span class="o">&gt;</span>
227-
<span class="k">concept</span><span class="w"> </span><span class="nc">B</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">is_copy_constructible_v</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="p">;</span>
227+
<span class="k">concept</span><span class="w"> </span><span class="nc">B</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n"><a href="../../reference/type_traits/is_copy_constructible.html">std::is_copy_constructible_v</a></span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="p">;</span>
228228

229229
<span class="k">template</span><span class="w"> </span><span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="nc">T</span><span class="o">&gt;</span>
230230
<span class="k">concept</span><span class="w"> </span><span class="nc">C</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">A</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">B</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="p">;</span>
@@ -271,7 +271,7 @@ <h3>短絡評価</h3>
271271
<p>畳み込み式の制約の評価と充足 (satisfaction) は、通常の連言/選言と同様に短絡評価される。</p>
272272
<h2>この機能が必要になった背景・経緯</h2>
273273
<p>コンセプトと畳み込み式は、可変引数テンプレートの制約を簡潔に記述するために組み合わせて使われることが多い。しかし、C++23では畳み込み式が原子制約として扱われるため、概念的に明らかな包摂関係が認識されず、<a class="cpprefjp-defined-word" data-desc="関数呼び出し時に、同名の関数の中から実際に呼び出す関数を決定する処理。このときの候補になることを、オーバーロード解決に参加するという">オーバーロード解決</a>が曖昧になる問題があった。</p>
274-
<p>たとえば、<code>std::ranges::bidirectional_range</code><code>std::ranges::random_access_range</code>は非可変引数テンプレートでは正しく順序付けられるが、可変引数テンプレートで畳み込み式を使用すると順序付けが失われていた。この提案はその問題を解決する。</p>
274+
<p>たとえば、<code><a href="../../reference/ranges/bidirectional_range.html">std::ranges::bidirectional_range</a></code><code><a href="../../reference/ranges/random_access_range.html">std::ranges::random_access_range</a></code>は非可変引数テンプレートでは正しく順序付けられるが、可変引数テンプレートで畳み込み式を使用すると順序付けが失われていた。この提案はその問題を解決する。</p>
275275
<p>この提案はP2841R0 (コンセプトと変数テンプレートのテンプレートテンプレートパラメータ) から派生したもので、畳み込み式のパターンが通常の制約式である場合を扱う。パターンがコンセプトテンプレートパラメータである場合はP2841で扱われる。</p>
276276
<h2><a href="#relative-page" id="relative-page">関連項目</a></h2>
277277
<ul>

rss.xml

Lines changed: 64 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,72 @@
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">&lt;pre&gt;&lt;code&gt;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&amp;lt;std::decay_t&amp;lt;T&amp;gt;&amp;gt;;
20+
template &amp;lt;decays_to&amp;lt;std::copyable&amp;gt; T&amp;gt;
21+
auto f(T&amp;amp;&amp;amp; x);
22+
```
23+
+* std::copyable[link /reference/concepts/copyable.md]
24+
25+
### 変数テンプレートテンプレートパラメータ
26+
テンプレートパラメータリストにおいて、`auto`キーワードで変数テンプレートを受け取るパラメータを宣言できる。
27+
&lt;/code&gt;&lt;/pre&gt;</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">&lt;pre&gt;&lt;code&gt;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&amp;lt;T&amp;gt;はA&amp;lt;T&amp;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;&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+
&lt;/code&gt;&lt;/pre&gt;</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">&lt;pre&gt;&lt;code&gt;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 &amp;lt;typename T, size_t N&amp;gt;
8893-
+template &amp;lt;typename T, std::size_t N&amp;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;amp; v) -&amp;gt; void {
8915-
- std::construct_at(storage + size, v);
8916-
- ++size;
8917-
- }
8918-
+ constexpr auto push_back(T const&amp;amp; v) -&amp;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-
&lt;/code&gt;&lt;/pre&gt;</summary>
8930-
8931-
<author>
8932-
<name>Akira Takahashi</name>
8933-
<email>faithandbrave@gmail.com</email>
8934-
</author>
8935-
</entry>
8936-
89378940
</feed>

sitemap.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1809,7 +1809,7 @@
18091809

18101810
<url>
18111811
<loc>https://cpprefjp.github.io/lang/cpp26/ordering_of_constraints_involving_fold_expressions.html</loc>
1812-
<lastmod>2026-04-07T22:01:19+09:00</lastmod>
1812+
<lastmod>2026-04-07T22:06:31+09:00</lastmod>
18131813
<changefreq>daily</changefreq>
18141814
<priority>0.7</priority>
18151815
</url>
@@ -1984,7 +1984,7 @@
19841984

19851985
<url>
19861986
<loc>https://cpprefjp.github.io/lang/cpp26/concept_and_variable-template_template-parameters.html</loc>
1987-
<lastmod>2026-04-07T22:01:19+09:00</lastmod>
1987+
<lastmod>2026-04-07T22:06:31+09:00</lastmod>
19881988
<changefreq>daily</changefreq>
19891989
<priority>0.7</priority>
19901990
</url>

0 commit comments

Comments
 (0)