22<feed xmlns =" http://www.w3.org/2005/Atom" >
33 <title >cpprefjp - C++日本語リファレンス</title >
44 <link href =" https://cpprefjp.github.io" />
5- <updated >2024-12-21T02:26:18.973075 </updated >
6- <id >a786e704-e4c3-4576-8e87-41b386044623 </id >
5+ <updated >2024-12-21T04:07:35.701117 </updated >
6+ <id >de998b6d-b81a-4016-867e-9e6d53966ea7 </id >
77
88
9+ <entry >
10+ <title >lock_guard -- lock_guard: 出力を更新してなかった</title >
11+ <link href =" https://cpprefjp.github.io/reference/mutex/lock_guard.html" />
12+ <id >815f9db290edf40da0e3c4415fdda0cebce66e05:reference/mutex/lock_guard.md</id >
13+ <updated >2024-12-21T13:04:29+09:00</updated >
14+
15+ <summary type =" html" >< pre>< code> diff --git a/reference/mutex/lock_guard.md b/reference/mutex/lock_guard.md
16+ index dab1029c9..781ade9c0 100644
17+ --- a/reference/mutex/lock_guard.md
18+ +++ b/reference/mutex/lock_guard.md
19+ @@ -86,15 +86,15 @@ int main()
20+ #### 出力例
21+ ```
22+ value:5
23+ -value:6
24+ -value:7
25+ -value:8
26+ -value:9
27+ value:0
28+ +value:6
29+ value:1
30+ value:2
31+ value:3
32+ +value:7
33+ value:4
34+ +value:8
35+ +value:9
36+ ```
37+
38+ ## バージョン
39+ < /code>< /pre> </summary >
40+
41+ <author >
42+ <name >Akira Takahashi</name >
43+ <email >faithandbrave@gmail.com</email >
44+ </author >
45+ </entry >
46+
947 <entry >
1048 <title >lock_guard -- lock_guard: 出力がうまく混ざらなかったのでランダム時間のsleepを入れた</title >
1149 <link href =" https://cpprefjp.github.io/reference/mutex/lock_guard.html" />
@@ -284,111 +322,4 @@ index cb813a6b4..8e36638dc 100644
284322 </author >
285323 </entry >
286324
287- <entry >
288- <title >宣言のみで使用しない変数の名前として_をサポート [P2169R4] -- C++26 宣言のみで使用しない変数の名前として_をサポート : ユースケースと仕様を追加</title >
289- <link href =" https://cpprefjp.github.io/lang/cpp26/nice_placeholder_with_no_name.html" />
290- <id >d67d018e6b43cbd65b4292f7facb135135e26a67:lang/cpp26/nice_placeholder_with_no_name.md</id >
291- <updated >2024-12-21T10:43:29+09:00</updated >
292-
293- <summary type =" html" >< pre>< code> diff --git a/lang/cpp26/nice_placeholder_with_no_name.md b/lang/cpp26/nice_placeholder_with_no_name.md
294- index 58c78f94b..cb813a6b4 100644
295- --- a/lang/cpp26/nice_placeholder_with_no_name.md
296- +++ b/lang/cpp26/nice_placeholder_with_no_name.md
297- @@ -10,22 +10,82 @@
298- & lt;!-- last lang caution --& gt;
299-
300- ## 概要
301- -C++17で採用された、`[[maybe_unused]]`属性を変数名`_`の場合、自動的につける。
302- +C++26では、宣言だけして使用しない変数として、変数名`_`を特別扱いする。
303- +
304- +宣言だけして使用しない変数が必要な状況としては、以下のようなミューテックスのロック取得や、構造化束縛などがある:
305- +
306- +```cpp
307- +// C++23まで
308- +std::mutex mux;
309- +std::tuple& lt;T, U, V& gt; f();
310- +
311- +void f() {
312- + std::lock_gaurd guard{mux}; // デストラクタでの自動解放だけしたいのでguard変数はとくに使わない
313- + auto [a, b, no_use] = f(); // 構造化束縛した一部の変数は使わない
314- +}
315- +```
316- +
317- +C++26では、変数名として`_`は[`[[maybe_unused]]`属性](/lang/cpp17/maybe_unused.md)が付加される、と規定される。
318- +
319- +```cpp
320- +// C++26
321- +std::mutex mux;
322- +std::tuple& lt;T, U, V& gt; f();
323- +
324- +void f() {
325- + std::lock_gaurd _{mux}; // OK
326- + auto [a, b, _] = f(); // OK
327- +}
328- +```
329- +
330- +
331- +## 仕様
332- +- 変数名`_`は、「名前非依存 (name independent) の宣言」という名称で扱われ、実装への推奨としては `[[maybe_unused]]`属性が自動的に付加され、使用されなくても警告は出力されない:
333- + ```cpp
334- + auto _ = foo(); // [[maybe_unused]] auto _ = f(); と等価
335- + ```
336- +
337- +- 変数名`_`は、以下の状況では再宣言できる:
338- + - 自動変数
339- + - 非静的メンバ変数
340- + - 構造化束縛
341- + - ラムダ式のキャプチャでの導入子
342- +- 再宣言された変数`_`を使用した場合、プログラムは不適格となる
343-
344- ```cpp
345- +namespace a {
346- + auto _ = f(); // OK: & #34;_& #34;変数の宣言
347- + auto _ = f(); // エラー! & #34;_& #34;はこの名前空間ですでに定義されている
348- +}
349- +
350- +void f() {
351- + auto _ = 42; // OK: & #34;_& #34;変数の宣言
352- + auto _ = 0; // OK: & #34;_& #34;変数の再宣言
353- + {
354- + auto _ = 1; // OK: シャドウイング
355- + assert(_ == 1); // OK
356- + }
357- + assert( _ == 42 ); // 不適格: 再宣言されたプレースホルダー変数の使用
358- +}
359- +```
360- +
361- +
362- +## 例
363- +```cpp example
364- int main() {
365- - [[maybe_unused]]int hardNamingVariable;
366- // gccやclangの場合、-Wallオプションをつけると、
367- // 変数が未使用だった場合、警告が出力される。
368- // [[maybe_unused]]属性によって、これを抑制することができた。
369- + [[maybe_unused]] int hardNamingVariable;
370- +
371- // しかし、今後は、変数名が_であれば、自動的にその属性が適用されるようになる。
372- + // 以下のコードを-Wallでコンパイルしても、警告は表示されない。
373- int _;
374- - // このコードを-Wallでコンパイルしても、警告は表示されない。
375- }
376- ```
377-
378- ## & lt;a id=& #34;relative-page& #34; href=& #34;#relative-page& #34;& gt;関連項目& lt;/a& gt;
379- -- [\[\[maybe_unused\]\]属性 \[P0212R1\]](/lang/cpp17/maybe_unused.md)
380- +- [C++17 `[[maybe_unused]]`属性](/lang/cpp17/maybe_unused.md)
381-
382- ## 参照
383- -- [P2169R4 A nice placeholder with no name](https://open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2169r4.pdf)
384- \ No newline at end of file
385- +- [P2169R4 A nice placeholder with no name](https://open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2169r4.pdf)
386- < /code>< /pre> </summary >
387-
388- <author >
389- <name >Akira Takahashi</name >
390- <email >faithandbrave@gmail.com</email >
391- </author >
392- </entry >
393-
394325</feed >
0 commit comments