On Tuesday, 3 October 2023 at 17:42:51 UTC, Jonathan M Davis wrote:
On Tuesday, October 3, 2023 8:35:31 AM MDT Joel via Digitalmars-d-learn wrote:
[...]

Yeah. static if will compile in the code in that branch based on whether the condition is true, whereas if without the static will branch at runtime, with both branches being compiled in. So, if you want to be changing what code is being compiled in, you need static if, not if.

if(isIntegral!T)

will compile just fine, but it'll just end up being either

if(true)

or

if(false)

and the code within that branch will be compiled in regardless (and potentially result in compiler errors if it doesn't work with the type that that the template is being instantiated with). So, you usually want to use static if with compile-time tests and not if.

- Jonathan M Davis

I think the if without static is still static, since it's part of the function name part, or so (outside of the curly bracket scope).

Reply via email to