Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A função constexpr 'função' não pode resultar numa expressão constante
Observações
A função não pôde ser avaliada como constexpr em tempo de compilação. Para ser constexpr, uma função só pode chamar outras constexpr funções.
Example
O Visual Studio 2017 gera corretamente um erro quando o operando esquerdo de uma operação de avaliação condicional não é válido num constexpr contexto. O código a seguir é compilado no Visual Studio 2015, mas não no 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 corrigir esse problema, declare a array::size() função como constexpr ou remova o constexpr qualificador do f.