Espacios de nombres
Variantes
Acciones

std::alignment_of

De cppreference.com
< cpp‎ | types
 
 
Biblioteca de servicios
 
Apoyo de tipos
Propiedades de tipos
(C++11)
(C++11)
(C++14)
(C++11)
(C++11)(hasta C++20)
(C++11)(en desuso en C++20)
(C++11)
Constantes de rasgos de tipos
Metafunciones
(C++17)
Contexto de evaluación constante
Operaciones soportadas
Relaciones y consultas de propiedades
alignment_of
(C++11)
(C++11)
(C++11)
Modificaciones de tipos
Transformaciones de tipos
(C++11)
(C++11)
(C++17)
(C++11)(hasta C++20)(C++17)
 
Definido en el archivo de encabezado <type_traits>
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_ofo alignment_of_v(desde C++17) no está definido.

Contenido

[editar]Plantilla de variable auxiliar

template<class T >
inlineconstexprstd::size_t alignment_of_v = alignment_of<T>::value;
(desde C++17)

Heredado de std::integral_constant

Constantes miembro

value
[estático]
alignof(T)
(constante miembro pública estática)

Funciones miembro

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

Tipos miembro

Tipo Definición
value_typestd::size_t
typestd::integral_constant<std::size_t, value>

[editar]Posible implementación

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

[editar]Notas

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

[editar]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 alternastd::cout<< std::alignment_of_v<double><<'\n';// sintaxis alterna de C++17}

Posible salida:

1 2 4 8

[editar]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]
close