[ub] Type punning to avoid copying

Gabriel Dos Reis gdr at cs.tamu.edu
Thu Jul 25 23:11:42 CEST 2013


Lawrence Crowl <Lawrence at Crowl.org> writes:

| On 7/25/13, Howard Hinnant <howard.hinnant at gmail.com> wrote:
| > It was this SO question that started this thread:
| >
| > http://stackoverflow.com/q/17789928/576911
| >
| > I'm curious:  The accepted answer uses memcpy and the claim is that this is
| > a correct answer to the question.  That is it does not exhibit undefined
| > behavior.  My current understanding is that I agree with this answer.  But I
| > wanted to check here.  Do people here agree that:
| >
| > http://stackoverflow.com/a/17790026/576911
| >
| > does not break the aliasing rules, or otherwise invoke undefined behavior?
| 
| I believe so.

I can't find the rule (in the standards) that the memcpy() into i
constitutes an initialization.  One also needs something for the
memcpy() back into x, saying that does not yield a trap representation,
which would otherwise lead to undefined behaviour in the update:

  x = x*(1.5f - xhalf*x*x);

-- Gaby


More information about the ub mailing list