This code (or code similar to it) use to work within the last 4 releases. I don't know whether it is a bug in Phobos or DMD. import std.algorithm; import std.array; void main() { auto a = ["hello", "there", "you", "allow", "you", "me"]; auto b = array(uniq(a)); } test.d(7): Error: template std.array.array(Range) if (isForwardRange!(Range)) does not match any function template declaration test.d(7): Error: template std.array.array(Range) if (isForwardRange!(Range)) cannot deduce template function from argument types !()(Uniq!(pred,string[]))
This is a phobos bug caused by the addition of save() to the definition of a forward range. Uniq is one of around 22 ranges in phobos that appear to be forward ranges but have not been updated to meet this requirement. (bug4363) *** This issue has been marked as a duplicate of issue 4363 ***