|
28 | 28 | <meta property="og:url" content="https://cpprefjp.github.io/reference/meta/bit_size_of.html" /> |
29 | 29 | <meta property="og:site_name" content="cpprefjp - C++日本語リファレンス" /> |
30 | 30 | <meta property="og:type" content="article" /> |
31 | | - <meta property="og:description" content="ビットフィールドのビットサイズを取得する。" /> |
| 31 | + <meta property="og:description" content="ビットサイズを取得する。" /> |
32 | 32 | <meta name="twitter:card" content="summary" /> |
33 | 33 | <meta name="twitter:title" content="bit_size_of - cpprefjp C++日本語リファレンス" /> |
34 | 34 | <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="ビットサイズを取得する。" /> |
36 | 36 |
|
37 | 37 |
|
38 | 38 | <link rel="alternate" type="application/atom+xml" title="Atom" href="https://cpprefjp.github.io/rss.xml" /> |
|
68 | 68 |
|
69 | 69 | </head> |
70 | 70 | <body> |
71 | | -<header data-kunai-mdinfo="{"meta": {"header": ["meta"], "namespace": ["std::meta"], "id-type": ["function"], "cpp": ["cpp26"]}, "sources": [{"id": "adc69a14e86100dd3048bd5bc82a35d05e62c827", "source": "#include <meta>\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 && std::meta::bit_size_of(members[1]) == 3;\n}\n\nint main() {\n static_assert(check());\n}\n"}], "page_id": ["reference", "meta", "bit_size_of"]}"> |
| 71 | +<header data-kunai-mdinfo="{"meta": {"header": ["meta"], "namespace": ["std::meta"], "id-type": ["function"], "cpp": ["cpp26"]}, "sources": [{"id": "81c4797daf1ce21536b6d128e89d7db31e1f45e1", "source": "#include <meta>\n#include <climits>\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 && std::meta::bit_size_of(members[1]) == 3 // b: 3\n && 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"}], "page_id": ["reference", "meta", "bit_size_of"]}"> |
72 | 72 | <nav class="navbar navbar-default" role="navigation"> |
73 | 73 | <div class="container-fluid"> |
74 | 74 | <div class="navbar-header"> |
|
188 | 188 |
|
189 | 189 | <p class="text-right"><small> |
190 | 190 | 最終更新日時(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秒 |
193 | 193 | </span> |
194 | 194 | <br/> |
195 | 195 | <span itemprop="author" itemscope itemtype="http://schema.org/Person"> |
|
219 | 219 | </code></pre></div> |
220 | 220 | </p> |
221 | 221 | <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> |
223 | 233 | <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> |
225 | 236 | <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> |
227 | 238 | <h2>例</h2> |
228 | | -<p><div class="yata" id="adc69a14e86100dd3048bd5bc82a35d05e62c827"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../meta.html"><meta></a></span> |
| 239 | +<p><div class="yata" id="81c4797daf1ce21536b6d128e89d7db31e1f45e1"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../meta.html"><meta></a></span> |
| 240 | +<span class="cp">#include <a href="../climits.html"><climits></a></span> |
229 | 241 |
|
230 | 242 | <span class="k">struct</span><span class="w"> </span><span class="nc">Flags</span><span class="w"> </span><span class="p">{</span> |
231 | 243 | <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> |
232 | 244 | <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> |
233 | 246 | <span class="p">};</span> |
234 | 247 |
|
235 | 248 | <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> |
236 | 253 | <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> |
237 | 254 | <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">&&</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">&&</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">&&</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> |
240 | 258 | <span class="p">}</span> |
241 | 259 |
|
242 | 260 | <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> |
|
0 commit comments