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