constexpr const char*
cppreference에 따르면..
A constexpr specifier used in an object declaration or non-static member function (until C++14) implies const.
이므로
1 |
|
이는 다음과 동일하다
1 |
|
그럼 constexpr와 const 둘 모두를 쓰는 경우는 그저 중복일 뿐이지, 의미는 없다.
그러나 몇몇 예제를 보면 가끔 constexpr const라는 표현이 존재한다. 왜 const를 더 썼을까?
cppreference/const_exp의 다음 소스를 보자.
1 |
|
이때 constexpr이 들어간 표현만 보면
1 |
|
이다.
사실 저 변수 정의에서 const 를 뺀
1 |
|
는 compile-time 상수라는 조건을 빼면
1 |
|
이라는 의미이지
1 |
|
와는 전혀 다르다.
즉, constexpr
지정자의 대상은 타입이 아니라 변수 자체이다. 그러나 타입에 대한 const를 부여하기 때문에, 헷갈리게 하는것이다.
마찬가지로,
1 |
|
결론
const
와constexpr
이 같이 지정되어도constexpr
하나와 같다.constexpr
지정자specifier의 대상은 type이 아니라 변수 자체이다.