Partilhar via


Erro do compilador C3615

A função constexpr 'function' não pode resultar em uma expressão constante

A função function não pôde ser avaliada como constexpr em tempo de compilação. Para ser constexpr, uma função só pode chamar outras funções constexpr.

Exemplo

O Visual Studio 2017 gera corretamente um erro quando o operando esquerdo de uma operação de avaliação condicional não é válido em um contexto constexpr. 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 o erro, declare a função array::size() como constexpr ou remova o qualificador constexpr de f.