https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93480
--- Comment #4 from Will Wray <wjwray at gmail dot com> --- Thanks Jakub; I applied your patch to trunk and ran more test cases for nested arrays (including zero-size in various positions), union element type, base classes - all passed as expected. I tried to grok the patch to look for problems - saw none. In testing, a worse bug surfaced with defaulted operator== The current bug was that defaulted <=> was deleted in the presence of array members, so rel-ops fail to compile. However, defaulted == is defined (on trunk) for array members but appears to compare the pointer value of the decayed array so == or != comparisons compile and give the wrong result https://godbolt.org/z/Pbr9xr Your patch fixes this bug also.