https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104359
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Will Usher from comment #0) > However, b's "value" is 255, which should evaluate to "true". No. The only valid values of bool are true and false. If you set its bits to some other value representation which does not correspond to either the 'true' value or the 'false' value, you do not have an object of type bool, you have garbage. It's possible that a C++ implementation would use 0x11111111 for one of true or false, in which case your memcpy would be valid. But that's not the case for GCC.