Skip to content

Commit 9ad0209

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent d3a0f1b commit 9ad0209

3 files changed

Lines changed: 48 additions & 87 deletions

File tree

‎reference/chrono/zoned_time/op_constructor.html‎

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -201,12 +201,12 @@
201201
<p class="text-right"><small>
202202
最終更新日時:
203203
<time itemprop="datePublished" class="js-local-time"
204-
datetime="2025-09-26T23:17:05+09:00">
205-
2025年09月26日 23時17分05秒 (JST)
204+
datetime="2026-09-15T19:38:38+09:00">
205+
2026年09月15日 19時38分38秒 (JST)
206206
</time>
207207
<br/>
208208
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
209-
<span itemprop="name">Raclamusi</span>
209+
<span itemprop="name">rotarymars</span>
210210
</span>
211211
が更新
212212
</small></p>
@@ -370,7 +370,16 @@ <h2>効果</h2>
370370
<h2>備考</h2>
371371
<ul>
372372
<li><code><a href="../local_time.html">local_time</a></code>型のローカル時間を受け取るコンストラクタでは、<code><a href="../sys_time.html">sys_time</a></code>型のシステム時間への変換が行われ、システム時間としてメンバ変数に保持される</li>
373-
<li>(9), (10) : ローカル時間からシステム時間への変換があいまいになる場合、早い時間側の候補に変換される</li>
373+
<li>(9), (10) : <code><a href="../choose.html">choose</a></code>を指定しないため、変換に失敗する場合は<code><a href="../time_zone/to_sys.html">to_sys()</a></code>から<a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>が送出される<ul>
374+
<li>ローカル時間からシステム時間への変換があいまいになる場合、<code><a href="../ambiguous_local_time.html">ambiguous_local_time</a></code><a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>を送出する</li>
375+
<li>指定されたローカル時間が存在しない場合、<code><a href="../nonexistent_local_time.html">nonexistent_local_time</a></code><a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>を送出する</li>
376+
</ul>
377+
</li>
378+
<li>(11), (12) : <code><a href="../choose.html">choose</a></code>を指定するため、あいまいなローカル時間・存在しないローカル時間が指定されてもこれらの<a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>は送出されない<ul>
379+
<li>あいまいなローカル時間の場合、<code>c</code>で指定した側の候補に変換される</li>
380+
<li>存在しないローカル時間の場合、<code>c</code>の値にかかわらず、変換結果は同じ時間点となる</li>
381+
</ul>
382+
</li>
374383
</ul>
375384
<h3>例</h3>
376385
<p><div class="yata" id="57746def17e8a7467f027af530cf5b400d84dd91"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../../cassert.html">&lt;cassert&gt;</a></span>

‎rss.xml‎

Lines changed: 34 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,42 @@
22
<feed xmlns="http://www.w3.org/2005/Atom">
33
<title>cpprefjp - C++日本語リファレンス</title>
44
<link href="https://cpprefjp.github.io" />
5-
<updated>2026-09-15T09:54:17.521131</updated>
6-
<id>f84e6f2b-df41-4b34-bde4-570b32664fb8</id>
5+
<updated>2026-09-15T10:40:36.727506</updated>
6+
<id>0704612a-f39a-4327-923b-2f96b1a0c56e</id>
77

88

