https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79671
--- Comment #54 from rguenther at suse dot de <rguenther at suse dot de> --- On Mon, 27 Mar 2017, bernd.edlinger at hotmail dot de wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79671 > > --- Comment #53 from Bernd Edlinger <bernd.edlinger at hotmail dot de> --- > (In reply to rguent...@suse.de from comment #52) > > On Mon, 27 Mar 2017, bernd.edlinger at hotmail dot de wrote: > > > > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79671 > > > > > > --- Comment #51 from Bernd Edlinger <bernd.edlinger at hotmail dot de> --- > > > Doesn't 3.10/10 explicitly say that it is undefined to use a union to > > > to move an object representation that is not a member of the union? > > > > That was my reading... but 3.10/10 talks about "attempts to access > > the stored value of an object" and Jason says that this doesn't apply > > to d = *p but the result of the decomposition to memberwise copy > > plus union special handling (where it wouldn't apply at all) > > > > The boost code was: "this->functor = f.functor;" > thus directly accessing the union, so there was no decomposition > to memberwise copy, right? Right. But still the other clause says the storage representation is transfered and so you could read into that that no "access" happens and thus 3.10/10 doesn't apply.