alignof Operator (seit C++11)
Fragt die Ausrichtungsvoraussetzungen eines Typs ab.
Inhalt |
[bearbeiten] Syntax
alignof( type-id ) |
|||||||||
Gibt einen Wert vom Typ std::size_t zurück.
[bearbeiten] Erklärung
Gibt die Ausrichtung in Bytes zurück, die für jede Instanz des durch type-id angegebenen Typs erforderlich ist. Dabei handelt es sich um einen vollständigen Objekttyp, einen Array-Typ, dessen Elementtyp vollständig ist, oder einen Referenztyp auf einen dieser Typen.
Wenn der Typ ein Referenztyp ist, gibt der Operator die Ausrichtung des referenzierten Typs zurück; wenn der Typ ein Array-Typ ist, wird die Ausrichtungsanforderung des Elementtyps zurückgegeben.
[bearbeiten] Hinweise
Siehe Ausrichtung für die Bedeutung und Eigenschaften des von alignof zurückgegebenen Werts.
[bearbeiten] Schlüsselwörter
[bearbeiten] Beispiel
#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)); }
Mögliche Ausgabe
alignof(char) = 1 alignof(int*) = 8 alignof(Foo) = 4 alignof(Foo2) = 16 alignof(Empty) = 1 alignof(Empty64) = 64
[bearbeiten] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| CWG 1305 | C++11 | type-id konnte keine Referenz auf ein Array darstellen mit unbekannter Grenze, aber einem vollständigen Elementtyp |
erlaubt |
[bearbeiten] Referenzen
- C++23 Standard (ISO/IEC 14882:2024)
- 7.6.2.6 Alignof [expr.alignof]
- C++20 Standard (ISO/IEC 14882:2020)
- 7.6.2.5 Alignof [expr.alignof]
- C++17 Standard (ISO/IEC 14882:2017)
- 8.3.6 Alignof [expr.alignof]
- C++14 Standard (ISO/IEC 14882:2014)
- 5.3.6 Alignof [expr.alignof]
- C++11 Standard (ISO/IEC 14882:2011)
- 5.3.6 Alignof [expr.alignof]
[bearbeiten] Siehe auch
| Ausrichtungsvoraussetzung | beschränkt die Adressen, an denen ein Objekt zugewiesen werden darf |
alignas (C++11) |
gibt an, dass der Speicher für die Variable um einen bestimmten Betrag ausgerichtet werden soll (Spezifizierer) |
| (C++11) |
erhält die Ausrichtungsvoraussetzungen des Typs (Klassenvorlage) |
| C-Dokumentation für
_Alignof, alignof Operator | |