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
.