I've never said anything about inheriting from InputRange, just that I'd take an InputRange as a parameter. Anyway I changed my signature to
Result parse(T)(T lines) if(isInputRange!T && is(ElementType!T == string)); Still not sure if that's the best way to do it, but it definitely is the one that proved to be the least hassle to use for my simple test cases.
