Compartir a través de


Error del compilador C3615

la función constexpr "function" no puede dar como resultado una expresión constante

La función function no se pudo evaluar como constexpr en tiempo de compilación. Para ser constexpr, una función solo puede llamar a otras funciones constexpr.

Ejemplo

Visual Studio 2017 genera correctamente un error si el operando izquierdo de una operación de evaluación condicional no es válido en un contexto constexpr. El código siguiente se compila en Visual Studio 2015, pero no en Visual Studio 2017.

// C3615.cpp
// Compile with: /c

template<int N>
struct myarray
{
    int size() const { return N; }
};

constexpr bool f(const myarray<1> &arr)
{
    return arr.size() == 10 || arr.size() == 11; // C3615 starting in Visual Studio 2017
}

Para corregir este error, declare la función array::size() como constexpr o quite el calificador constexpr de f.