1 // RUN: %clang_cc1 -std=c++17 -fsyntax-only -verify %s -verify=expected,not-cxx20
2 // RUN: %clang_cc1 -std=c++20 -fsyntax-only -Wno-deprecated-array-compare -verify %s -verify=expected,not-cxx20
3 // RUN: %clang_cc1 -std=c++20 -fsyntax-only -Wdeprecated -verify %s -verify=expected,cxx20
4 // RUN: %clang_cc1 -std=c++26 -fsyntax-only -Wdeprecated -verify %s -verify=expected,cxx26
11 bool 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}}
20 void 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}}