Namespaces
Variants

std:: is_sufficiently_aligned

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
Definido en el encabezado <memory>
template < std:: size_t N, class T >
bool is_sufficiently_aligned ( T * ptr ) ;
(desde C++26)

Comprueba si el puntero ptr apunta a un objeto cuya alineación tiene un valor de al menos N .

El comportamiento es indefinido si ptr no apunta a un objeto de tipo T (ignorando la calificación cv en cada nivel).

Contenidos

Valor de retorno

true si ptr apunta a un objeto que tiene alineación de al menos N ; de lo contrario false .

Excepciones

No lanza nada.

Notas

std::is_sufficiently_aligned puede utilizarse como precondición para std::assume_aligned .

Macro de prueba de características Valor Estándar Característica
__cpp_lib_is_sufficiently_aligned 202411L (C++26) std::is_sufficiently_aligned

Implementación posible

template<std::size_t N, class T>
bool is_sufficiently_aligned(T* ptr)
{
    return std::bit_cast<std::uintptr_t>(ptr) % N == 0;
}

Ejemplo

Véase también

alignof (C++11) consulta los requisitos de alineación de un tipo
(operador)
alignas (C++11) especifica que el almacenamiento para la variable debe estar alineado por una cantidad específica
(especificador)
(desde C++11) (obsoleto en C++23)
define el tipo adecuado para usar como almacenamiento no inicializado para tipos de tamaño dado
(plantilla de clase)
(C++11)
alinea un puntero en un búfer
(función)
un tipo para acceso alineado a elementos de mdspan
(plantilla de clase)