How to get to a class initializer through introspection?

Andrei Alexandrescu SeeWebsiteForEmail at
Mon Aug 3 00:37:48 UTC 2020

On 8/2/20 7:59 PM, Adam D. Ruppe wrote:
> On Sunday, 2 August 2020 at 22:25:19 UTC, Andrei Alexandrescu wrote:
>> Any ideas on how to do that via introspection? The fields are 
>> accessible, but not their default values.
> It is ugly but possible right now to pull in the symbol via extern(C).
> See line 20 in my latest blog's example:
> ldc complains but it is a type mismatch not a fundamental barrier, I 
> just didn't figure out the right thing to silence it yet.
>> It seems like __traits(type, getInitializer) might be necessary.
> but yes this would be generally nicer anyway imo.

Holy Molly this works. FWIW here's what I plan to use: No need for __gshared because immutable 
stuff is already shared.

The only bummer is it can't be read during compilation, but I assume 
there'd be a chicken and egg problem if it were.

Thanks, Adam! Walter and I had absolutely no idea this can be done but 
we thought to post here on the off chance. Thanks again!

More information about the Digitalmars-d mailing list