Avertissement du compilateur (niveau 1) C5056
opérateur 'operator-name' : déconseillé pour les types de tableaux
Notes
Les comparaisons d’égalité et relationnelles entre deux opérandes de type de tableau sont déconseillées en C++20. Pour plus d’informations, consultez la proposition C++ Standard P1120R0.
Dans Visual Studio 2019 version 16.2 et ultérieure, une opération de comparaison entre deux tableaux (malgré les similitudes de classement et d’étendue) génère désormais un avertissement de niveau 1 C5056 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, le code suivant génère un avertissement C5056 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
:
// C5056.cpp
// Compile using: cl /EHsc /W4 /std:c++latest C5056.cpp
int main() {
int a[] = { 1, 2, 3 };
int b[] = { 1, 2, 3 };
if (a == b) { return 1; } // warning C5056: operator '==': deprecated for array types
}
Pour éviter l’avertissement, vous pouvez comparer les adresses des premiers éléments :
// C5056_fixed.cpp
// Compile using: cl /EHsc /W4 /std:c++latest C5056_fixed.cpp
int main() {
int a[] = { 1, 2, 3 };
int b[] = { 1, 2, 3 };
if (&a[0] == &b[0]) { return 1; }
}
Pour déterminer si le contenu de deux tableaux est identique, utilisez la fonction std::equal
:
std::equal(std::begin(a), std::end(a), std::begin(b), std::end(b));
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