Avertissement du compilateur (niveau 1) C5055
opérateur 'operator-name' : déconseillé entre les énumérations et les types à virgule flottante
Notes
C++20 a déprécié les conversions arithmétiques habituelles sur les opérandes, où un opérande est de type énumération et l’autre est de type à virgule flottante. Pour plus d’informations, consultez la proposition C++ Standard P1120R0.
Dans Visual Studio 2019 version 16.2 et ultérieure, une conversion implicite entre les types d’énumération et les types à virgule flottante génère un avertissement de niveau 1 lorsque l’option du /std:c++latest
compilateur est activée. Dans Visual Studio 2019 version 16.11 et ultérieure, il génère également un avertissement sous /std:c++20
.
Exemple
Dans Visual Studio 2019 version 16.2 et ultérieure, une opération binaire entre une énumération et un type à virgule flottante génère un avertissement de niveau 1 lorsque l’option du /std:c++latest
compilateur est activée. Dans Visual Studio 2019 version 16.11 et ultérieure, il génère également un avertissement sous /std:c++20
:
// C5055.cpp
// Compile using: cl /EHsc /W4 /std:c++latest C5055.cpp
enum E1 { a };
int main() {
double i = a * 1.1; // Warning C5055: operator '*': deprecated between enumerations and floating-point types
}
Pour éviter l’avertissement, utilisez static_cast
pour convertir le deuxième opérande :
// C5055_fixed.cpp
// Compile using: cl /EHsc /W4 /std:c++latest C5055_fixed.cpp
enum E1 { a };
int main() {
double i = static_cast<int>(a) * 1.1;
}
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour