728x90
constinit은 CompileTime에 상수로 사용하지만, 일반적인 const와는 다르게 변수처럼 사용이 가능하다
특징
1. CompileTime에 상수로 지정된다.
2. constness는 없다. (즉, 값을 변경할 수 있다)
3. global, static, thread_local 변수에서 사용해야된다. (즉, 일반 변수에는 사용할 수 없다)
위의 특징 중에 "값을 변경할 수 있다." 이 부분이 굉장히 특이하다.
아래의 코드와 같이 globalA의 값이 상수임에도 변경해서 사용할 수 있다.
constinit int globalA = 10;
constexpr int globalB = 20;
int main()
{
globalA = 11; // 성공
globalB = 21; // 이건 에러
return 0;
}
하지만, 이걸 사용할 일이 있을지는 의문이든다. const를 사용한다는건 기본적으로 상수로 보장시키기 위한 것 아닌가...?
728x90
'Basic Programming > C++ 20' 카테고리의 다른 글
C++20 - NonType Template Parameter (0) | 2023.12.28 |
---|---|
C++20 - Conditionally Explicit Constructor (조건부 Explicit 생성자) (1) | 2023.12.27 |
C++20 - consteval (1) | 2023.12.27 |
C++20 - 지정된 초기화 (Designated Initialization) (1) | 2023.12.17 |
C++20 - 삼항 비교 연산자(Three-Way Comparison) (0) | 2023.12.17 |