order of static constructor execution
Max Samukha
spambox at d-coding.com
Sat Mar 13 01:09:53 PST 2010
On 13.03.2010 2:27, Michel Fortin wrote:
> On 2010-03-12 19:10:10 -0500, Max Samukha <spambox at d-coding.com> said:
>
>> If static constructors in templates ran during the initialization of
>> the module where they are defined, the problem with mixed-in code
>> could be solved like this:
>
> But templates can take function and types as argument. If the 'static
> this' of a template calls something through one of its argument, the
> module this function or type resides in needs to be initialized first.
>
> So you can't always call a template's static this at the same time as
> the module the template is defined in.
>
Yes that is the point and purpose.
The advantage is that the programmer is in control of when the static
constructors in templated code are run - if you want the constructor to
run in the context of the imported module use a regular template,
otherwise, mixin.
I'd definitely preferred it over the current semantics. Others may disagree.
More information about the Digitalmars-d
mailing list