std::meta::bit_size_of
Depuis fr.cppreference.net
| Défini dans l'en-tête <meta>
|
||
consteval std::size_t bit_size_of( std::meta::info r );
|
(depuis C++26) | |
Retourne la taille en bits du type ou (sous-)objet représenté par r.
Paramètres
| r | - | une valeur de réflexion |
Valeur de retour
Si r représente un champ de bits, retourne sa largeur en bits.
Sinon, si r représente une description de membre de données dont la largeur en bits n'est pas ⊥, retourne cette largeur en bits.
Sinon, retourne CHAR_BIT * std::meta::size_of(r).
Exceptions
Lève std::meta::exception sauf si toutes les conditions suivantes sont remplies :
std::meta::dealias(r)représente l'un des éléments suivants :
- type
- objet
- valeur (scalaire)
- variable de type non référence
- membre de données non statique
- champ de bits non nommé
- relation de classe de base directe
- description de membre de données
- Si
std::meta::dealias(r)représente un type,std::meta::is_complete_type(r)esttrue.
Exemple
Exécuter ce code
#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);
}
Voir aussi
(C++26) |
retourne l'alignement de l'objet ou du type réfléchi (fonction) |
(C++26) |
retourne la taille en octets de l'objet ou du type réfléchi (fonction) |