alignof
operator
(since C++11)
From cppreference.net
타입의 정렬 요구 사항을 조회합니다.
목차 |
구문
alignof(
type-id
)
|
|||||||||
std::size_t 타입의 값을 반환합니다.
설명
정렬 요구사항 을 바이트 단위로 반환합니다. 이는 type-id 로 지정된 타입의 모든 인스턴스에 필요한 값으로, 해당 타입은 완전한 객체 타입, 요소 타입이 완전한 배열 타입, 또는 이러한 타입들 중 하나에 대한 참조 타입 중 하나여야 합니다.
타입이 참조 타입인 경우, 연산자는 참조된 타입의 정렬을 반환합니다; 타입이 배열 타입인 경우, 요소 타입의 정렬 요구사항이 반환됩니다.
참고 사항
alignment
가 반환하는 값의 의미와 속성에 대해서는
alignof
를 참조하십시오.
키워드
예제
이 코드 실행
#include <iostream> struct Foo { int i; float f; char c; }; // 참고: 아래의 alignas(alignof(long double))는 // 원한다면 alignas(long double)로 단순화할 수 있습니다. struct alignas(alignof(long double)) Foo2 { // 여기에 정의를 넣으세요 }; struct Empty {}; struct alignas(64) Empty64 {}; #define SHOW(expr) std::cout << #expr << " = " << (expr) << '\n' int main() { SHOW(alignof(char)); SHOW(alignof(int*)); SHOW(alignof(Foo)); SHOW(alignof(Foo2)); SHOW(alignof(Empty)); SHOW(alignof(Empty64)); }
가능한 출력:
alignof(char) = 1 alignof(int*) = 8 alignof(Foo) = 4 alignof(Foo2) = 16 alignof(Empty) = 1 alignof(Empty64) = 64
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| CWG 1305 | C++11 |
type-id
가 알려지지 않은 경계를 가졌지만 완전한 요소 타입을 가진
배열에 대한 참조를 나타낼 수 없었음 |
허용됨 |
참고문헌
- C++23 표준 (ISO/IEC 14882:2024):
-
- 7.6.2.6 Alignof [expr.alignof]
- C++20 표준 (ISO/IEC 14882:2020):
-
- 7.6.2.5 Alignof [expr.alignof]
- C++17 표준 (ISO/IEC 14882:2017):
-
- 8.3.6 Alignof [expr.alignof]
- C++14 표준(ISO/IEC 14882:2014):
-
- 5.3.6 Alignof [expr.alignof]
- C++11 표준 (ISO/IEC 14882:2011):
-
- 5.3.6 Alignof [expr.alignof]
참고 항목
| Alignment requirement | 객체가 할당될 수 있는 주소를 제한함 |
alignas
(C++11)
|
변수의 저장 공간이 특정 크기로 정렬되어야 함을 지정함
(지정자) |
|
(C++11)
|
타입의 정렬 요구사항을 얻음
(클래스 템플릿) |
|
C documentation
for
_Alignof
,
alignof
operator
|
|