Fake global associative array literals

bearophile bearophileHUGS at lycos.com
Sat Oct 29 02:20:35 PDT 2011


Nick Sabalausky:

> You generally need to be very careful about adding module/static ctors, 
> because they can easily lead to the dreaded circular ctor runtime error. So 
> as nice as it would be to use AA initializers at the module-level, this 
> carries a hidden danger which could be a royal PITA to debug (especially for 
> D newbies), so I don't think it's a good thing to do.

Second try. What about the lowering of:

int[int] aa = [1:2, 3:4];
void main() {}


To (now the static this generated for this initialization is enforced to be pure):

int[int] aa;
pure static this() {
    aa = [1:2, 3:4];
}
void main() {}


Is this enough to avoid the problems you talk about?

Bye,
bearophile


More information about the Digitalmars-d-learn mailing list