2017. 3. 23. 07:39
목차
1. Auto
2. range based for
3. enum class
4. non-static data member initializers
5. initializer lists
6. default / delete definition
7. override / final
8. emplacement
9. constexpr
10. lambda
11. random
12. thread
2. constexpr
이번 글은 constexpr에 대해서 정리해보도록 하겠습니다.
constexpr은 변수, 함수, 클래스를 컴파일 타임에 정수로 사용할 수 있다.
[이 말은 상수로 취급할 수 있는 작업은 컴파일 타임에 처리하도록 한다는 말!]
#define 이나 템플릿을 대체하여 사용 할 수 있다.
음...?그래서 어떤식으로 쓴다는 거지? 하고 느끼실 텐데요.
아래와 같이 #define을 이용한 매크로에도 써먹어서 컴파일타임에 상수로 사용이 가능합니다.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
constexpr double pow( double x, size_t y) | |
{ | |
return y != 1 ? x * pow(x, y - 1) : x; | |
} | |
int main() | |
{ | |
double a = pow(2.0, 2); | |
double b = pow(3.0, 6); | |
} |
#define으로 처리하면 빌드를 해봐야지 알 수 있었던 에러를
미리 컴파일타임에 컴파일러가 띄워줄 수 있는 방식이니
우리는 프로젝트를 빌드하지 않고도 바로바로 에러가 날 수 있는 녀석들을 확인 할 수 있습니다.
'Programming > C++' 카테고리의 다른 글
[11편] Modern C++ 정리: random (2) | 2017.03.23 |
---|---|
[10편] Modern C++ 정리: lambda (3) | 2017.03.23 |
[8편] Modern C++정리: emplacement (0) | 2017.03.23 |
[7편] Modern C++정리: override / final (0) | 2017.03.23 |
[6편] Modern C++정리: dafault / delete definition (0) | 2017.03.22 |