struct members not default initialized?

Ali Cehreli acehreli at yahoo.com
Mon Dec 7 13:02:36 PST 2009


(I must be missing something here; this is such a fundamental operation and I can't find a bug report on it.)

I've been under the impression that struct members would always be initialized. Having seen D an init-happy language compared to C and C++, that's what I would have expected. :)

Shouldn't the members of s be int.init and double.init below?

struct S
{
    int i;
    double d;
}

void main()
{
    S s;
}

They are not; at least for dmd versions from 2.034 to 2.037.

Also, leaving out some of the initializers do not init the corresponding members either:

    S s = { 42 };

There, s.d is not double.init.

And static initializers don't help either:

struct S
{
    int i     = 1;
    double d  = 2.3;
}

Again, s.d is not initialized:

    S s = { 42 };

Is the above expected? (Not by me... :) )

Ali


More information about the Digitalmars-d-learn mailing list