std::meta::bit_size_of
ja.cppreference.net より
| ヘッダ <meta>
|
||
consteval std::size_t bit_size_of( std::meta::info r );
|
(C++26 以上) で定義 | |
r で表される型または(部分)オブジェクトのサイズをビット単位で返す。
引数
| r | - | リフレクション値 |
戻り値
r が ビットフィールド を表す場合、そのビット幅を返す。
そうでなく、r がビット幅が ⊥ でない データメンバ記述 を表す場合、そのビット幅を返す。
そうでなければ、CHAR_BIT * std::meta::size_of(r) を返す。
例外
以下の条件がすべて満たされない限り、std::meta::exception を投げる:
std::meta::dealias(r)が次のいずれかを表す:
std::meta::dealias(r)が型を表す場合、std::meta::is_complete_type(r)はtrueである。
例
このコードを実行
#include <climits>
#include <cstdint>
#include <meta>
static_assert(std::meta::bit_size_of(^^int) == CHAR_BIT * sizeof(int));
int main()
{
constexpr struct S { std::uint32_t m{}; } o;
static_assert(std::meta::bit_size_of(^^S) == 32);
static_assert(std::meta::bit_size_of(^^o) == 32);
struct B { std::uint64_t m : 42{}; };
static_assert(std::meta::bit_size_of(^^B) == 64);
static_assert(std::meta::bit_size_of(^^B::m) == 42);
}
関連項目
(C++26) |
リフレクションされたオブジェクトまたは型のアライメントを返す (関数) |
(C++26) |
リフレクションされたオブジェクトまたは型のバイト単位のサイズを返す (関数) |