Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
la fonction constexpr 'function' ne peut pas produire une expression constante
Remarques
La fonction de fonction n’a pas pu être évaluée comme constexpr au moment de la compilation. Pour être constexpr, une fonction ne peut appeler que d’autres constexpr fonctions.
Exemple
Visual Studio 2017 génère correctement une erreur lorsque l’opérande de gauche d’une opération d’évaluation conditionnelle n’est pas valide dans un constexpr contexte. Le code suivant se compile dans Visual Studio 2015, mais pas dans 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
}
Pour résoudre ce problème, déclarez la array::size() fonction en tant que ou constexpr supprimez le constexpr qualificateur de f.