Namespaces
Variants

std::meta::bit_size_of

ja.cppreference.net より
< cpp | meta
 
 
 
リフレクションライブラリ
 
リフレクション型と問い合わせ
リフレクション問い合わせ
リフレクションレイアウト問い合わせ
型プロパティ
型プロパティ問い合わせ
 
ヘッダ <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)
リフレクションされたオブジェクトまたは型のバイト単位のサイズを返す
(関数)