Namespaces
Variants

std::meta::bit_size_of

来自 zh.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)
返回所反射对象或类型的字节大小
(函数)