C++ constexpr
2022. 3. 2. 22:51ㆍC++
컴파일 시 값 평가를 강제하기 위하여 탬플릿 메타프로그래밍 남용
-> 보통 컴파일러가 자발적으로 평가해주지만 어떤 코드로 인하여 컴파일러가 해주지 않는 경우가 있다.
=> constexpr는 이를 해달라는 프로그래머의 의도를 보여주는 방식이다.(비슷한 예시로 inline이 있다)
컴파일 도중 "반드시" 값이 결정되게 하려면 constexpr변수를 쓸 것
문자열 해쉬를 도중에 만들 수 있다면?
-> 문자열 비교에 드는 런타임 비용은 언제나 O(1)이 된다.
-> constexpr을 써서 컴파일 타임에 문자열 해쉬를 만들 수 있게 됐다!
참고로 const와 constexpr은 다르다.
변수의 경우
const => 변경을 불허
constexpr => 컴파일 시 평가를 해달라
하지만 둘 다 const다
즉 constexpr도 변경을 불허한다.
함수의 경우
const => 멤버 함수에만 사용 가능, 멤버 변수 변경 불가
constexpr => 멤버, 비멤버 함수에 사용 가능, 멤버 변수를 변경 가능(C++ 14부터)
'C++' 카테고리의 다른 글
가변 인자 템플릿 (0) | 2022.03.04 |
---|---|
람다 식(Lambda Expression) (0) | 2022.03.03 |
이동 생성자 및 이동 대입 연산자 (0) | 2022.02.19 |
C++ 스마트 포인터 (0) | 2021.12.28 |
C++ STL (0) | 2021.12.27 |