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.

Reply via email to