24 lines · cpp
1// RUN: %clang_cc1 -std=c++17 -fsyntax-only -verify %s -verify=expected,not-cxx202// RUN: %clang_cc1 -std=c++20 -fsyntax-only -Wno-deprecated-array-compare -verify %s -verify=expected,not-cxx203// RUN: %clang_cc1 -std=c++20 -fsyntax-only -Wdeprecated -verify %s -verify=expected,cxx204// RUN: %clang_cc1 -std=c++26 -fsyntax-only -Wdeprecated -verify %s -verify=expected,cxx265 6typedef struct {7 char str[16];8 int id[16];9} Object;10 11bool object_equal(const Object &obj1, const Object &obj2) {12 if (obj1.str != obj2.str) // not-cxx20-warning {{comparison between two arrays compare their addresses}} cxx20-warning {{comparison between two arrays is deprecated}}13 return false; // cxx26-error@-1 {{comparison between two arrays is ill-formed in C++26}}14 if (obj1.id != obj2.id) // not-cxx20-warning {{comparison between two arrays compare their addresses}} cxx20-warning {{comparison between two arrays is deprecated}}15 return false; // cxx26-error@-1 {{comparison between two arrays is ill-formed in C++26}}16 return true;17}18 19 20void foo(int (&array1)[2], int (&array2)[2]) {21 if (array1 == array2) { } // not-cxx20-warning {{comparison between two arrays compare their addresses}} cxx20-warning {{comparison between two arrays is deprecated}}22 // cxx26-error@-1 {{comparison between two arrays is ill-formed in C++26}}23}24