On Thursday, October 21, 2010 15:32:45 Adam D. Ruppe wrote: > I've seen the requirement tossed around a few times that functions should > work with arbitrary input ranges. > > What, exactly, does this mean? > > My first impression is: > > void myFunction(T)(T t) if(isInputRange!(T)) {} > > But I don't see how that actually works in practice. Suppose my function > parses some kind of text format, like D code or XML. It won't work with a > stream of integers.
Well, then it doesn't make sense for your function to take an arbitrary input range. What you need is an arbitrary input range of characters (which may or may not be strings since it could be an Array or an SList or some other type of container entirely). What you need to check for, therefore, is that T is an input range with the correct element type (which is essentially what Simen suggests doing). - Jonathan M Davis