경고 C26498
'function' 함수는 constexpr이고 컴파일 시간 계산이 필요한 경우 변수 'variable' constexpr을 표시합니다(con.5).
이 규칙은 컴파일 시간에 계산할 수 있는 값에 constexpr을 사용하기에 C++ Core Guidelines에서 Con.5를 적용하는 데 도움이 됩니다.
설명
이 경고는 초기 대입 후에 값이 변경되지 않는 모든 비constexpr
변수에 constexpr
함수의 결과를 할당하여 트리거됩니다.
코드 분석 이름: USE_CONSTEXPR_FOR_FUNCTIONCALL
예시
이 샘플 코드는 C26498이 나타날 수 있는 위치를 보여줍니다.
constexpr int getMyValue()
{
return 1;
}
void foo()
{
constexpr int val0 = getMyValue(); // no C26498
const int val1 = getMyValue(); // C26498, C26814
int val2 = getMyValue(); // C26498, value is never modified
int val3 = getMyValue(); // no C26498, val3 is assigned to below.
val3 = val3 * val2;
}
문제를 해결하려면 val1
과 val2
constexpr
을 표시하세요.
constexpr int getMyValue()
{
return 1;
}
void foo()
{
constexpr int val0 = getMyValue(); // OK
constexpr int val1 = getMyValue(); // OK
constexpr int val2 = getMyValue(); // OK
int val3 = getMyValue(); // OK
val3 = val3 * val2;
}