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 |