compile-time function in a class?

Charlie charlie.fats at gmail.com
Tue Mar 20 09:22:57 PDT 2007


That works well for functions that mixin code, but what if you just want 
to return an integer ?

janderson wrote:
> 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