Static argument optimization
Don
nospam at nospam.com.au
Tue Oct 7 02:41:09 PDT 2008
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.
More information about the Digitalmars-d
mailing list