std::is_sufficiently_aligned
Von cppreference.com
| Definiert in Header <memory> |
||
| template< std::size_t N, class T > bool is_sufficiently_aligned( T* ptr ); |
(seit C++26) | |
Prüft, ob der Zeiger ptr auf ein Objekt zeigt, dessen Ausrichtung einen Wert von mindestens N hat.
Das Verhalten ist undefiniert, wenn ptr nicht auf ein Objekt vom Typ T zeigt (unter Ignorierung der cv-Qualifizierung auf jeder Ebene).
Inhalt |
[bearbeiten] Rückgabewert
true, wenn ptr auf ein Objekt zeigt, das eine Ausrichtung von mindestens N hat; andernfalls false.
[bearbeiten] Ausnahmen
Wirft nichts.
[bearbeiten] Hinweise
std::is_sufficiently_aligned kann als Vorbedingung für std::assume_aligned verwendet werden.
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_is_sufficiently_aligned |
202411L |
(C++26) | std::is_sufficiently_aligned
|
[bearbeiten] Mögliche Implementierung
template<std::size_t N, class T> bool is_sufficiently_aligned(T* ptr) { return std::bit_cast<std::uintptr_t>(ptr) % N == 0; } |
[bearbeiten] Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[bearbeiten] Siehe auch
alignof (C++11) |
fragt nach Ausrichtungsanforderungen eines Typs (Operator) |
alignas (C++11) |
gibt an, dass der Speicher für die Variable um einen bestimmten Betrag ausgerichtet werden soll (Spezifizierer) |
| (seit C++11)(veraltet in C++23) |
definiert den Typ, der als uninitialisierter Speicher für Typen gegebener Größe geeignet ist (Klassenvorlage) |
| (C++11) |
richtet einen Zeiger in einem Puffer aus (Funktion) |
| (C++26) |
ein Typ für den ausgerichteten Zugriff auf Elemente von mdspan(class template) |