alignof
operator
(since C++11)
Interroge les exigences d'alignement d'un type.
Table des matières |
Syntaxe
alignof(
type-id
)
|
|||||||||
Retourne une valeur de type std::size_t .
Explication
Retourne l'alignement , en octets, requis pour toute instance du type indiqué par type-id , qui est soit un type d'objet complet , un type tableau dont le type d'élément est complet, ou un type référence vers l'un de ces types.
Si le type est un type référence, l'opérateur retourne l'alignement du type référencé ; si le type est un type tableau, l'exigence d'alignement du type élément est retournée.
Notes
Voir
alignment
pour la signification et les propriétés de la valeur retournée par
alignof
.
Mots-clés
Exemple
#include <iostream> struct Foo { int i; float f; char c; }; // Note: alignas(alignof(long double)) below can be // simplified to alignas(long double) if desired. struct alignas(alignof(long double)) Foo2 { // put your definition here }; struct Empty {}; struct alignas(64) Empty64 {}; #define SHOW(expr) std::cout << #expr << " = " << (expr) << '\n' int main() { SHOW(alignof(char)); SHOW(alignof(int*)); SHOW(alignof(Foo)); SHOW(alignof(Foo2)); SHOW(alignof(Empty)); SHOW(alignof(Empty64)); }
Sortie possible :
alignof(char) = 1 alignof(int*) = 8 alignof(Foo) = 4 alignof(Foo2) = 16 alignof(Empty) = 1 alignof(Empty64) = 64
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Applicable à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| CWG 1305 | C++11 |
type-id
ne pouvait pas représenter une référence à un tableau
avec une limite inconnue mais un type d'élément complet |
autorisé |
Références
- Norme C++23 (ISO/CEI 14882:2024) :
-
- 7.6.2.6 Alignof [expr.alignof]
- Norme C++20 (ISO/CEI 14882:2020) :
-
- 7.6.2.5 Alignof [expr.alignof]
- Norme C++17 (ISO/CEI 14882:2017) :
-
- 8.3.6 Alignof [expr.alignof]
- Norme C++14 (ISO/IEC 14882:2014) :
-
- 5.3.6 Alignof [expr.alignof]
- Norme C++11 (ISO/IEC 14882:2011) :
-
- 5.3.6 Alignof [expr.alignof]
Voir aussi
| Exigence d'alignement | restreint les adresses auxquelles un objet peut être alloué |
alignas
(C++11)
|
spécifie que le stockage de la variable doit être aligné selon une valeur spécifique
(spécificateur) |
|
(C++11)
|
obtient les exigences d'alignement du type
(modèle de classe) |
|
Documentation C
pour
_Alignof
,
alignof
opérateur
|
|