Unreachable warning is annoying

Yuxuan Shui yshuiv7 at gmail.com
Tue Mar 13 16:50:02 UTC 2018


On Tuesday, 13 March 2018 at 14:40:21 UTC, Steven Schveighoffer 
wrote:
> On 3/13/18 10:25 AM, Yuxuan Shui wrote:
>> [...]
>
> This has been discussed before. There are a few ways around 
> this. One is to do what you did. Another is to append a 
> sentinel, or use id to terminate the loop:
>
> foreach(id, R; S) {
>     static if(is(T == R))
>         return id;
>     else static if(id + 1 == S.length)
>         return -1;
> }

Wait, I don't understand how this works.

Isn't this going to be expanded to something like:

return 0;
return 4;
// One return for every match
...
return -1;

Shouldn't this trigger unreachable warning too?

>
> IMO, the "unreachable statement" error is bogus because it's 
> reachable depending on the template parameters! In the coder's 
> eyes, what matters is whether the line of source is reachable 
> or not, not whether it's reachable in that instantiation.

Agreed.

>
> -Steve



More information about the Digitalmars-d mailing list