Technically, there is precedent for it in the sense that `I` is not a variable, but a manifest constant. The capital `I` is important to tell that apart.

I think using `ref r` is also wrong, since `_input` is a typetuple, `r` is simply an alias. I think the most correct form would be:
`foreach(I, r; _input)`