Uyarı C26498
Derleme zamanı değerlendirmesi isteniyorsa 'function' constexpr, mark variable 'variable' constexpr işlevidir (con.5)
Bu kural, C++ Çekirdek Yönergelerinden Con.5'i zorunlu kılmaya yardımcı olur: derleme zamanında hesaplanabilir değerler için constexpr kullanın.
Açıklamalar
Uyarı, ilk atamadan sonra değeri değişmeyen değişken olmayanconstexpr
herhangi bir değişkene bir constexpr
işlevin sonucu atanarak tetiklenir.
Kod analizi adı: USE_CONSTEXPR_FOR_FUNCTIONCALL
Örnek
Bu örnek kod, C26498'in nerede görünebileceğini gösterir:
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;
}
Sorunları düzeltmek için ve işaretlerini kullanın 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;
}