On Friday, February 17, 2012 22:27:06 H. S. Teoh wrote: > Hmm. But the problem is that I want to be able to handle something like > File.byLine(). Or perhaps what I really need is just to write a wrapper > around File.readln() that ensures immutability, then I can use > isImmutable() to enforce safety in the algorithm, and just pass the > wrapper when I need to use an underlying File.
If you need to handle arrays differently, then just use a static if to specialize the appropriate section of code for them. So, something like ElementType!R choose(R, E)(R range) if(isInputRange!R) { Unqual!(ElementType!R) e; foreach(e; range) { if(/* some criterion */) { static if(isDynamicArray!(ElementType!R) && is(Unqual!(ElementType!R) == ElementType!R)) { e = range.front.dup; } else e = range.front; } } return cast(ElementType!R)e; } - Jonathan M Davis