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