alignof
operator
(since C++11)
Fragt die Ausrichtungsanforderungen eines Typs ab.
Inhaltsverzeichnis |
Syntax
alignof(
Typ-ID
)
|
|||||||||
Gibt einen Wert vom Typ std::size_t zurück.
Erklärung
Gibt die Ausrichtung in Bytes zurück, die für jede Instanz des durch type-id angegebenen Typs erforderlich ist, welcher entweder ein vollständiger Objekttyp, ein Array-Typ mit vollständigem Elementtyp oder ein Referenztyp auf einen dieser Typen ist.
Wenn der Typ ein Referenztyp ist, gibt der Operator die Ausrichtung des referenzierten Typs zurück; wenn der Typ ein Arraytyp ist, wird die Ausrichtungsanforderung des Elementtyps zurückgegeben.
Hinweise
Siehe
alignment
für die Bedeutung und Eigenschaften des von
alignof
zurückgegebenen Werts.
Schlüsselwörter
Beispiel
#include <iostream> struct Foo { int i; float f; char c; }; // Hinweis: alignas(alignof(long double)) unten kann zu // alignas(long double) vereinfacht werden, falls gewünscht. struct alignas(alignof(long double)) Foo2 { // Fügen Sie hier Ihre Definition ein }; 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
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 keinen Verweis auf ein Array
mit unbekannter Grenze, aber vollständigem Elementtyp darstellen |
erlaubt |
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]
Siehe auch
| Alignment requirement | schränkt die Adressen ein, an denen ein Objekt allokiert werden kann |
alignas
(C++11)
|
spezifiziert, dass der Speicher für die Variable an einer bestimmten Grenze ausgerichtet sein soll
(Spezifizierer) |
|
(C++11)
|
ermittelt die Ausrichtungsanforderungen eines Typs
(Klassentemplate) |
|
C-Dokumentation
für
_Alignof
,
alignof
Operator
|
|