Skip to content

Commit fb33441

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent e453bae commit fb33441

File tree

3 files changed

+41
-329
lines changed

3 files changed

+41
-329
lines changed

lang/cpp23/trimming_whitespaces_before_line_splicing.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="2024-07-08T07:33:21">
192-
2024年07月08日 07時33分21秒
191+
<span itemprop="datePublished" content="2025-01-21T02:42:00">
192+
2025年01月21日 02時42分00秒
193193
</span>
194194
<br/>
195195
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
196-
<span itemprop="name">Akira Takahashi</span>
196+
<span itemprop="name">0xbadfca11</span>
197197
</span>
198198
が更新
199199
</small></p>
@@ -237,7 +237,7 @@ <h2>この機能が必要になった背景・経緯</h2>
237237
<span class="p">}</span>
238238
</code></pre></div>
239239
</div></p>
240-
<p>このコードにおいて「<code>// \</code>」のあとにはスペースがあり、EDG (ICCのフロントエンド)、GCC、Clangは行末スペースをトリミング (削除) して関数<code>f()</code><code>43</code>を返すが、MSVCはトリミングせず<code>1</code>を返していた。プラットフォーム間の動作差異をなくすために、実装は行末スペースをトリミングしなければならないよう提案することとした。</p>
240+
<p>このコードにおいて「<code>// \</code>」のあとにはスペースがあり、EDG (ICCのフロントエンド)、GCC、Clangは行末スペースをトリミング (削除) して関数<code>f()</code><code>1</code>を返すが、MSVCはトリミングせず<code>43</code>を返していた。プラットフォーム間の動作差異をなくすために、実装は行末スペースをトリミングしなければならないよう提案することとした。</p>
241241
<p>例として、IDEやツール (コードフォーマッタ) はそのような行末スペースを削除する可能性があり、Googleのコーディングスタイルでは行末スペースを禁止している。</p>
242242
<p>ただしこの規定が入ることによって、行末スペースに依存したMSVCの既存のコードが互換性をなくす可能性はある (有用性は低いので問題になる可能性は低い)。GCC、Clang、ICCはデフォルトで行末スペースに対して有用な警告を出力していた。</p>
243243
<p>行末バックスラッシュを使用した例を紹介する。アスキーアートやダイアグラムをコメントで表現する人々がいる。</p>

rss.xml

Lines changed: 36 additions & 324 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,44 @@
22
<feed xmlns="http://www.w3.org/2005/Atom">
33
<title>cpprefjp - C++日本語リファレンス</title>
44
<link href="https://cpprefjp.github.io" />
5-
<updated>2025-01-21T02:27:05.283653</updated>
6-
<id>14a352f3-a744-424d-8c0f-5d9c2909b7f1</id>
5+
<updated>2025-01-21T02:45:21.388353</updated>
6+
<id>656f232e-8c2b-46c3-9144-ee5912ada22d</id>
77

88

