다음을 통해 공유


aligned_union 클래스

공용 구조체 형식 및 필요한 크기를 저장할 수 있도록 적절하게 맞춰지고 충분히 큰 POD 형식을 제공합니다.

구문

template <std::size_t Len, class... Types>
struct aligned_union;

template <std::size_t Len, class... Types>
using aligned_union_t = typename aligned_union<Len, Types...>::type;

매개 변수

Len
공용 구조체에서 가장 큰 형식의 맞춤 값입니다.

유형
기본 공용 구조체의 고유 형식입니다.

설명

클래스 템플릿을 사용하여 초기화되지 않은 스토리지에 공용 구조체를 저장하는 데 필요한 맞춤 및 크기를 가져옵니다. 멤버 typedef type 는 형식에 나열된 모든 형식의 스토리지에 적합한 POD 형식의 이름을 지정합니다. 최소 크기는 Len입니다. 형식의 정적 멤버 alignment_value 는 형식 std::size_t 에 나열된 모든 형식에 필요한 가장 엄격한 맞춤을 포함합니다.

예시

다음 예제에서는 aligned_union을 사용하여 공용 구조체 배치를 위한 맞춤화된 스택 버퍼를 할당하는 방법을 보여줍니다.

// std__type_traits__aligned_union.cpp
#include <iostream>
#include <type_traits>

union U_type
{
    int i;
    float f;
    double d;
    U_type(float e) : f(e) {}
};

typedef std::aligned_union<16, int, float, double>::type aligned_U_type;

int main()
{
    // allocate memory for a U_type aligned on a 16-byte boundary
    aligned_U_type au;
    // do placement new in the aligned memory on the stack
    U_type* u = new (&au) U_type(1.0f);
    if (nullptr != u)
    {
        std::cout << "value of u->i is " << u->i << std::endl;
        // must clean up placement objects manually!
        u->~U_type();
    }
}
value of u->i is 1065353216

요구 사항

헤더:<type_traits>

네임스페이스: std

참고 항목

<type_traits>
alignment_of 클래스