Skip to content

Commit 2fe228a

Browse files
Preview PR 1607: 643d7a1d4a7aac
1 parent c50ed97 commit 2fe228a

4 files changed

Lines changed: 115 additions & 42 deletions

File tree

gen/pull/1607/PREVIEW.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# PR [\#1607](https://github.com/cpprefjp/site/pull/1607) プレビュー
2-
- ⌚ 更新時刻: 2026-04-24 13:00:25 JST
2+
- ⌚ 更新時刻: 2026-04-24 13:05:13 JST
33
- 🔍 [プレビュー (HTML)](https://cpprefjp.github.io/site/gen/pull/1607)
44
- 📈 [プレビュー生成記録](https://github.com/cpprefjp/site/actions?query=event%3Apull_request_target+branch%3Acpp26_reflection)
5-
- **⫯** ソースの変更: [`c8f0f3f..f9f61e8`](https://github.com/cpprefjp/site/compare/c8f0f3f63e70b87bf9b9d66a9344525331eafa1f..f9f61e8c55c85e3a11a65554a07da1ad1b775661)
5+
- **⫯** ソースの変更: [`c8f0f3f..643d7a1`](https://github.com/cpprefjp/site/compare/c8f0f3f63e70b87bf9b9d66a9344525331eafa1f..643d7a16e89c3bde1f3684c367d8984fc0855491)
66

77
## 変更記事一覧 (258件)
88

gen/pull/1607/reference/meta/bit_size_of.html

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@
2828
<meta property="og:url" content="https://cpprefjp.github.io/reference/meta/bit_size_of.html" />
2929
<meta property="og:site_name" content="cpprefjp - C++日本語リファレンス" />
3030
<meta property="og:type" content="article" />
31-
<meta property="og:description" content="ビットフィールドのビットサイズを取得する" />
31+
<meta property="og:description" content="ビットサイズを取得する" />
3232
<meta name="twitter:card" content="summary" />
3333
<meta name="twitter:title" content="bit_size_of - cpprefjp C++日本語リファレンス" />
3434
<meta name="twitter:url" content="https://cpprefjp.github.io/reference/meta/bit_size_of.html" />
35-
<meta name="twitter:description" content="ビットフィールドのビットサイズを取得する" />
35+
<meta name="twitter:description" content="ビットサイズを取得する" />
3636

3737

3838
<link rel="alternate" type="application/atom+xml" title="Atom" href="https://cpprefjp.github.io/rss.xml" />
@@ -68,7 +68,7 @@
6868

6969
</head>
7070
<body>
71-
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;meta&#34;], &#34;namespace&#34;: [&#34;std::meta&#34;], &#34;id-type&#34;: [&#34;function&#34;], &#34;cpp&#34;: [&#34;cpp26&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;adc69a14e86100dd3048bd5bc82a35d05e62c827&#34;, &#34;source&#34;: &#34;#include &lt;meta&gt;\n\nstruct Flags {\n unsigned a : 1;\n unsigned b : 3;\n};\n\nconsteval bool check() {\n auto members = std::meta::nonstatic_data_members_of(\n ^^Flags, std::meta::access_context::unchecked());\n return std::meta::bit_size_of(members[0]) == 1\n &amp;&amp; std::meta::bit_size_of(members[1]) == 3;\n}\n\nint main() {\n static_assert(check());\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;meta&#34;, &#34;bit_size_of&#34;]}">
71+
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;meta&#34;], &#34;namespace&#34;: [&#34;std::meta&#34;], &#34;id-type&#34;: [&#34;function&#34;], &#34;cpp&#34;: [&#34;cpp26&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;81c4797daf1ce21536b6d128e89d7db31e1f45e1&#34;, &#34;source&#34;: &#34;#include &lt;meta&gt;\n#include &lt;climits&gt;\n\nstruct Flags {\n unsigned a : 1;\n unsigned b : 3;\n int c;\n};\n\nconsteval bool check() {\n // \u578b\u306e\u30d3\u30c3\u30c8\u30b5\u30a4\u30ba: CHAR_BIT * size_of(int)\n static_assert(std::meta::bit_size_of(^^int) == CHAR_BIT * sizeof(int));\n\n // \u30d3\u30c3\u30c8\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u30d3\u30c3\u30c8\u5e45\n auto members = std::meta::nonstatic_data_members_of(\n ^^Flags, std::meta::access_context::unchecked());\n return std::meta::bit_size_of(members[0]) == 1 // a: 1\n &amp;&amp; std::meta::bit_size_of(members[1]) == 3 // b: 3\n &amp;&amp; std::meta::bit_size_of(members[2]) == CHAR_BIT * sizeof(int); // c: CHAR_BIT * sizeof(int)\n}\n\nint main() {\n static_assert(check());\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;meta&#34;, &#34;bit_size_of&#34;]}">
7272
<nav class="navbar navbar-default" role="navigation">
7373
<div class="container-fluid">
7474
<div class="navbar-header">
@@ -188,8 +188,8 @@
188188

189189
<p class="text-right"><small>
190190
最終更新日時(UTC):
191-
<span itemprop="datePublished" content="2026-04-20T05:29:50">
192-
2026年04月20日 05時29分50秒
191+
<span itemprop="datePublished" content="2026-04-24T03:59:24">
192+
2026年04月24日 03時59分24秒
193193
</span>
194194
<br/>
195195
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -219,24 +219,42 @@
219219
</code></pre></div>
220220
</p>
221221
<h2>概要</h2>
222-
<p>ビットフィールドのビットサイズを取得する。</p>
222+
<p>ビットサイズを取得する。</p>
223+
<p>以下のいずれかを表すリフレクションを受け取れる:</p>
224+
<ul>
225+
<li></li>
226+
<li>オブジェクト</li>
227+
<li></li>
228+
<li>参照型でない変数</li>
229+
<li>メンバ変数(ビットフィールドを含む)</li>
230+
<li>無名ビットフィールド</li>
231+
<li>直接基底クラス関係</li>
232+
</ul>
223233
<h2><a class="cpprefjp-defined-word" data-desc="関数呼び出し式の評価結果となるオブジェクト・値">戻り値</a></h2>
224-
<p><code>r</code>がビットフィールドを表す場合、そのビット幅を返す。</p>
234+
<p><code>r</code>がビットフィールドまたは無名ビットフィールドを表す場合、そのビット幅を返す。</p>
235+
<p>それ以外(型、オブジェクト、値、参照型でない変数、ビットフィールドでないメンバ変数、直接基底クラス関係)を表す場合、<code><a href="../climits/char_bit.html">CHAR_BIT</a> * <a href="size_of.html">size_of(r)</a></code>を返す。</p>
225236
<h2><a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a></h2>
226-
<p><code>r</code>がビットフィールドを表さない場合<code><a href="exception.html">std::meta::exception</a></code><a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>を送出する。</p>
237+
<p><code>r</code>が上記のいずれも表さない場合<code><a href="exception.html">std::meta::exception</a></code><a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>を送出する。</p>
227238
<h2></h2>
228-
<p><div class="yata" id="adc69a14e86100dd3048bd5bc82a35d05e62c827"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../meta.html">&lt;meta&gt;</a></span>
239+
<p><div class="yata" id="81c4797daf1ce21536b6d128e89d7db31e1f45e1"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../meta.html">&lt;meta&gt;</a></span>
240+
<span class="cp">#include <a href="../climits.html">&lt;climits&gt;</a></span>
229241

230242
<span class="k">struct</span><span class="w"> </span><span class="nc">Flags</span><span class="w"> </span><span class="p">{</span>
231243
<span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
232244
<span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="mi">3</span><span class="p">;</span>
245+
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">c</span><span class="p">;</span>
233246
<span class="p">};</span>
234247

235248
<span class="k">consteval</span><span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="nf">check</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
249+
<span class="w"> </span><span class="c1">// 型のビットサイズ: <a href="../climits/char_bit.html">CHAR_BIT</a> * size_of(int)</span>
250+
<span class="w"> </span><span class="k">static_assert</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">meta</span><span class="o">::</span><span class="n">bit_size_of</span><span class="p">(</span><span class="o">^^</span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n"><a href="../climits/char_bit.html">CHAR_BIT</a></span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="kt">int</span><span class="p">));</span>
251+
252+
<span class="w"> </span><span class="c1">// ビットフィールドのビット幅</span>
236253
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">members</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">meta</span><span class="o">::</span><span class="n">nonstatic_data_members_of</span><span class="p">(</span>
237254
<span class="w"> </span><span class="o">^^</span><span class="n">Flags</span><span class="p">,</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">meta</span><span class="o">::</span><span class="n">access_context</span><span class="o">::</span><span class="n">unchecked</span><span class="p">());</span>
238-
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">meta</span><span class="o">::</span><span class="n">bit_size_of</span><span class="p">(</span><span class="n">members</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span>
239-
<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">meta</span><span class="o">::</span><span class="n">bit_size_of</span><span class="p">(</span><span class="n">members</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">3</span><span class="p">;</span>
255+
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">meta</span><span class="o">::</span><span class="n">bit_size_of</span><span class="p">(</span><span class="n">members</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="c1">// a: 1</span>
256+
<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">meta</span><span class="o">::</span><span class="n">bit_size_of</span><span class="p">(</span><span class="n">members</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="c1">// b: 3</span>
257+
<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">meta</span><span class="o">::</span><span class="n">bit_size_of</span><span class="p">(</span><span class="n">members</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n"><a href="../climits/char_bit.html">CHAR_BIT</a></span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="kt">int</span><span class="p">);</span><span class="w"> </span><span class="c1">// c: <a href="../climits/char_bit.html">CHAR_BIT</a> * sizeof(int)</span>
240258
<span class="p">}</span>
241259

242260
<span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>

gen/pull/1607/rss.xml

Lines changed: 83 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,91 @@
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-24T04:00:24.698453</updated>
6-
<id>6c4a6736-0d8d-4ada-b9c6-6291177635c0</id>
5+
<updated>2026-04-24T04:05:12.358540</updated>
6+
<id>e39635b8-31a3-4185-a476-d1b55c4d6a33</id>
77

88

9+
<entry>
10+
<title>bit_size_of -- bit_size_of : 対象が狭かったのを修正</title>
11+
<link href="https://cpprefjp.github.io/reference/meta/bit_size_of.html"/>
12+
<id>643d7a16e89c3bde1f3684c367d8984fc0855491:reference/meta/bit_size_of.md</id>
13+
<updated>2026-04-24T12:59:24+09:00</updated>
14+
15+
<summary type="html">&lt;pre&gt;&lt;code&gt;diff --git a/reference/meta/bit_size_of.md b/reference/meta/bit_size_of.md
16+
index 11915900c..86728c3eb 100644
17+
--- a/reference/meta/bit_size_of.md
18+
+++ b/reference/meta/bit_size_of.md
19+
@@ -12,37 +12,57 @@ namespace std::meta {
20+
* info[link info.md]
21+
22+
## 概要
23+
-ビットフィールドのビットサイズを取得する。
24+
+ビットサイズを取得する。
25+
+
26+
+以下のいずれかを表すリフレクションを受け取れる:
27+
+
28+
+- 型
29+
+- オブジェクト
30+
+- 値
31+
+- 参照型でない変数
32+
+- メンバ変数(ビットフィールドを含む)
33+
+- 無名ビットフィールド
34+
+- 直接基底クラス関係
35+
36+
37+
## 戻り値
38+
-`r`がビットフィールドを表す場合、そのビット幅を返す。
39+
+`r`がビットフィールドまたは無名ビットフィールドを表す場合、そのビット幅を返す。
40+
+
41+
+それ以外(型、オブジェクト、値、参照型でない変数、ビットフィールドでないメンバ変数、直接基底クラス関係)を表す場合、[`CHAR_BIT`](/reference/climits/char_bit.md) `*` [`size_of(r)`](size_of.md)を返す。
42+
43+
44+
## 例外
45+
-`r`がビットフィールドを表さない場合、[`std::meta::exception`](exception.md)例外を送出する。
46+
+`r`が上記のいずれも表さない場合、[`std::meta::exception`](exception.md)例外を送出する。
47+
48+
49+
## 例
50+
```cpp example
51+
#include &amp;lt;meta&amp;gt;
52+
+#include &amp;lt;climits&amp;gt;
53+
54+
struct Flags {
55+
unsigned a : 1;
56+
unsigned b : 3;
57+
+ int c;
58+
};
59+
60+
consteval bool check() {
61+
+ // 型のビットサイズ: CHAR_BIT * size_of(int)
62+
+ static_assert(std::meta::bit_size_of(^^int) == CHAR_BIT * sizeof(int));
63+
+
64+
+ // ビットフィールドのビット幅
65+
auto members = std::meta::nonstatic_data_members_of(
66+
^^Flags, std::meta::access_context::unchecked());
67+
- return std::meta::bit_size_of(members[0]) == 1
68+
- &amp;amp;&amp;amp; std::meta::bit_size_of(members[1]) == 3;
69+
+ return std::meta::bit_size_of(members[0]) == 1 // a: 1
70+
+ &amp;amp;&amp;amp; std::meta::bit_size_of(members[1]) == 3 // b: 3
71+
+ &amp;amp;&amp;amp; std::meta::bit_size_of(members[2]) == CHAR_BIT * sizeof(int); // c: CHAR_BIT * sizeof(int)
72+
}
73+
74+
int main() {
75+
static_assert(check());
76+
}
77+
```
78+
+* CHAR_BIT[link /reference/climits/char_bit.md]
79+
80+
### 出力
81+
```
82+
&lt;/code&gt;&lt;/pre&gt;</summary>
83+
84+
<author>
85+
<name>Akira Takahashi</name>
86+
<email>faithandbrave@gmail.com</email>
87+
</author>
88+
</entry>
89+
990
<entry>
1091
<title>annotations_of -- annotations_of : consteval-only型を実行時に使ってしまっていたのを修正</title>
1192
<link href="https://cpprefjp.github.io/reference/meta/annotations_of.html"/>
@@ -234,30 +315,4 @@ index 11749b705..3b1e9cac5 100644
234315
</author>
235316
</entry>
236317

237-
<entry>
238-
<title>静的リフレクション [P2996R13] -- reflection : 「リフレクションできる対象と、取得できる主な情報」の表にannotations_ofを追加</title>
239-
<link href="https://cpprefjp.github.io/lang/cpp26/reflection.html"/>
240-
<id>f93c669fb5f6776535eca5f40aa3acbd0ef86450:lang/cpp26/reflection.md</id>
241-
<updated>2026-04-24T12:02:33+09:00</updated>
242-
243-
<summary type="html">&lt;pre&gt;&lt;code&gt;diff --git a/lang/cpp26/reflection.md b/lang/cpp26/reflection.md
244-
index db68dc1ce..11749b705 100644
245-
--- a/lang/cpp26/reflection.md
246-
+++ b/lang/cpp26/reflection.md
247-
@@ -75,6 +75,7 @@ constexpr auto r4 = ^^std::vector; // テンプレートのリフレクショ
248-
| テンプレート | `^^std::vector` | 名前、テンプレート引数の置換 |
249-
| 基底クラス関係 | [`bases_of()`](/reference/meta/bases_of.md)経由 | 基底クラスの型、アクセス指定子、`virtual`の有無 |
250-
| 関数パラメータ | [`parameters_of()`](/reference/meta/parameters_of.md)経由 | 名前、型、デフォルト引数の有無、明示的オブジェクトパラメータか |
251-
+| アノテーション | [`annotations_of()`](/reference/meta/annotations_of.md)経由 | 型、値(スプライスで取得)、ソース位置 |
252-
253-
### オーバーロードされた関数のリフレクション
254-
`^^f`で関数`f`をリフレクションする場合、`f`がオーバーロードされていると不適格となる。`^^`はオーバーロード集合ではなく単一の関数を対象とする。
255-
&lt;/code&gt;&lt;/pre&gt;</summary>
256-
257-
<author>
258-
<name>Akira Takahashi</name>
259-
<email>faithandbrave@gmail.com</email>
260-
</author>
261-
</entry>
262-
263318
</feed>

gen/pull/1607/sitemap.xml

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

1294712947
<url>
1294812948
<loc>https://cpprefjp.github.io/reference/meta/bit_size_of.html</loc>
12949-
<lastmod>2026-04-20T14:29:50+09:00</lastmod>
12949+
<lastmod>2026-04-24T12:59:24+09:00</lastmod>
1295012950
<changefreq>daily</changefreq>
1295112951
<priority>0.7</priority>
1295212952
</url>

0 commit comments

Comments
 (0)