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) [편집]

더 알아보기 (Learn more)

cppreference