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