https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70526

Alexander Monakov <amonakov at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |amonakov at gcc dot gnu.org

--- Comment #18 from Alexander Monakov <amonakov at gcc dot gnu.org> ---
Richard -- please correct if I'm wrong -- means here:

> You can't refer to that part of the storage by copying *this.

... that the implicitly instantiated copy constructor (as well as assignment
operator, for that matter) will copy this->typed as a char[]/uint64_t union,
while it actually contains a value of type Register. You need an explicit copy
constructor that would assign this->typed with the correct type via
'typed.addr() = ...' like the existing constructor does.

(If T was POD, you could have had it in the union in the first place, and this
issue wouldn't arise)

Reply via email to