Conpile-Time module constructor

Paul Backus snarwin at gmail.com
Sun Jun 19 15:55:14 UTC 2022


On Sunday, 19 June 2022 at 15:34:48 UTC, Ruby The Roobster wrote:
> On 6/19/2022 11:19 AM, Paul Backus wrote:
>> On Sunday, 19 June 2022 at 14:51:26 UTC, Ruby The Roobster 
>> wrote:
>>> Is it possible to make a module constructor run at 
>>> compile-time?  If so, how?
>> 
>> No, it's not.
>> 
>> What are you trying to accomplish that lead you to ask this 
>> question? There is probably a different way to do it without 
>> involving module constructors.
>
> What I was trying to accomplish was to change a compile time 
> array whenever a certain module was included.  The value of the 
> array needs to be known at compile time.

You can do this with a `static if` check:

     static if (__traits(compiles, { import mymodule; }))
     {
         // mymodule is included
         enum compileTimeArray = ...;
     }
     else
     {
         // mymodule is not included
         enum compileTimeArray = ...;
     }


More information about the Digitalmars-d-learn mailing list