https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109150
--- Comment #6 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Arthur O'Dwyer from comment #4) > The if-condition will have trouble *for now* with `Leopard`-like types What trouble? I don't care if there's some confusing deleted assignment, I care that the assignment *first = tmp is equivalent to *first = val, where tmp is a const lvalue of the same type as val. *first = tmp and *first = val do the same thing for your Leopard type, and that assignment is trivial, which is all that matters.