◐ Shell
clean mode source ↗

std::alignment_of - cppreference.com

De cppreference.com

template< class T > struct alignment_of;

(desde C++11)

Proporciona la constante miembro value igual al requerimiento de alineación del tipo T, como si se obtuviera por una expresión alignof. Si T es un tipo array, devuelve los requerimientos de alineación del tipo de elemento. Si T es un tipo referencia, devuelve los requerimientos de alineación del tipo al que se hace referencia.

Si alignof(T) no es una expresión válida, el comportamiento está indefinido.

El comportamiento de un programa que añade especializaciones para alignment_of o alignment_of_v (desde C++17) no está definido.

Plantilla de variable auxiliar

template< class T > inline constexpr std::size_t alignment_of_v = alignment_of<T>::value;

(desde C++17)

Heredado de std::integral_constant

Constantes miembro

alignof(T)
(constante miembro pública estática)

Funciones miembro

Convierte el objeto a std::size_t, devuelve value.
(función miembro pública)
Devuelve value.
(función miembro pública)

Tipos miembro

Tipo Definición
value_type std::size_t
type std::integral_constant<std::size_t, value>

Posible implementación

template< class T >
struct alignment_of : std::integral_constant<
                          std::size_t,
                          alignof(T)
                       > {};

Notas

Este rasgo de tipo es anterior a la palabra clave alignof, que puede usarse para obtener el mismo valor con menos verbosidad.

Ejemplo

#include <cstdint>
#include <iostream>
#include <type_traits>

struct A {};
struct B {
    std::int8_t p;
    std::int16_t q;
};

int main()
{
    std::cout << std::alignment_of<A>::value << ' ';
    std::cout << std::alignment_of<B>::value << ' ';
    std::cout << std::alignment_of<int>() << ' ';     // sintaxis alterna
    std::cout << std::alignment_of_v<double> << '\n'; // sintaxis alterna de C++17
}

Posible salida:

Véase también

operador alignof(C++11) Consulta los requerimientos de alineación de un tipo (desde C++11) [editar]
especificador alignas(C++11) Especifica que el almacenamiento para la variable debe estar alineado por la cantidad específica [editar]
Define el tipo adecuado para su uso como almacenamiento sin inicializar para tipos de un tamaño dado
(plantilla de clase) [editar]
Define el tipo adecuado para su uso como almacenamiento sin inicializar para todos los tipos dados
(plantilla de clase) [editar]
Tipo de datos simple con requerimiento de alineación tan grande como cualquier otro tipo escalar.
(typedef) [editar]