Ошибка компилятора C2131Compiler Error C2131

выражение не вычисляется как константаexpression did not evaluate to a constant

Выражение, объявленное как const или, constexpr не вычисляется как константу во время компиляции.An expression declared as const or constexpr didn't evaluate to a constant at compile time. Компилятор должен иметь возможность определить значение выражения в точке, в которой оно используется.The compiler must be able to determine the value of the expression at the point it's used.

ПримерExample

В этом примере показано, как вызвать ошибку C2131 и как ее исправить.This example shows a way to cause error C2131, and how to fix it.

// c2131.cpp
// compile by using: cl /EHsc /W4 /c c2131.cpp

struct test
{
    static const int array_size; // To fix, init array_size here.
    int size_array[array_size];  // C2131
};

const int test::array_size = 42;
c2131.cpp
c2131.cpp(7): error C2131: expression did not evaluate to a constant
c2131.cpp(7): note: failure was caused by non-constant arguments or reference to a non-constant symbol
c2131.cpp(7): note: see usage of 'array_size'

См. также разделSee also

constconst
constexprconstexpr