std::meta::bit_size_of

来自cppreference.com
< 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(bit_size_of(^^int) == CHAR_BIT * sizeof(int));
static_assert(bit_size_of(^^int) == std::numeric_limits<int>::digits + 1);

int main()
{
    constexpr struct S { std::uint32_t m{}; } o;
    static_assert(bit_size_of(^^S) == 32);
    static_assert(bit_size_of(^^o) == 32);

    struct B { std::uint64_t m : 42{}; };
    static_assert(bit_size_of(^^B) == 64);
    static_assert(bit_size_of(^^B::m) == 42);
}

参阅

返回所反射对象或类型的对齐值
(函数) [编辑]
(C++26)
返回所反射对象或类型的大小(字节数)
(函数) [编辑]
Morty Proxy This is a proxified and sanitized view of the page, visit original site.