컴파일러 경고(수준 1) C5056
연산자 'operator-name': 배열 형식에 사용되지 않음
설명
배열 형식의 두 피연산자 간의 같음 및 관계형 비교는 C++20에서 더 이상 사용되지 않습니다. 자세한 내용은 C++ 표준 제안 P1120R0 참조하세요.
Visual Studio 2019 버전 16.2 이상에서 두 배열 간의 비교 작업(순위 및 익스텐트 유사성에도 불구하고)은 이제 컴파일러 옵션을 사용할 때 /std:c++latest
수준 1 C5056 경고를 생성합니다. Visual Studio 2019 버전 16.11 이상에서는 아래에 /std:c++20
경고도 생성됩니다.
예시
Visual Studio 2019 버전 16.2 이상에서 다음 코드는 컴파일러 옵션을 사용할 때 경고 C5056을 /std:c++latest
생성합니다. Visual Studio 2019 버전 16.11 이상에서는 다음에서 /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
}
이 경고를 방지하기 위해 첫 번째 요소의 주소를 비교할 수 있습니다.
// 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; }
}
두 배열의 콘텐츠가 동일한지 여부를 확인하려면 std::equal
함수를 사용합니다.
std::equal(std::begin(a), std::end(a), std::begin(b), std::end(b));