Static argument optimization

Janderson ask at me.com
Mon Oct 6 18:32:07 PDT 2008


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



More information about the Digitalmars-d mailing list