Предупреждение C26498
Функция "function" является constexpr, помечайте переменную "переменную" constexpr, если необходимо оценить время компиляции (con.5)
Это правило помогает применить Con.5 из основных рекомендаций C++: используйте constexpr для значений, которые можно вычислить во время компиляции.
Предупреждение активируется путем назначения результата 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;
}