Namespaces
Variants

std:: alignment_of

From cppreference.net
Metaprogramming library
Type traits
Type categories
(C++11)
(C++11) ( DR* )
Type properties
(C++11)
(C++11)
(C++14)
(C++11) (deprecated in C++26)
(C++11) ( until C++20* )
(C++11) (deprecated in C++20)
(C++11)
Type trait constants
Metafunctions
(C++17)
Supported operations
Relationships and property queries
(C++11)
alignment_of
(C++11)
(C++11)
(C++11)
Type modifications
Type transformations
(C++11) (deprecated in C++23)
(C++11) (deprecated in C++23)
(C++11)
(C++11) ( until C++20* ) (C++17)

Compile-time rational arithmetic
Compile-time integer sequences
Défini dans l'en-tête <type_traits>
template < class T >
struct alignment_of ;
(depuis C++11)

Fournit la constante membre value égale aux exigences d'alignement du type T , comme si elles étaient obtenues par une expression alignof . Si T est un type tableau, retourne les exigences d'alignement du type élément. Si T est un type référence, retourne les exigences d'alignement du type référencé.

Si alignof ( T ) n'est pas une expression valide, le comportement est indéfini.

Si le programme ajoute des spécialisations pour std::alignment_of ou std::alignment_of_v (depuis C++17) , le comportement est indéfini.

Table des matières

Modèle de variable d'assistance

template < class T >
constexpr std:: size_t alignment_of_v = alignment_of < T > :: value ;
(depuis C++17)

Hérité de std:: integral_constant

Constantes membres

value
[static]
alignof ( T )
(constante membre publique statique)

Fonctions membres

operator std::size_t
convertit l'objet en std:: size_t , retourne value
(fonction membre publique)
operator()
(C++14)
retourne value
(fonction membre publique)

Types membres

Type Définition
value_type std:: size_t
type std:: integral_constant < std:: size_t , value >

Implémentation possible

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

Notes

Ce trait de type précède le mot-clé alignof , qui peut être utilisé pour obtenir la même valeur avec moins de verbosité.

Exemple

#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>() << ' '; // syntaxe alternative
    std::cout << std::alignment_of_v<double> << '\n'; // syntaxe alternative c++17
}

Sortie possible :

1 2 4 8

Voir aussi

alignof (C++11) interroge les exigences d'alignement d'un type
(opérateur)
alignas (C++11) spécifie que le stockage de la variable doit être aligné selon une quantité spécifique
(spécificateur)
(since C++11) (deprecated in C++23)
définit le type approprié pour une utilisation comme stockage non initialisé pour des types de taille donnée
(modèle de classe)
(since C++11) (deprecated in C++23)
définit le type approprié pour une utilisation comme stockage non initialisé pour tous les types donnés
(modèle de classe)
type trivial avec une exigence d'alignement aussi grande que tout autre type scalaire
(typedef)