Aracılığıyla paylaş


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++20oluş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++20da 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));