On Wednesday, 23 October 2013 at 18:07:37 UTC, Ali Çehreli wrote:
If D's unions are like C's and C++'s, then it is not defined
what happens when accessing members of the union that are not
active.
Either the anonymous struct or 'd' above is active, so only
that member can be accessed.
Is it not valid to initialize a double with a bit pattern that
you read from somewhere (e.g. disk)? (reinterpret cast, I
guess?). Something like this(?):
void main()
{
long srcL = 0x7ff7a50200000000;
double* srcD = cast(double*) &srcL;
double dst = *srcD;
writef("src: %x\n", srcL);
writef("dst: %x\n", *cast(long*) cast(void*) &dst);
}
If this is valid, the question seems to be why the
quiet/signaling flag is changed.