https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114552
Roger Sayle <roger at nextmovesoftware dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |roger at nextmovesoftware dot com --- Comment #6 from Roger Sayle <roger at nextmovesoftware dot com> --- Many thanks Jakub, and my apologies for the breakage/inconvenience. It looks like sizeof(k) is 10 bytes, and sizeof(k.b) is 6 bytes, and somehow this code is getting the constructor for "k" and not for just "k.b". This is, of course, fine for memcpy as it can move the just the pieces it wants. I completely agree that the safe fix is to check that the sizes match; I don't think I ever considered that they might not be identical when I wrote this code, or assumed that partial would be non-zero for this case].