Semantics of mixed CT and RT statements
timosesu at gmail.com
Mon Dec 24 01:08:57 UTC 2018
On Sunday, 23 December 2018 at 02:58:30 UTC, Neia Neutuladh wrote:
> An optimizer can very easily optimize this:
> // T is SomeType
> if (is(T == SomeType) || b) doStuff;
> to remove the if statement. So from that perspective, no need
> to worry about it.
Good point. I guess that eliminates the need for something like
"static if (T) || if (b)".
However, going along that line, why does D even have "static if"?
We could simply use "if" everywhere and let the compiler take
care of it. Perhaps it's more a question of expressiveness.
> The sticky bit is that a runtime check needs both paths to
> typecheck, so if you're mixing metaprogramming with runtime
> logic, some cases might be weird.
Do you have an example? I'm not quite sure I get what you mean.
> I've never needed to do that.
More information about the Digitalmars-d