Derleyici uyarısı (düzey 1) C5056
işleci 'operator-name': dizi türleri için kullanım dışı bırakıldı
Açıklamalar
Dizi türünün iki işleneni arasındaki eşitlik ve ilişkisel karşılaştırmalar C++20'de kullanım dışıdır. Daha fazla bilgi için bkz. C++ Standart teklif P1120R0.
Visual Studio 2019 sürüm 16.2 ve sonraki sürümlerinde, derleyici seçeneği etkinleştirildiğinde /std:c++latest
iki dizi arasındaki karşılaştırma işlemi (derece ve kapsam benzerliklerine rağmen) artık düzey 1 C5056 uyarısı üretir. Visual Studio 2019 sürüm 16.11 ve sonraki sürümlerinde altında da bir uyarı /std:c++20
oluşturur.
Örnek
Visual Studio 2019 sürüm 16.2 ve sonraki sürümlerinde, derleyici seçeneği etkinleştirildiğinde aşağıdaki kod C5056 uyarısını /std:c++latest
oluşturur. Visual Studio 2019 sürüm 16.11 ve sonraki sürümlerinde, altında /std:c++20
da bir uyarı oluşturur:
// 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
}
Uyarıyı önlemek için ilk öğelerin adreslerini karşılaştırabilirsiniz:
// 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; }
}
İki dizinin içeriğinin eşit olup olmadığını belirlemek için işlevini kullanın std::equal
:
std::equal(std::begin(a), std::end(a), std::begin(b), std::end(b));