Namespaces
Variants

std:: is_sufficiently_aligned

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
헤더에 정의됨 <memory>
template < std:: size_t N, class T >
bool is_sufficiently_aligned ( T * ptr ) ;
(C++26부터)

포인터 ptr 이 최소 N 값의 정렬을 가진 객체를 가리키는지 확인합니다.

ptr T 타입의 객체를 가리키지 않는 경우(모든 수준에서 cv-qualification을 무시할 때) 동작은 정의되지 않습니다.

목차

반환값

true 만약 ptr 가 최소 N 정렬을 가진 객체를 가리키는 경우; 그렇지 않으면 false .

예외

아무것도 던지지 않습니다.

참고 사항

std::is_sufficiently_aligned std::assume_aligned 의 전제 조건으로 사용될 수 있습니다.

기능 테스트 매크로 표준 기능
__cpp_lib_is_sufficiently_aligned 202411L (C++26) std::is_sufficiently_aligned

가능한 구현

template<std::size_t N, class T>
bool is_sufficiently_aligned(T* ptr)
{
    return std::bit_cast<std::uintptr_t>(ptr) % N == 0;
}

예제

참고 항목

alignof (C++11) 타입의 정렬 요구 사항을 조회
(연산자)
alignas (C++11) 변수의 저장 공간이 특정 크기로 정렬되도록 지정
(지정자)
(C++11부터) (C++23에서 사용 중단됨)
주어진 크기의 타입들을 위한 초기화되지 않은 저장 공간으로 사용하기 적합한 타입을 정의
(클래스 템플릿)
(C++11)
버퍼에서 포인터를 정렬
(함수)
mdspan 의 요소들에 정렬된 접근을 위한 타입
(클래스 템플릿)