Поделиться через


Предупреждение C26498

Функция "function" является constexpr, помечайте переменную "переменную" constexpr, если необходимо оценить время компиляции (con.5)

Это правило помогает обеспечить выполнение Con.5: используйте constexpr для значений, которые можно вычислить во время компиляции в основных руководствах по C++ Core.

Замечания

Предупреждение активируется путем назначения результата 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 и val2constexpr:

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;
}

См. также

C26497
C26814
Con.5: используется constexpr для значений, которые можно вычислить во время компиляции