std::meta::alignment_of
| Défini dans l'en-tête <meta>
|
||
consteval std::size_t alignment_of( std::meta::info r );
|
(depuis C++26) | |
Renvoie l'exigence d'alignement 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 type « référence à T », renvoie alignof(T*).
Sinon, si r représente un type U, renvoie alignof(U).
Sinon, si r représente une variable ou un objet, renvoie l'exigence d'alignement de la variable ou de l'objet.
Sinon, si r représente une relation de classe de base directe, renvoie l'exigence d'alignement de la classe de base (c.-à-d. std::meta::alignment_of(std::meta::type_of(r))).
Sinon, si r représente un membre de données non statique M d'une classe C, renvoie l'exigence d'alignement du sous-objet membre direct correspondant d'un objet complet de type C.
Sinon, r représente une description de membre de données, renvoie sa valeur d'alignement si elle n'est pas ⊥, ou std::meta::alignment_of(std::meta::type_of(r)) sinon.
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
- 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
std::meta::dealias(r)représente un type,std::meta::is_complete_type(r)esttrue.
Notes
Cette fonction traite « référence à T » de la même manière que « pointeur vers T ». Cela correspond à la représentation des membres de référence non statiques.
Exemple
| Cette section est incomplète Raison : aucun exemple |
Voir aussi
alignof (C++11)
|
interroge les exigences d'alignement d'un type (operator) |