constexpr
2019. 10. 23. 00:40ㆍPL/C++
const와 똑같이 상수 초기화 역할을 하나, 컴파일 타임에 평가될 수 있는 차이가 있다. 따라서 변수를 할당받아 초기화될 수 없다
#include <iostream>
int main(void) {
int i = 3;
const int a = i + 3; // 컴파일 성공
constexpr int b = i + 3; // 컴파일 에러
return 0;
}
예를 들어 배열 크기로 변수를 넣을 때 컴파일 상수는 되지만, 런타임 상수는 되지 않는다
#include <iostream>
int main(void)
{
int temp = 5;
int size1 = 10;
const int size2 = temp + 5;
const int size3 = 30;
constexpr int size4 = 40;
int arr1[temp]; // 컴파일 에러
int arr2[size1]; // 컴파일 에러
int arr3[size2]; // 컴파일 에러
int arr4[size3];
int arr5[size4];
return 0;
}
'PL > C++' 카테고리의 다른 글
디버깅으로 쓰이는 assert (0) | 2019.10.30 |
---|---|
char *과 const char * (0) | 2019.10.25 |
__cplusplus 매크로 의미 (0) | 2019.10.19 |
virtual 키워드를 사용해야 하는 이유 (0) | 2019.10.17 |
temp 변수 없이 swap 하기 (0) | 2019.10.16 |