std:: assume_aligned
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
헤더 파일에 정의됨
<memory>
|
||
|
template
<
std::
size_t
N,
class
T
>
constexpr T * assume_aligned ( T * ptr ) ; |
(C++20부터) | |
구현체에게
ptr
가 가리키는 객체가 최소
N
에 정렬되어 있음을 알립니다. 구현체는 이 정보를 사용하여 더 효율적인 코드를 생성할 수 있지만, 이 가정은 객체가
assume_aligned
의 반환값을 통해 접근될 때만 적용될 수 있습니다.
N
은 2의 거듭제곱이어야 합니다.
ptr
이
T
타입의 객체를 가리키지 않거나(모든 수준의 cv-qualification은 무시), 객체의 정렬이 최소
N
이상이 아닌 경우 동작은 정의되지 않습니다.
목차 |
반환값
ptr .
예외
아무것도 던지지 않습니다.
참고 사항
프로그램이
assume_aligned
에 의해 활성화된 최적화의 이점을 얻도록 하려면,
해당 객체를 반환값을 통해 접근하는 것이 중요합니다:
void f(int* p) { int* p1 = std::assume_aligned<256>(p); // p1을 사용하고 p를 사용하지 않음으로써 정렬 가정의 이점을 보장합니다. // 그러나 p가 정렬되지 않은 경우 p1의 사용 여부와 관계없이 프로그램은 정의되지 않은 동작을 가집니다. }
프로그램은 정렬 가정이 실제로 유지되도록 보장해야 합니다.
assume_aligned
호출은 컴파일러가 이를 검증하거나 강제하도록 하지 않습니다.
| 기능 테스트 매크로 | 값 | 표준 | 기능 |
|---|---|---|---|
__cpp_lib_assume_aligned
|
201811L
|
(C++20) |
std::assume_aligned
|
예제
|
이 섹션은 불완전합니다
이유: 예제 없음 |
참고 항목
alignof
(C++11)
|
타입의 정렬 요구 사항을 조회함
(연산자) |
alignas
(C++11)
|
변수의 저장 공간이 특정 크기로 정렬되도록 지정함
(지시자) |
|
(since C++11)
(deprecated in C++23)
|
주어진 크기의 타입들을 위한 초기화되지 않은 저장 공간으로 사용하기 적합한 타입을 정의함
(클래스 템플릿) |
|
(C++11)
|
버퍼에서 포인터를 정렬함
(함수) |
[[
assume
(
expression
)]]
(C++23)
|
해당
표현식
이 특정 지점에서 항상
true
로 평가됨을 지정함
(속성 지정자) |