alignof
operator
(since C++11)
Consulta los requisitos de alineación de un tipo.
Contenidos |
Sintaxis
alignof(
type-id
)
|
|||||||||
Retorna un valor de tipo std::size_t .
Explicación
Devuelve la alineación , en bytes, requerida para cualquier instancia del tipo indicado por type-id , que es un tipo de objeto completo , un tipo de array cuyo tipo de elemento es completo, o un tipo de referencia a uno de esos tipos.
Si el tipo es un tipo de referencia, el operador devuelve la alineación del tipo referenciado; si el tipo es un tipo de array, se devuelve el requisito de alineación del tipo de elemento.
Notas
Consulte
alignment
para conocer el significado y las propiedades del valor devuelto por
alignof
.
Palabras clave
Ejemplo
#include <iostream> struct Foo { int i; float f; char c; }; // Nota: alignas(alignof(long double)) a continuación puede // simplificarse a alignas(long double) si se desea. struct alignas(alignof(long double)) Foo2 { // coloque su definición aquí }; 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)); }
Salida posible:
alignof(char) = 1 alignof(int*) = 8 alignof(Foo) = 4 alignof(Foo2) = 16 alignof(Empty) = 1 alignof(Empty64) = 64
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| CWG 1305 | C++11 |
type-id
no podía representar una referencia a un array
con un límite desconocido pero un tipo de elemento completo |
permitido |
Referencias
- Estándar C++23 (ISO/IEC 14882:2024):
-
- 7.6.2.6 Alignof [expr.alignof]
- Estándar C++20 (ISO/IEC 14882:2020):
-
- 7.6.2.5 Alignof [expr.alignof]
- Estándar C++17 (ISO/IEC 14882:2017):
-
- 8.3.6 Alignof [expr.alignof]
- Estándar C++14 (ISO/IEC 14882:2014):
-
- 5.3.6 Alignof [expr.alignof]
- Estándar C++11 (ISO/IEC 14882:2011):
-
- 5.3.6 Alignof [expr.alignof]
Véase también
| Requisito de alineación | restringe las direcciones en las que un objeto puede ser asignado |
alignas
(C++11)
|
especifica que el almacenamiento para la variable debe estar alineado por una cantidad específica
(especificador) |
|
(C++11)
|
obtiene los requisitos de alineación del tipo
(plantilla de clase) |
|
Documentación de C
para
_Alignof
,
alignof
operator
|
|