Fixing spurious "statement is not reachable" in template code

tsbockman via Digitalmars-d digitalmars-d at puremagic.com
Tue Oct 27 22:02:50 PDT 2015


On Tuesday, 27 October 2015 at 21:33:04 UTC, deadalnix wrote:
> If this was a static if, then generating a error is reasonable, 
> but with a regular if, it isn't.

As Daniel Murphy pointed out earlier, a surefire way to *prevent* 
the warning is to use `static if`; code hidden by a `static if` 
will never trigger it. I believe this is correct, and by design.

(But not all control flow statements have static equivalents, so 
this solution can only be applied to some code. Even if we had 
`static switch`, `static foreach`, `static goto`, etc., I doubt 
that forcing the user to segregate all compile-time logic from 
the run-time logic in that way is desirable.)

Whether the logic is explicitly `static` (compile time) or not, 
the warning should be issued if and only if the flagged code is 
unreachable with all possible input combinations - including both 
compile-time and run-time.



More information about the Digitalmars-d mailing list