Static argument optimization

dsimcha dsimcha at yahoo.com
Mon Oct 6 17:00:38 PDT 2008


== Quote from Vladimir Panteleev (thecybershadow at gmail.com)'s article
> 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...

Am I missing something, or is the much bigger problem here that you're using
non-tail recursion when iteration would be much more efficient (and less likely to
overflow the stack)?



More information about the Digitalmars-d mailing list