static map as a type function

Paul Backus snarwin at gmail.com
Thu Sep 24 13:04:43 UTC 2020


On Thursday, 24 September 2020 at 12:39:57 UTC, Steven 
Schveighoffer wrote:
> BTW, I don't see how tail-recursion can be done still. Even 
> with your tail-recursive version, you still have to rebuild 
> each instance of the template, because you don't know if it's 
> going to generate different code via static if. Whereas runtime 
> tail recursion builds one version of the function, and just 
> jumps back into the same function with modified input.

You have to build N versions, but (in principle) you don't have 
to keep them all around in memory--only the last one is 
necessary. So you still save on resources compared to naive 
template recursion, although not as much as you would with type 
functions.

> It also helps that the "simple naive" version of the 
> typefunction code is the best version. You don't have to write 
> it in a special way to make the compiler perform well.

Definitely a valid point. Regardless of one's aesthetic 
preferences, recursive templates are not a "pit of success."


More information about the Digitalmars-d mailing list