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