|
2 | 2 | <feed xmlns="http://www.w3.org/2005/Atom"> |
3 | 3 | <title>cpprefjp - C++日本語リファレンス</title> |
4 | 4 | <link href="https://cpprefjp.github.io" /> |
5 | | - <updated>2026-09-21T19:40:40.510844</updated> |
6 | | - <id>91acb640-92f1-4787-b613-0b8e3747fda5</id> |
| 5 | + <updated>2026-09-22T04:56:36.488715</updated> |
| 6 | + <id>9b58ff33-8634-4c5e-9431-1bbb14479c11</id> |
7 | 7 |
|
8 | 8 |
|
| 9 | + <entry> |
| 10 | + <title>is_within_lifetime -- is_within_lifetime : P3450R1の変更についての説明を追加</title> |
| 11 | + <link href="https://cpprefjp.github.io/reference/type_traits/is_within_lifetime.html"/> |
| 12 | + <id>fc8c09b1a2059666606d2eef69f73d6c3b8ee516:reference/type_traits/is_within_lifetime.md</id> |
| 13 | + <updated>2026-09-22T13:54:52+09:00</updated> |
| 14 | + |
| 15 | + <summary type="html"><pre><code>diff --git a/reference/type_traits/is_within_lifetime.md b/reference/type_traits/is_within_lifetime.md |
| 16 | +index 93e92d1e1..58da12cf4 100644 |
| 17 | +--- a/reference/type_traits/is_within_lifetime.md |
| 18 | ++++ b/reference/type_traits/is_within_lifetime.md |
| 19 | +@@ -12,9 +12,12 @@ namespace std { |
| 20 | + ``` |
| 21 | + |
| 22 | + ## 概要 |
| 23 | +-共用体の指定されたメンバがアクティブかを定数式で判定する。 |
| 24 | + |
| 25 | +-定数式では非アクティブな共用体メンバへのアクセスができないため、以下のような非アクティブなメンバの値を使用してアクティブメンバを判定する方法が使用できない。 |
| 26 | ++定数式において、`p`に配置されているオブジェクトが有効期間内にあり、かつ`const U*`のポインタへキャスト可能かどうかを判定する。 |
| 27 | ++ |
| 28 | ++### 共用体のアクティブメンバ判定 |
| 29 | ++ |
| 30 | ++この関数は主に、共用体の指定されたメンバがアクティブかを定数式中で判定するためのものである。定数式では非アクティブな共用体メンバへのアクセスができないため、以下のような非アクティブなメンバの値を使用してアクティブメンバを判定する方法が使用できない。 |
| 31 | + |
| 32 | + ```cpp |
| 33 | + struct OptBool { |
| 34 | +@@ -35,6 +38,25 @@ struct OptBool { |
| 35 | + |
| 36 | + この関数を使用することで、コンパイル時に指定メンバがアクティブかを判定することができる。 |
| 37 | + |
| 38 | ++### ダウンキャスト可能かどうかの判定 |
| 39 | ++ |
| 40 | ++第一テンプレートパラメータ`U`は`T`のポインタを`U`のポインタへキャスト可能かどうかを判定するためのもので、主に`T`から`U`へのダウンキャストが定数式中で可能かどうかを判定するために使用する。 |
| 41 | ++ |
| 42 | ++```cpp |
| 43 | ++struct Base {}; |
| 44 | ++struct Derived : public Base {}; |
| 45 | ++ |
| 46 | ++consteval void f() { |
| 47 | ++ Base b{}; |
| 48 | ++ Derived d{}; |
| 49 | ++ Base* d_ptr = &amp;d; |
| 50 | ++ |
| 51 | ++ // d_ptrはDerivedのポインタにダウンキャスト可能 |
| 52 | ++ assert(std::is_within_lifetime&lt;Derived&gt;(d_ptr)); |
| 53 | ++ // &amp;bはDerivedにダウンキャスト不可 |
| 54 | ++ assert(std::is_within_lifetime&lt;Derived&gt;(&amp;b) == false); |
| 55 | ++} |
| 56 | ++``` |
| 57 | + |
| 58 | + ## 適格要件 |
| 59 | + `static_cast&lt;const volatile U*&gt;(p)`が適格であること。 |
| 60 | +</code></pre></summary> |
| 61 | + |
| 62 | + <author> |
| 63 | + <name>onihusube</name> |
| 64 | + <email>44743040+onihusube@users.noreply.github.com</email> |
| 65 | + </author> |
| 66 | + </entry> |
| 67 | + |
9 | 68 | <entry> |
10 | 69 | <title>推論補助 -- set / multiset / unordered_set / unordered_multiset : GCCの最小バージョンを更新</title> |
11 | 70 | <link href="https://cpprefjp.github.io/reference/set/multiset/op_deduction_guide.html"/> |
@@ -198,62 +257,6 @@ index a7b9f597f..27046dda3 100644 |
198 | 257 | } |
199 | 258 | ``` |
200 | 259 | * uses_allocator_construction_args[color ff0000] |
201 | | -</code></pre></summary> |
202 | | - |
203 | | - <author> |
204 | | - <name>rotarymars</name> |
205 | | - <email>s.goto2050@gmail.com</email> |
206 | | - </author> |
207 | | - </entry> |
208 | | - |
209 | | - <entry> |
210 | | - <title>uninitialized_move -- uninitialized_move, uninitialized_move_n : constの範囲からムーブすると説明していた例を修正</title> |
211 | | - <link href="https://cpprefjp.github.io/reference/memory/uninitialized_move.html"/> |
212 | | - <id>f34996e3776a7292c5d5da984f7277905727e728:reference/memory/uninitialized_move.md</id> |
213 | | - <updated>2026-09-20T20:42:53+09:00</updated> |
214 | | - |
215 | | - <summary type="html"><pre><code>diff --git a/reference/memory/uninitialized_move.md b/reference/memory/uninitialized_move.md |
216 | | -index dad5799b8..0d516e83f 100644 |
217 | | ---- a/reference/memory/uninitialized_move.md |
218 | | -+++ b/reference/memory/uninitialized_move.md |
219 | | -@@ -67,7 +67,8 @@ for (; first != last; ++result, ++first) |
220 | | - |
221 | | - int main() |
222 | | - { |
223 | | -- const std::vector&lt;int&gt; v = {1, 2, 3}; |
224 | | -+ // ムーブ元となるため、constにはしない |
225 | | -+ std::vector&lt;int&gt; v = {1, 2, 3}; |
226 | | - |
227 | | - std::allocator&lt;int&gt; alloc; |
228 | | - |
229 | | -</code></pre></summary> |
230 | | - |
231 | | - <author> |
232 | | - <name>rotarymars</name> |
233 | | - <email>s.goto2050@gmail.com</email> |
234 | | - </author> |
235 | | - </entry> |
236 | | - |
237 | | - <entry> |
238 | | - <title>uninitialized_move_n -- uninitialized_move, uninitialized_move_n : constの範囲からムーブすると説明していた例を修正</title> |
239 | | - <link href="https://cpprefjp.github.io/reference/memory/uninitialized_move_n.html"/> |
240 | | - <id>f34996e3776a7292c5d5da984f7277905727e728:reference/memory/uninitialized_move_n.md</id> |
241 | | - <updated>2026-09-20T20:42:53+09:00</updated> |
242 | | - |
243 | | - <summary type="html"><pre><code>diff --git a/reference/memory/uninitialized_move_n.md b/reference/memory/uninitialized_move_n.md |
244 | | -index 1962f416f..ab4bdc41a 100644 |
245 | | ---- a/reference/memory/uninitialized_move_n.md |
246 | | -+++ b/reference/memory/uninitialized_move_n.md |
247 | | -@@ -67,7 +67,8 @@ for (; n &gt; 0; ++result, (void)++first, --n) |
248 | | - |
249 | | - int main() |
250 | | - { |
251 | | -- const std::vector&lt;int&gt; v = {1, 2, 3}; |
252 | | -+ // ムーブ元となるため、constにはしない |
253 | | -+ std::vector&lt;int&gt; v = {1, 2, 3}; |
254 | | - |
255 | | - std::allocator&lt;int&gt; alloc; |
256 | | - |
257 | 260 | </code></pre></summary> |
258 | 261 |
|
259 | 262 | <author> |
|
0 commit comments