constexpr
C++ 11에 도입된 constexpr 키워드는 객체나 함수 앞에 붙여서 컴파일 타임에 객체 값이나 함수 반환 값을 알 수 있다는 의미를 전달한다. 컴파일러가 컴파일 타임에 값을 결정할 수 있는 식을 상수식(Constant expression)이라고 한다.
constexpr / const
const로 정의된 상수는 컴파일 타임에 값을 몰라도 된다. 하지만 constexpr로 정의된 상수는 컴파일 타임에 값을 알아야 한다.
1
2
3
4
5
6
7
8
9
10
{
int a;
const int b = a;
constexpr int c = a; // error: constexpr variable 'c' must be initialized by a constant expression
}
{
const int a = 1;
constexpr int b = a;
}
Reference
씹어먹는 C++ - <16 - 2. constexpr 와 함께라면 컴파일 타임 상수는 문제없어>