std::meta::bit_size_of
Von de.cppreference.net
| 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:
- Typ
- Objekt
- (Skalar-)Wert
- Variable vom Nicht-Referenztyp
- Nicht-statisches Datenmitglied
- Unbenanntes Bitfeld
- Direkte Basisklassenbeziehung
- Datenmitgliedsbeschreibung
- Wenn
std::meta::dealias(r)einen Typ repräsentiert, mussstd::meta::is_complete_type(r)truesein.
Beispiel
Diesen Code ausführen
#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
(C++26) |
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) |