memory_is_sufficiently_aligned

memory_is_sufficiently_aligned (std::is_sufficiently_aligned)

<memory> 헤더에 정의되어 있어요. 포인터 ptr이 정렬이 적어도 N 이상인 객체를 가리키는지 확인해요. C++26부터 도입됐어요.

출처: cppreference

본문

template< std::size_t N, class T >
bool is_sufficiently_aligned( T* ptr );

(C++26부터)

ptr이 정렬 값이 적어도 N인 객체를 가리키는지 확인해요.

ptrT 타입(각 수준의 cv-한정은 무시)의 객체를 가리키지 않으면 동작은 미정의예요.

반환값

ptr이 적어도 N만큼 정렬된 객체를 가리키면 true, 그렇지 않으면 false.

예외

아무 것도 던지지 않아요.

주의 (Notes)

std::is_sufficiently_alignedstd::assume_aligned의 전제 조건으로 쓸 수 있어요.

기능 테스트 매크로는 __cpp_lib_is_sufficiently_aligned로, 값은 202411L(C++26)이에요.

int* p = ...;
if (std::is_sufficiently_aligned<256>(p)) {
    int* pa = std::assume_aligned<256>(p);   // 정렬 보장 후 최적화 적용
    // pa 로 접근
}

더 알아보기 (Learn more)

cppreference