std::meta::bit_size_of
De es.cppreference.net
| Definido en el encabezado <meta>
|
||
consteval std::size_t bit_size_of( std::meta::info r );
|
(desde C++26) | |
Devuelve el tamaño en bits del tipo o (sub)objeto representado por r.
Parámetros
| r | - | un valor de reflexión |
Valor de retorno
Si r representa un campo de bits, devuelve su anchura en bits.
En caso contrario, si r representa una descripción de miembro de datos cuya anchura de bits no es ⊥, devuelve esa anchura de bits.
En caso contrario, devuelve CHAR_BIT * std::meta::size_of(r).
Excepciones
Lanza std::meta::exception a menos que se cumplan todas las condiciones siguientes:
std::meta::dealias(r)representa uno de los siguientes:
- tipo
- objeto
- (escalar) valor
- variable de tipo no referencia
- miembro de datos no estático
- campo de bits sin nombre
- relación de clase base directa
- descripción de miembro de datos
- Si
std::meta::dealias(r)representa un tipo,std::meta::is_complete_type(r)estrue.
Ejemplo
Ejecutar este código
#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);
}
Véase también
(C++26) |
devuelve la alineación del objeto o tipo reflejado (función) |
(C++26) |
devuelve el tamaño en bytes del objeto o tipo reflejado (función) |