write a function template specialisation that tests if an argument is known at compile time

Paul Backus snarwin at gmail.com
Sun Aug 12 00:55:50 UTC 2018


On Sunday, 12 August 2018 at 00:15:37 UTC, Cecil Ward wrote:
> Paul, what would the calls look like?
>
> I am about to misunderstand things completely so here goes :-)
>
> It would be a bit kludgy having to switch from one calling 
> syntax to another, putting the mask argument in the template 
> parameters or in the normal position. Or have I misunderstood? 
> And if the caller did not use the right call syntax variant 
> then the optimisation would not happen. Thing is, as it is the 
> details are nicely hidden and the caller does not even need to 
> thing about the fact that an (eponymous) template is being used.

As far as I know, there's no way to *guarantee* the optimization 
and keep the normal function call syntax. Probably the best you 
can do is write the mask check as a regular if statement, put 
`pragma(inline, true)` in the function, and hope the optimizer is 
smart enough to get rid of the branch.


More information about the Digitalmars-d-learn mailing list