Allways we have some ways to do somethings. The question is: which is better, easier and understandable. I think my proposal is better.
And these could certainly use some library sugar. How about this:template isJustInputRange(R) {enum bool isJustInputRange = isInputRange!R && !isForwardRange!R;}
If we add for example isBufferedInputRange, we have to change isJustInputRange too. It's not a general solution.
