Order of static this() execution?
drathier
forum.dlang.org at fi.fo
Sun Feb 23 14:51:25 UTC 2020
On Sunday, 23 February 2020 at 14:36:56 UTC, Johan Engelen wrote:
> It's not clear from the language specification, but in this
> case with templates, I am not surprised that the order of
> execution is not the same as in the source file. Probably it
> does fit with the order in the source file if you take into
> account where the template is instantiated in that file (but
> you shouldn't depend on that).
> I strongly recommend not to depend on the order of multiple
> static this execution, by either rewriting things or by
> including some logic to make sure things are called in the
> right order (checking that something has already run, and
> running it if not, or cancel running it if it already ran)
>
> -Johan
This is generated code, so all defs are already topo-sorted. The
template is instantiated before it's used, and in the .d.cg file
it's also seemingly in the expected order. I'd be happy to put
all initialisation code into a single static this(), but I'm not
sure how to do that when templates get involved. Since it's
generated code, the set of things that are easy/hard to do kinda
swap around.
More information about the Digitalmars-d-learn
mailing list