types_alignment_of
types_alignment_of (타입의 정렬 요구사항 조회)
이 페이지에서는 C++ 표준 라이브러리의 std::alignment_of 타입 특성에 대해 설명해요. 이 타입은 주어진 타입의 정렬 요구사항을 컴파일 타임 상수로 제공해요. alignof 표현식과 동일한 결과를 얻을 수 있어요.
출처: cppreference
본문
<type_traits> 헤더에 정의됨 |
||
|---|---|---|
template < class T > struct alignment_of ; |
(C++11부터) |
T 타입의 정렬 요구사항과 같은 값의 멤버 상수 value를 제공해요. 이 값은 alignof 표현식으로 얻은 것과 동일해요. T가 배열 타입이면 요소 타입의 정렬 요구사항을 반환해요. T가 참조 타입이면 참조되는 타입의 정렬 요구사항을 반환해요.
alignof(T)가 유효한 표현식이 아니면 동작이 정의되지 않아요.
프로그램이 std::alignment_of 또는 std::alignment_of_v(C++17부터)에 대해 특수화를 추가하면 동작이 정의되지 않아요.
헬퍼 변수 템플릿
template < class T > constexpr std :: size_t alignment_of_v = alignment_of < T >:: value ; |
(C++17부터) |
|---|
std::integral_constant에서 상속됨
멤버 상수
value [static] |
alignof(T) (공용 정적 멤버 상수) |
|---|
멤버 함수
operator std::size_t |
객체를 std::size_t로 변환하고 value를 반환해요 (공용 멤버 함수) |
|---|---|
operator() (C++14) |
value를 반환해요 (공용 멤버 함수) |
멤버 타입
| 타입 | 정의 |
|---|---|
value_type |
std :: size_t |
type |
std :: integral_constant < std :: size_t , value > |
가능한 구현
template < class T > struct alignment_of : std :: integral_constant < std :: size_t , alignof ( T ) > {}; |
|---|
참고 사항
이 타입 특성은 alignof 키워드보다 먼저 나왔어요. alignof 키워드를 사용하면 더 간결하게 같은 값을 얻을 수 있어요.
예제
#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
}
가능한 출력:
1 2 4 8
같이 보기
alignof (C++11) |
타입의 정렬 요구사항을 조회해요 (연산자) [편집] |
|---|---|
alignas (C++11) |
변수의 저장 공간을 특정 양만큼 정렬하도록 지정해요 (지시자) [편집] |
aligned_storage (C++11부터) (C++23에서 deprecated) |
주어진 크기의 타입을 위한 초기화되지 않은 저장 공간으로 사용하기에 적합한 타입을 정의해요 (클래스 템플릿) [편집] |
aligned_union (C++11부터) (C++23에서 deprecated) |
주어진 모든 타입을 위한 초기화되지 않은 저장 공간으로 사용하기에 적합한 타입을 정의해요 (클래스 템플릿) [편집] |
max_align_t (C++11) |
다른 모든 스칼라 타입만큼 큰 정렬 요구사항을 가진 사소한(trivial) 타입 (typedef) [편집] |