1 // RUN: %clang_cc1 -std=c++2a -verify %s 2 3 struct A { 4 int a, b[3], c; 5 bool operator==(const A&) const = default; 6 }; 7 8 static_assert(A{1, 2, 3, 4, 5} == A{1, 2, 3, 4, 5}); 9 static_assert(A{1, 2, 3, 4, 5} == A{0, 2, 3, 4, 5}); // expected-error {{failed}} 10 static_assert(A{1, 2, 3, 4, 5} == A{1, 0, 3, 4, 5}); // expected-error {{failed}} 11 static_assert(A{1, 2, 3, 4, 5} == A{1, 2, 0, 4, 5}); // expected-error {{failed}} 12 static_assert(A{1, 2, 3, 4, 5} == A{1, 2, 3, 0, 5}); // expected-error {{failed}} 13 static_assert(A{1, 2, 3, 4, 5} == A{1, 2, 3, 4, 0}); // expected-error {{failed}} 14 15 struct B { 16 int a, b[3], c; 17 friend bool operator==(B, B) = default; 18 }; 19 20 static_assert(B{1, 2, 3, 4, 5} == B{1, 2, 3, 4, 5}); 21 static_assert(B{1, 2, 3, 4, 5} == B{0, 2, 3, 4, 5}); // expected-error {{failed}} 22 static_assert(B{1, 2, 3, 4, 5} == B{1, 0, 3, 4, 5}); // expected-error {{failed}} 23 static_assert(B{1, 2, 3, 4, 5} == B{1, 2, 0, 4, 5}); // expected-error {{failed}} 24 static_assert(B{1, 2, 3, 4, 5} == B{1, 2, 3, 0, 5}); // expected-error {{failed}} 25 static_assert(B{1, 2, 3, 4, 5} == B{1, 2, 3, 4, 0}); // expected-error {{failed}} 26