Namespaces
Variants

std::meta::bit_size_of

Von de.cppreference.net
< cpp | meta
 
 
 
Reflektionsbibliothek
 
Reflektionstypen und -abfragen
Reflektionsabfragen
Reflektionslayoutabfragen
Typeigenschaften
Abfragen von Typeigenschaften
 
Definiert in Header <meta>
consteval std::size_t bit_size_of( std::meta::info r );
(seit C++26)

Gibt die Größe in Bits des Typs oder (Unter-)Objekts zurück, das durch r repräsentiert wird.

Parameter

r - ein Reflektionswert

Rückgabewert

Wenn r ein Bitfeld repräsentiert, wird dessen Bitbreite zurückgegeben.

Andernfalls, wenn r eine Datenmitgliedsbeschreibung repräsentiert, deren Bitbreite nicht ⊥ ist, wird diese Bitbreite zurückgegeben.

Andernfalls wird CHAR_BIT * std::meta::size_of(r) zurückgegeben.

Ausnahmen

Löst std::meta::exception aus, sofern nicht alle der folgenden Bedingungen erfüllt sind:

  • std::meta::dealias(r) stellt eines der Folgenden dar:
  • Wenn std::meta::dealias(r) einen Typ repräsentiert, muss std::meta::is_complete_type(r) true sein.

Beispiel

#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);
}

Siehe auch

gibt die Ausrichtung des reflektierten Objekts oder Typs zurück
(Funktion)
(C++26)
gibt die Größe in Bytes des reflektierten Objekts oder Typs zurück
(Funktion)