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