9+
<entry>
10+
<title>行末スペースを無視するよう規定 [P2223R2] -- P2223R2の解説を修正 (#1405)</title>
11+
<link href="https://cpprefjp.github.io/lang/cpp23/trimming_whitespaces_before_line_splicing.html"/>
12+
<id>b394b14811a52179cdf0cfbd26948978170ab73e:lang/cpp23/trimming_whitespaces_before_line_splicing.md</id>
13+
<updated>2025-01-21T11:42:00+09:00</updated>
14+
15+
<summary type="html">&lt;pre&gt;&lt;code&gt;diff --git a/lang/cpp23/trimming_whitespaces_before_line_splicing.md b/lang/cpp23/trimming_whitespaces_before_line_splicing.md
16+
index 5f97c4768..7aaba26e6 100644
17+
--- a/lang/cpp23/trimming_whitespaces_before_line_splicing.md
18+
+++ b/lang/cpp23/trimming_whitespaces_before_line_splicing.md
19+
@@ -34,7 +34,7 @@ int main() {
20+
}
21+
```
22+
23+
-このコードにおいて「`// \`」のあとにはスペースがあり、EDG (ICCのフロントエンド)、GCC、Clangは行末スペースをトリミング (削除) して関数`f()`は`43`を返すが、MSVCはトリミングせず`1`を返していた。プラットフォーム間の動作差異をなくすために、実装は行末スペースをトリミングしなければならないよう提案することとした。
24+
+このコードにおいて「`// \`」のあとにはスペースがあり、EDG (ICCのフロントエンド)、GCC、Clangは行末スペースをトリミング (削除) して関数`f()`は`1`を返すが、MSVCはトリミングせず`43`を返していた。プラットフォーム間の動作差異をなくすために、実装は行末スペースをトリミングしなければならないよう提案することとした。
25+
26+
例として、IDEやツール (コードフォーマッタ) はそのような行末スペースを削除する可能性があり、Googleのコーディングスタイルでは行末スペースを禁止している。
27+
28+
@@ -66,4 +66,4 @@ int main() {
29+
30+
31+
## 参照
32+
-- [P2223R2 Trimming whitespaces before line splicing](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2223r2.pdf)
33+
\ No newline at end of file
34+
+- [P2223R2 Trimming whitespaces before line splicing](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2223r2.pdf)
35+
&lt;/code&gt;&lt;/pre&gt;</summary>
36+
37+
<author>
38+
<name>0xbadfca11</name>
39+
<email>0xbadfca11@gmail.com</email>
40+
</author>
41+
</entry>
42+
943
<entry>
1044
<title>コンパイラの実装状況 -- Merge pull request #1404 from 0xbadfca11/patch-1</title>
1145
<link href="https://cpprefjp.github.io/implementation-status.html"/>
@@ -3798,326 +3832,4 @@ index 4f589ec16..c5c2d0995 100644
37983832
</author>
37993833
</entry>
38003834

3801-
<entry>
3802-
<title>flat_map -- add extract() and replace() to flat_map (#1078)</title>
3803-
<link href="https://cpprefjp.github.io/reference/flat_map/flat_map.html"/>
3804-
<id>edf7962b602ce9a349eb74f0881da4b10202c4ee:reference/flat_map/flat_map.md</id>
3805-
<updated>2025-01-20T21:47:26+09:00</updated>
3806-
3807-
<summary type="html">&lt;pre&gt;&lt;code&gt;diff --git a/reference/flat_map/flat_map.md b/reference/flat_map/flat_map.md
3808-
index c2887c226..3ed7bc59b 100644
3809-
--- a/reference/flat_map/flat_map.md
3810-
+++ b/reference/flat_map/flat_map.md
3811-
@@ -66,8 +66,8 @@ namespace std {
3812-
| [`try_emplace`](flat_map/try_emplace.md) | キーが存在しない場合のみ要素を直接構築する | C++23 |
3813-
| [`erase`](flat_map/erase.md) | 要素を削除する | C++23 |
3814-
| [`swap`](flat_map/swap.md) | コンテンツを交換する | C++23 |
3815-
-| [`extract`](flat_map/extract.md.nolink) | キーのコンテナ、値のコンテナを取得する | C++23 |
3816-
-| [`replace`](flat_map/replace.md.nolink) | キーのコンテナ、値のコンテナを置き換える | C++23 |
3817-
+| [`extract`](flat_map/extract.md) | キーのコンテナ、値のコンテナを取得する | C++23 |
3818-
+| [`replace`](flat_map/replace.md) | キーのコンテナ、値のコンテナを置き換える | C++23 |
3819-
3820-
3821-
### 要素アクセス
3822-
&lt;/code&gt;&lt;/pre&gt;</summary>
3823-
3824-
<author>
3825-
<name>suomesta</name>
3826-
<email>shawn316michaels@gmail.com</email>
3827-
</author>
3828-
</entry>
3829-
3830-
<entry>
3831-
<title>flat_map::containers -- add extract() and replace() to flat_map (#1078)</title>
3832-
<link href="https://cpprefjp.github.io/reference/flat_map/flat_map/containers.html"/>
3833-
<id>edf7962b602ce9a349eb74f0881da4b10202c4ee:reference/flat_map/flat_map/containers.md</id>
3834-
<updated>2025-01-20T21:47:26+09:00</updated>
3835-
3836-
<summary type="html">&lt;pre&gt;&lt;code&gt;diff --git a/reference/flat_map/flat_map/containers.md b/reference/flat_map/flat_map/containers.md
3837-
index 16e454e48..4f589ec16 100644
3838-
--- a/reference/flat_map/flat_map/containers.md
3839-
+++ b/reference/flat_map/flat_map/containers.md
3840-
@@ -29,7 +29,7 @@ namespace std {
3841-
## 概要
3842-
`flat_map`クラス内部のデータ保持方法として、キーのコンテナと値のコンテナをもつ。
3843-
3844-
-この形式の内部表現は[`extract()`](extract.md.nolink)メンバ関数で取得でき、シリアライズなどの用途に使用できる。
3845-
+この形式の内部表現は [`extract()`](extract.md) メンバ関数で取得でき、シリアライズなどの用途に使用できる。
3846-
3847-
3848-
## 例
3849-
@@ -38,6 +38,7 @@ namespace std {
3850-
#include &amp;lt;iostream&amp;gt;
3851-
#include &amp;lt;flat_map&amp;gt;
3852-
#include &amp;lt;string&amp;gt;
3853-
+#include &amp;lt;utility&amp;gt;
3854-
3855-
int main()
3856-
{
3857-
@@ -47,21 +48,21 @@ int main()
3858-
{&amp;#34;Carol&amp;#34;, 4}
3859-
};
3860-
3861-
- decltype(fm)::containers c = fm.extract();
3862-
+ decltype(fm)::containers c = std::move(fm).extract();
3863-
3864-
- std::cout &amp;lt;&amp;lt; &amp;#34;keys:&amp;#34;
3865-
+ std::cout &amp;lt;&amp;lt; &amp;#34;keys:&amp;#34; &amp;lt;&amp;lt; std::endl;
3866-
for (const auto&amp;amp; key : c.keys) {
3867-
std::cout &amp;lt;&amp;lt; &amp;#34; &amp;#34; &amp;lt;&amp;lt; key &amp;lt;&amp;lt; std::endl;
3868-
}
3869-
3870-
- std::cout &amp;lt;&amp;lt; &amp;#34;values:&amp;#34;
3871-
+ std::cout &amp;lt;&amp;lt; &amp;#34;values:&amp;#34; &amp;lt;&amp;lt; std::endl;
3872-
for (const auto&amp;amp; value : c.values) {
3873-
std::cout &amp;lt;&amp;lt; &amp;#34; &amp;#34; &amp;lt;&amp;lt; value &amp;lt;&amp;lt; std::endl;
3874-
}
3875-
}
3876-
```
3877-
* containers[color ff0000]
3878-
-* fm.extract()[link extract.md.nolink]
3879-
+* fm.extract()[link extract.md]
3880-
3881-
#### 出力
3882-
```
3883-
@@ -84,3 +85,7 @@ values:
3884-
- [Clang](/implementation.md#clang): ??
3885-
- [GCC](/implementation.md#gcc): ??
3886-
- [Visual C++](/implementation.md#visual_cpp): ??
3887-
+
3888-
+
3889-
+## 関連項目
3890-
+- [`extract`](extract.md)
3891-
&lt;/code&gt;&lt;/pre&gt;</summary>
3892-
3893-
<author>
3894-
<name>suomesta</name>
3895-
<email>shawn316michaels@gmail.com</email>
3896-
</author>
3897-
</entry>
3898-
3899-
<entry>
3900-
<title>extract -- add extract() and replace() to flat_map (#1078)</title>
3901-
<link href="https://cpprefjp.github.io/reference/flat_map/flat_map/extract.html"/>
3902-
<id>edf7962b602ce9a349eb74f0881da4b10202c4ee:reference/flat_map/flat_map/extract.md</id>
3903-
<updated>2025-01-20T21:47:26+09:00</updated>
3904-
3905-
<summary type="html">&lt;pre&gt;&lt;code&gt;diff --git a/reference/flat_map/flat_map/extract.md b/reference/flat_map/flat_map/extract.md
3906-
new file mode 100644
3907-
index 000000000..0aa1cbb9e
3908-
--- /dev/null
3909-
+++ b/reference/flat_map/flat_map/extract.md
3910-
@@ -0,0 +1,90 @@
3911-
+# extract
3912-
+* flat_map[meta header]
3913-
+* std[meta namespace]
3914-
+* flat_map[meta class]
3915-
+* function[meta id-type]
3916-
+* cpp23[meta cpp]
3917-
+
3918-
+```cpp
3919-
+containers extract() &amp;amp;&amp;amp;; // C++23
3920-
+```
3921-
+
3922-
+## 概要
3923-
+キーのコンテナ、値のコンテナを戻り値として返す。
3924-
+
3925-
+
3926-
+## 戻り値
3927-
+クラス内部のデータ保持形式である [`containers`](containers.md) オブジェクト。
3928-
+
3929-
+
3930-
+## 事後条件
3931-
+呼び出し側の `flat_map` は空になる(たとえ例外で関数が中断されたとしても)。
3932-
+
3933-
+
3934-
+## 計算量
3935-
+定数時間。
3936-
+
3937-
+
3938-
+## 備考
3939-
+本関数は右辺値修飾されているので、右辺値からのみ読み出し可能である。
3940-
+
3941-
+
3942-
+## 例
3943-
+```cpp example
3944-
+#include &amp;lt;flat_map&amp;gt;
3945-
+#include &amp;lt;iostream&amp;gt;
3946-
+#include &amp;lt;string&amp;gt;
3947-
+#include &amp;lt;utility&amp;gt;
3948-
+
3949-
+int main()
3950-
+{
3951-
+ std::flat_map&amp;lt;std::string, int&amp;gt; fm = {
3952-
+ {&amp;#34;Alice&amp;#34;, 3},
3953-
+ {&amp;#34;Bob&amp;#34;, 1},
3954-
+ {&amp;#34;Carol&amp;#34;, 4}
3955-
+ };
3956-
+
3957-
+ std::cout &amp;lt;&amp;lt; fm.size() &amp;lt;&amp;lt; std::endl;
3958-
+
3959-
+ decltype(fm)::containers c = std::move(fm).extract();
3960-
+
3961-
+ std::cout &amp;lt;&amp;lt; fm.size() &amp;lt;&amp;lt; std::endl;
3962-
+ std::cout &amp;lt;&amp;lt; std::endl;
3963-
+
3964-
+ auto k = c.keys.cbegin();
3965-
+ auto v = c.values.cbegin();
3966-
+ std::cout &amp;lt;&amp;lt; &amp;#34;{&amp;#34; &amp;lt;&amp;lt; std::endl;
3967-
+ for (; k != c.keys.cend() &amp;amp;&amp;amp; v != c.values.cend(); ++k, ++v) {
3968-
+ std::cout &amp;lt;&amp;lt; &amp;#34; &amp;#34; &amp;lt;&amp;lt; *k &amp;lt;&amp;lt; &amp;#34;: &amp;#34; &amp;lt;&amp;lt; *v &amp;lt;&amp;lt; &amp;#34;,&amp;#34; &amp;lt;&amp;lt; std::endl;
3969-
+ }
3970-
+ std::cout &amp;lt;&amp;lt; &amp;#34;}&amp;#34; &amp;lt;&amp;lt; std::endl;
3971-
+}
3972-
+```
3973-
+* extract()[color ff0000]
3974-
+* fm.size()[link size.md]
3975-
+
3976-
+### 出力
3977-
+```
3978-
+3
3979-
+0
3980-
+
3981-
+{
3982-
+ Alice: 3,
3983-
+ Bob: 1,
3984-
+ Carol: 4,
3985-
+}
3986-
+```
3987-
+
3988-
+## バージョン
3989-
+### 言語
3990-
+- C++23
3991-
+
3992-
+### 処理系
3993-
+- [Clang](/implementation.md#clang): ??
3994-
+- [GCC](/implementation.md#gcc): ??
3995-
+- [ICC](/implementation.md#icc): ??
3996-
+- [Visual C++](/implementation.md#visual_cpp): ??
3997-
+
3998-
+
3999-
+## 関連項目
4000-
+- [`containers`](containers.md)
4001-
&lt;/code&gt;&lt;/pre&gt;</summary>
4002-
4003-
<author>
4004-
<name>suomesta</name>
4005-
<email>shawn316michaels@gmail.com</email>
4006-
</author>
4007-
</entry>
4008-
4009-
<entry>
4010-
<title>replace -- add extract() and replace() to flat_map (#1078)</title>
4011-
<link href="https://cpprefjp.github.io/reference/flat_map/flat_map/replace.html"/>
4012-
<id>edf7962b602ce9a349eb74f0881da4b10202c4ee:reference/flat_map/flat_map/replace.md</id>
4013-
<updated>2025-01-20T21:47:26+09:00</updated>
4014-
4015-
<summary type="html">&lt;pre&gt;&lt;code&gt;diff --git a/reference/flat_map/flat_map/replace.md b/reference/flat_map/flat_map/replace.md
4016-
new file mode 100644
4017-
index 000000000..07ff97fd7
4018-
--- /dev/null
4019-
+++ b/reference/flat_map/flat_map/replace.md
4020-
@@ -0,0 +1,94 @@
4021-
+# replace
4022-
+* flat_map[meta header]
4023-
+* std[meta namespace]
4024-
+* flat_map[meta class]
4025-
+* function[meta id-type]
4026-
+* cpp23[meta cpp]
4027-
+
4028-
+```cpp
4029-
+void replace(key_container_type&amp;amp;&amp;amp; key_cont, mapped_container_type&amp;amp;&amp;amp; mapped_cont); // C++23
4030-
+```
4031-
+
4032-
+## 概要
4033-
+キーのコンテナ、値のコンテナをそれぞれ置き換える。
4034-
+
4035-
+
4036-
+## 効果
4037-
+`flat_map` クラスが内部で保持している [`containers`](containers.md) を `c` とすると、以下と等価。
4038-
+ ```cpp
4039-
+ c.keys = std::move(key_cont);
4040-
+ c.values = std::move(mapped_cont)
4041-
+ ```
4042-
+
4043-
+
4044-
+## 事前条件
4045-
+- `key_cont.size() == mapped_cont.size()` が真であること。
4046-
+- `key_cont` が `key_compare` に基づいてソートされていること。
4047-
+- `key_cont` に重複する要素がないこと。
4048-
+
4049-
+
4050-
+## 計算量
4051-
+`key_cont` および `mapped_cont` をムーブした計算量と同じ。
4052-
+
4053-
+
4054-
+## 例
4055-
+```cpp example
4056-
+#include &amp;lt;algorithm&amp;gt;
4057-
+#include &amp;lt;cassert&amp;gt;
4058-
+#include &amp;lt;flat_map&amp;gt;
4059-
+#include &amp;lt;iostream&amp;gt;
4060-
+#include &amp;lt;string&amp;gt;
4061-
+#include &amp;lt;utility&amp;gt;
4062-
+
4063-
+int main()
4064-
+{
4065-
+ std::vector&amp;lt;std::string&amp;gt; keys = {&amp;#34;Alice&amp;#34;, &amp;#34;Bob&amp;#34;, &amp;#34;Carol&amp;#34;};
4066-
+ std::vector&amp;lt;int&amp;gt; values = {3, 1, 4};
4067-
+
4068-
+ // 事前条件の確認
4069-
+ assert(keys.size() == values.size());
4070-
+ assert(std::is_sorted(keys.begin(), keys.end()));
4071-
+ assert(std::adjacent_find(keys.begin(), keys.end()) == keys.end());
4072-
+
4073-
+ std::flat_map&amp;lt;std::string, int&amp;gt; fm;
4074-
+
4075-
+ std::cout &amp;lt;&amp;lt; fm.size() &amp;lt;&amp;lt; std::endl;
4076-
+
4077-
+ fm.replace(std::move(keys), std::move(values));
4078-
+
4079-
+ std::cout &amp;lt;&amp;lt; fm.size() &amp;lt;&amp;lt; std::endl;
4080-
+ std::cout &amp;lt;&amp;lt; std::endl;
4081-
+
4082-
+ std::cout &amp;lt;&amp;lt; &amp;#34;{&amp;#34; &amp;lt;&amp;lt; std::endl;
4083-
+ for (const auto&amp;amp; kv: fm) {
4084-
+ std::cout &amp;lt;&amp;lt; &amp;#34; &amp;#34; &amp;lt;&amp;lt; kv.first &amp;lt;&amp;lt; &amp;#34;: &amp;#34; &amp;lt;&amp;lt; kv.second &amp;lt;&amp;lt; &amp;#34;,&amp;#34; &amp;lt;&amp;lt; std::endl;
4085-
+ }
4086-
+ std::cout &amp;lt;&amp;lt; &amp;#34;}&amp;#34; &amp;lt;&amp;lt; std::endl;
4087-
+}
4088-
+```
4089-
+* replace[color ff0000]
4090-
+* fm.size()[link size.md]
4091-
+* std::is_sorted[link /reference/algorithm/is_sorted.md]
4092-
+* std::adjacent_find[link /reference/algorithm/adjacent_find.md]
4093-
+
4094-
+### 出力
4095-
+```
4096-
+0
4097-
+3
4098-
+
4099-
+{
4100-
+ Alice: 3,
4101-
+ Bob: 1,
4102-
+ Carol: 4,
4103-
+}
4104-
+```
4105-
+
4106-
+## バージョン
4107-
+### 言語
4108-
+- C++23
4109-
+
4110-
+### 処理系
4111-
+- [Clang](/implementation.md#clang): ??
4112-
+- [GCC](/implementation.md#gcc): ??
4113-
+- [ICC](/implementation.md#icc): ??
4114-
+- [Visual C++](/implementation.md#visual_cpp): ??
4115-
&lt;/code&gt;&lt;/pre&gt;</summary>
4116-
4117-
<author>
4118-
<name>suomesta</name>
4119-
<email>shawn316michaels@gmail.com</email>
4120-
</author>
4121-
</entry>
4122-
41233835
</feed>

0 commit comments

Comments
 (0)