compile-time function in a class?

janderson askme at me.com
Tue Mar 20 08:54:09 PDT 2007


janderson wrote:
> Charlie wrote:
>>  >> You don't need to mark compile-time functions as static.  
>> Functions are only evaluated at compile-time when they can't possibly 
>> be evaluated at run-time (such as in mixin 
>> declarations/statements/expressions or as initializers of static or 
>> global variables).  E.g.:
>>
>> I love compile time functions, but saying 'are only evaluated when 
>> they cant be at run-time' leaves allot to be desired in terms of ease 
>> of use.  How do i know for sure its evaluated at run time ?  I could 
>> use a pragma , but it seems like we have to follow a very thin line to 
>> get there, it would be extremely nice  if we had someway of explicitly 
>> saying 'call this at compile time'. @exampleFunc(); maybe ?  That way 
>> instead of guessing we're doing it at compile-time, we could be 
>> certain, and also let the programmer know whats going on , instead of 
>> him having to trace the same thin line.
>>
>> Charlie
>>
>>
>>
>> Tyler Knott wrote:
>>> You don't need to mark compile-time functions as static. 
>>
>>
>>>
>>> char[] example = exampleFunc(); //This is global, so exampleFunc is 
>>> executed at compile-time
>>>
>>> void func()
>>> {
>>>     char[] example = exampleFunc(); //Not global or static, so run-time
>>> }
> 
> One way to test if a function works at compile time would be to wrap it 
> in a mixin.

To be explicit, I mean the function call.

const int X = mixin(foo());



More information about the Digitalmars-d mailing list