- Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 - Leap-15.6
 
| std::alignment_of(3) | C++ Standard Libary | std::alignment_of(3) | 
NAME¶
std::alignment_of - std::alignment_of
Synopsis¶
 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.
  
   If the program adds specializations for std::alignment_of
  
   or std::alignment_of_v
  
   (since C++17), the behavior is undefined.
Member constants¶
 value alignof(T)
  
   [static] (public static member constant)
Member functions¶
 operator std::size_t converts the object to std::size_t, returns
    value
  
   (public member function)
  
   operator() returns value
  
   (C++14) (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<std::size_t, alignof(T)>
    {};
Notes¶
 This type trait predates the alignof keyword, which can be used
    to obtain the same
  
   value with less verbosity.
Example¶
// Run this code
  
   #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>() << ' '; // alt syntax
  
   std::cout << std::alignment_of_v<double> << '\n'; // c++17
    alt syntax
  
   }
Possible output:¶
1 2 4 8
See also¶
 alignof operator(C++11) queries alignment requirements of
    a type
  
   alignas specifier(C++11) specifies that the storage for the variable
    should be
  
   aligned by specific amount
  
   aligned_storage defines the type suitable for use as uninitialized
  
   (C++11)(deprecated in C++23) storage for types of given size
  
   (class template)
  
   aligned_union defines the type suitable for use as uninitialized
  
   (C++11)(deprecated in C++23) storage for all given types
  
   (class template)
  
   max_align_t trivial type with alignment requirement as great as any
  
   (C++11) other scalar type
  
   (typedef)
| 2024.06.10 | http://cppreference.com |