When providing a delegate to the std.range.put() function, compilation fails. import std.range; void main() { string[] nameList1 = ["Anders", "David", "James", "Jeff", "Joe"]; void mySink(in char[] a) { } auto r = &mySink; static assert(isOutputRange!(typeof(r), string)); // Passes put(r, nameList1); // Fails } std/range.d(611): Error: static assert "Cannot put a string[] into a void delegate(const(char[]) a)" ------ This appears to be an issue of line 597 else static if ((usingPut || usingFront) && isInputRange!E && is(typeof(put(r, e.front)))) { for (; !e.empty; e.popFront()) put(r, e.front); } Where it should be checking (!usingPut && !usingFront) as they refer to usingPut: Use put method from struct or class. usingFront: Output range is an InputRange and may accept assignment to front.
*** Issue 10571 has been marked as a duplicate of this issue. ***
Turned into a pull request: https://github.com/D-Programming-Language/phobos/pull/1437
Fixed by https://github.com/D-Programming-Language/phobos/commit/21e6cb98b52cea03f0d3bb596d5201e00afd1b89