Namespaces
Variants

std::meta::bit_size_of

С ru.cppreference.net
 
 
 
Библиотека отражения
Запросы доступности членов
Идентификация областей видимости
Запросы членов отражения
Отражение аннотаций
Извлечение значений
Подстановка отражения
Отражение результатов выражений
Генерация определений классов

Первичные категории типов
Составные категории типов
Свойства типов ➜
Отношения типов
 
Типы и запросы отражения
Запросы отражения
Запросы размещения отражения
Свойства типов
Запросы свойств типов
 
Определён в заголовке <meta>
consteval std::size_t bit_size_of( std::meta::info r );
(since 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)
возвращает размер в байтах отражённого объекта или типа
(функция)