Is there a way to make a function parameter accept only values that can be checked at compile time?

rempas rempas at
Wed Dec 29 19:35:36 UTC 2021

On Wednesday, 29 December 2021 at 17:20:59 UTC, max haughton 
> This is handled by the compiler backend. The simplest way it 
> can do this kind of optimization is by "inlining" the function.
> This is done by transplanting the function body into the place 
> it's used. At this point the compiler simply sees "= 30 + 30" 
> which it can trivially turn into "= 60" through something 
> called constant-folding.
> The compiler can create new function bodies (like the temp one 
> you introduce above) but this is a much more niche 
> optimization. They favour inlining much more aggressively.
> I'm tempted to do a YouTube video of a D program being compiled 
> all the way down the machine code, to show what the compiler 
> does for you.

I didn't knew that compilers work like that. I thought that it 
will treat the values normally like they were values that cannot 
get computed at compile time even if you pass them as literals. 
That's good to know

More information about the Digitalmars-d-learn mailing list