9+
<entry>
10+
<title>コンストラクタ -- fix in ambiguous convertion</title>
11+
<link href="https://cpprefjp.github.io/reference/chrono/zoned_time/op_constructor.html"/>
12+
<id>359eb1e0a84e5cb5851c7dc5bb18006365427c54:reference/chrono/zoned_time/op_constructor.md</id>
13+
<updated>2026-09-15T19:38:38+09:00</updated>
14+
15+
<summary type="html">&lt;pre&gt;&lt;code&gt;diff --git a/reference/chrono/zoned_time/op_constructor.md b/reference/chrono/zoned_time/op_constructor.md
16+
index 2d85d1059..a7926e226 100644
17+
--- a/reference/chrono/zoned_time/op_constructor.md
18+
+++ b/reference/chrono/zoned_time/op_constructor.md
19+
@@ -111,7 +111,12 @@ zoned_time(string_view name,
20+
21+
## 備考
22+
- [`local_time`](/reference/chrono/local_time.md)型のローカル時間を受け取るコンストラクタでは、[`sys_time`](/reference/chrono/sys_time.md)型のシステム時間への変換が行われ、システム時間としてメンバ変数に保持される
23+
-- (9), (10) : ローカル時間からシステム時間への変換があいまいになる場合、早い時間側の候補に変換される
24+
+- (9), (10) : [`choose`](/reference/chrono/choose.md)を指定しないため、変換に失敗する場合は[`to_sys()`](/reference/chrono/time_zone/to_sys.md)から例外が送出される
25+
+ - ローカル時間からシステム時間への変換があいまいになる場合、[`ambiguous_local_time`](/reference/chrono/ambiguous_local_time.md)例外を送出する
26+
+ - 指定されたローカル時間が存在しない場合、[`nonexistent_local_time`](/reference/chrono/nonexistent_local_time.md)例外を送出する
27+
+- (11), (12) : [`choose`](/reference/chrono/choose.md)を指定するため、あいまいなローカル時間・存在しないローカル時間が指定されてもこれらの例外は送出されない
28+
+ - あいまいなローカル時間の場合、`c`で指定した側の候補に変換される
29+
+ - 存在しないローカル時間の場合、`c`の値にかかわらず、変換結果は同じ時間点となる
30+
31+
32+
### 例
33+
&lt;/code&gt;&lt;/pre&gt;</summary>
34+
35+
<author>
36+
<name>rotarymars</name>
37+
<email>s.goto2050@gmail.com</email>
38+
</author>
39+
</entry>
40+
941
<entry>
1042
<title>duration -- fix in wrong explanation</title>
1143
<link href="https://cpprefjp.github.io/reference/chrono/duration.html"/>
@@ -605,86 +637,6 @@ index e67a44ecd..d18207ac8 100644
605637
}
606638
```
607639

608-
&lt;/code&gt;&lt;/pre&gt;</summary>
609-
610-
<author>
611-
<name>Akira Takahashi</name>
612-
<email>faithandbrave@gmail.com</email>
613-
</author>
614-
</entry>
615-
616-
<entry>
617-
<title>暗黙のラムダキャプチャを簡略化 [P0588R1] -- Merge pull request #1756 from cpprefjp/fix_odr_usable</title>
618-
<link href="https://cpprefjp.github.io/lang/cpp20/simplifying_implicit_lambda_capture.html"/>
619-
<id>23cccdd3c5dbd8f73bdbab529be955a46922e9bf:lang/cpp20/simplifying_implicit_lambda_capture.md</id>
620-
<updated>2026-09-15T15:56:06+09:00</updated>
621-
622-
<summary type="html">&lt;pre&gt;&lt;code&gt;diff --git a/lang/cpp20/simplifying_implicit_lambda_capture.md b/lang/cpp20/simplifying_implicit_lambda_capture.md
623-
index 8fbce21ed..41c705232 100644
624-
--- a/lang/cpp20/simplifying_implicit_lambda_capture.md
625-
+++ b/lang/cpp20/simplifying_implicit_lambda_capture.md
626-
@@ -29,12 +29,60 @@ void f() {
627-
}
628-
```
629-
630-
-構造化束縛で導入された名前はラムダ式でキャプチャできない、と明記された。しかしその後、「[構造化束縛を拡張して通常の変数宣言のように使用できるようにする](extending_structured_bindings_to_be_more_like_variable_declarations.md)」の仕様でそれが可能となったため、この仕様変更は打ち消された。
631-
+本提案では一旦、構造化束縛で導入された名前はラムダ式でキャプチャできない、と明記された。その後、「[構造化束縛を拡張して通常の変数宣言のように使用できるようにする](extending_structured_bindings_to_be_more_like_variable_declarations.md)」の仕様でそれが可能となったため、この部分は打ち消された。
632-
+
633-
+## 仕様
634-
+ラムダ式がどのローカル変数をキャプチャできるか、またそれをどこで使用できるかを規定するために、odr-usableという用語が導入された。
635-
+
636-
+ローカル変数、関数のパラメータ、構造化束縛で導入された名前、`*this`のように、関数のローカルな文脈に属するものをローカルエンティティ (*local entity*) と呼ぶ。ローカルエンティティは、その宣言から使用する地点までの間に挟まるスコープが、すべて以下のいずれかである場合に、その地点でodr-usableとなる。
637-
+
638-
+- ブロックスコープ (`{}`で囲まれた文のスコープ)
639-
+- ラムダ式の関数パラメータスコープ (ラムダ式のパラメータを宣言できる範囲) であり、そのラムダ式がそのローカルエンティティを明示的にキャプチャしているかデフォルトキャプチャをもっていて、かつそのラムダ式の本体のブロックスコープも、使用する地点までの間に挟まっている
640-
+
641-
+odr-usableではないローカルエンティティをodr-usedした場合、そのプログラムは不適格となる。
642-
+
643-
+```cpp
644-
+void f(int n) {
645-
+ [] { n = 1; }; // エラー: nをキャプチャしていないため、odr-usableではない
646-
+ [&amp;amp;] { n = 1; }; // OK: nをキャプチャしており、ラムダ式の本体の中で使用している
647-
+
648-
+ struct A {
649-
+ void g() { n = 2; } // エラー: ローカルクラスのスコープと、そのメンバ関数の
650-
+ }; // 関数パラメータスコープが挟まる
651-
+
652-
+ void g(int = n); // エラー: ラムダ式ではない関数の関数パラメータスコープが挟まる
653-
+
654-
+ [=](int k = n) {}; // エラー: ラムダ式の関数パラメータスコープは挟まるが、
655-
+ // 本体のブロックスコープは挟まらない
656-
+
657-
+ [&amp;amp;] { [n]{ return n; }; }; // OK: 内側のラムダ式は、外側のラムダ式の本体の中にある
658-
+}
659-
+```
660-
+
661-
+### ラムダ式のデフォルト引数で外側のローカル変数を使用できない理由
662-
+キャプチャが効くのはラムダ式の本体の中だけであり、パラメータの宣言はその外側にある。そのため`[=](int k = n) {}`の`n`は、キャプチャしたコピーではなく、外側の`n`そのものを指す。
663-
+
664-
+デフォルト引数が評価されるのは、ラムダ式を書いた場所ではなく、クロージャオブジェクトを呼び出した場所である。クロージャオブジェクトはそれを作った関数の外へ持ち出せるため、仮にこれを許すと、すでに生存期間の終わったローカル変数を読むことになりうる。
665-
+
666-
+```cpp
667-
+auto f(int n) {
668-
+ return [=](int k = n) { return k; }; // エラー
669-
+}
670-
+
671-
+int main() {
672-
+ auto g = f(3);
673-
+ g(); // 仮に適格だとすると、ここで関数f()のパラメータnを読むことになる
674-
+}
675-
+```
676-
677-
678-
## &amp;lt;a id=&amp;#34;relative-page&amp;#34; href=&amp;#34;#relative-page&amp;#34;&amp;gt;関連項目&amp;lt;/a&amp;gt;
679-
- [C++17 構造化束縛](/lang/cpp17/structured_bindings.md)
680-
- [C++20 構造化束縛を拡張して通常の変数宣言のように使用できるようにする](extending_structured_bindings_to_be_more_like_variable_declarations.md)
681-
+- [C++20 構造化束縛した変数の参照キャプチャを許可](reference_capture_of_structured_bindings.md)
682-
683-
## 参照
684-
- [P0588R1 Simplifying implicit lambda capture](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0588r1.html)
685-
+ - C++20で、ラムダ式での暗黙のキャプチャの規定が整理され、odr-usableが導入された
686-
+- [CWG Issue 2380. capture-default makes too many references odr-usable](https://cplusplus.github.io/CWG/issues/2380.html)
687-
+ - C++20の策定中に、odr-usableの条件へ「ラムダ式の本体のブロックスコープも挟まっていること」が追加された。この条件がないと、デフォルトキャプチャを書くだけでラムダ式のパラメータのデフォルト引数から外側のローカル変数を使用できてしまっていた
688640
&lt;/code&gt;&lt;/pre&gt;</summary>
689641

690642
<author>

‎sitemap.xml‎

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

42814281
<url>
42824282
<loc>https://cpprefjp.github.io/reference/chrono/zoned_time/op_constructor.html</loc>
4283-
<lastmod>2026-09-15T16:05:27+09:00</lastmod>
4283+
<lastmod>2026-09-15T19:38:38+09:00</lastmod>
42844284
<changefreq>daily</changefreq>
42854285
<priority>0.6</priority>
42864286
</url>

0 commit comments

Comments
 (0)