is_sufficiently_aligned — std::is_sufficiently_aligned
is_sufficiently_aligned — std::is_sufficiently_aligned
std::is_sufficiently_aligned는 주어진 포인터가 지정된 정렬 요구를 만족하는지 컴파일 타임에 판별하는 함수예요. C++26에서 도입됐어요. <memory> 헤더에 제공돼요.
객체를 배치하려는 메모리 주소가 그 타입의 정렬 요구를 충족하는지 확인해, 안전하게 객체 수명을 시작할 수 있는지 판단할 때 사용해요.
출처: cppreference
본문
std::is_sufficiently_aligned는 정렬 충족 여부를 검사해요.
template<class T>
constexpr bool is_sufficiently_aligned(void* p) noexcept;
p가 가리키는 메모리 주소가 타입 T의 정렬 요구(alignof(T))를 만족하면 true를 반환해요. p가 nullptr이면 false를 반환해요(alignof(T)가 1인 경우는 예외).
이 함수는 std::start_lifetime_as 같은 수명 시작 함수를 쓰기 전에 "이 메모리가 정말로 이 타입을 담을 수 있는가"를 검증하는 데 유용해요. 정렬이 부족한 메모리에 객체를 바르면 정의되지 않은 동작이므로, 이 검사가 안전성을 높여줘요.
같이 보기
std::start_lifetime_asstd::align