std::alignment_of (3) - Linux Manuals

std::alignment_of: std::alignment_of


std::alignment_of - std::alignment_of


Defined in header <type_traits>
template< class T > (since C++11)
struct alignment_of;

Provides the member constant value equal to the alignment_requirement of the type T, as if obtained by an alignof expression. If T is an array type, returns the alignment requirements of the element type. If T is a reference type, returns the alignment requirements of the type referred to.
If alignof(T) is not a valid expression, the behavior is undefined.

Helper variable template

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

Inherited from std::integral_constant

Member constants

value alignof(T)
         (public static member constant)

Member functions

                     converts the object to std::size_t, returns value
operator std::size_t (public member function)

operator() returns value
                     (public member function)

Member types

Type Definition
value_type std::size_t
type std::integral_constant<std::size_t, value>

Possible implementation

  template< class T >
  struct alignment_of : std::integral_constant<
                         > {};


This type trait predates the alignof_keyword, which can be used to obtain the same value with less verbosity.


// Run this code

  #include <iostream>
  #include <type_traits>

  class A {};

  int main()
      std::cout << std::alignment_of<A>::value << '\n';
      std::cout << std::alignment_of<int>() << '\n'; // alt syntax
      std::cout << std::alignment_of_v<double> << '\n'; // c++17 alt syntax



See also

alignof_operator queries alignment requirements of a type (since C++11)

aligned_storage defines the type suitable for use as uninitialized storage for types of given size
                 (class template)

aligned_union defines the type suitable for use as uninitialized storage for all given types
                 (class template)

max_align_t trivial type with alignment requirement as great as any other scalar type