std::meta::bit_size_of
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) |
리플렉션된 객체 또는 타입의 바이트 단위 크기를 반환합니다 (함수) |