constexpr

2019. 10. 23. 00:40PL/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