std::meta::size_of
Depuis fr.cppreference.net
|
Défini dans l'en-tête <meta>
|
||
consteval std::size_t size_of( std::meta::info r );
|
(depuis C++26) Retourne la taille du type ou (sous-)objet représenté par | |
.
Sommairer1
-
| une valeur de réflexion | Valeur de retour | Si |
représente un type « référence vers
», retourne r.
TSinon, si sizeof(T*) représente un type
, retourne r.
USinon, équivalent à sizeof(U).
Exceptionsstd::meta::size_of(std::meta::type_of(r))Lance
std::meta::exception
sauf si toutes les conditions suivantes sont remplies : représente l'un des éléments suivants :
std::meta::dealias(r)type
- objet
- valeur (scalaire)
- variable de type non référence
- membre de données non statique qui n'est pas un champ de bits
- relation de classe de base directe
- description de membre de données
- dont la largeur de bits est ⊥Si
- représente un type,
std::meta::dealias(r)eststd::meta::is_complete_type(r).trueNotes
Cette fonction traite « référence de
» de la même manière que « pointeur vers T ». Cela correspond à la représentation des membres référence non statiques.
TLe résultat est non nul même si
représente une rrelation de classe de base directe d'une classe de base vide.
Exemple
Exécuter ce code
Voir aussi
#include <meta>
static_assert(std::meta::size_of(^^int) == sizeof(int));
static_assert(std::meta::size_of(^^int*) == sizeof(int*));
consteval bool test()
{
struct A;
// constexpr auto _ = std::meta::size_of(^^A);
// error: uncaught exception of type 'std::meta::exception';
// 'what()': 'reflection with incomplete type in size_of'
return true;
}
static_assert(test());
struct B { int i, j; };
static_assert(sizeof(B) == std::meta::size_of(^^B));
template<class T>
struct C { T m; };
static_assert(size_of(^^C<char>) == sizeof(char));
struct D { int x : 015; };
static_assert(size_of(^^D) == sizeof(int));
// static_assert(size_of(^^D::x) == sizeof(int));
// error: uncaught exception of type 'std::meta::exception';
// 'what()': 'reflection not suitable for size_of'
int main() {}
alignment_of
retourne l'alignement de l'objet ou du type reflété |
(fonction) bit_size_of |
retourne la taille en bits de l'objet ou du type reflété |
(fonction) |