Static argument optimization
Janderson
ask at me.com
Tue Oct 7 21:41:34 PDT 2008
Don wrote:
> Janderson wrote:
>> Vladimir Panteleev wrote:
>>> Hello,
>>>
>>> Often I encounter cases where I have a function taking some
>>> arguments, and I'd like for the compiler to generate separate code
>>> for the function when some of the arguments are known at compile
>>> time. For example, consider this function:
>>>
>>> int pow(int n, int power)
>>> {
>>> return power==0 ? 1 : n*pow(n, power-1);
>>> }
>>>
>>> I am looking for a way to make the function work at runtime, while
>>> pow(n, 3) to be inlined as n*n*n, and pow(2, 3) to be precalculated
>>> as 8. Is it possible to do this with some template trickery without
>>> having to write three versions of the function? I know macros should
>>> be able to do this in theory...
>>>
>>
>> Walter has talked about adding the keyword static in the past to
>> generate templates ie:
>>
>> int pow(static int n, static int power)
>> {
>>
>> }
>>
>> I'm not sure if all the params needed to be constant for it to
>> generate a template. I can't see why your proposal wouldn't work with
>> this.
>>
>> -Joel
>
> No, they don't all need to be constant. The classic example is a regexp,
> where the regexp itself is a literal, but the other parameters are all
> variables.
That's good to know. I was thinking that something like with regexpr
all parameters would be marked as static and it would pick-and-choose
which are actually static/constant based on the call.
Off-topic:
The game I'm working on was finally announced today
http://www.leagueoflegends.com/
I'm excited because I can now talk about it :)
More information about the Digitalmars-d
mailing list