On Monday, 11 October 2021 at 15:57:00 UTC, apz28 wrote:
The subject is why the call is not allowed (format is not mention in question). Below sample is a bit more clear
[...]
ref Writer outFail(Writer, Char)(return ref Writer sink) if (isOutputRange!(Writer, Char) && isSomeChar!Char) {return sink;}
[...]
foo.outFail(buffer); // NOT OK
The template parameter `Char` does not appear anywhere in the function's parameter list, so the compiler cannot deduce it from the function's arguments.
Here is a simpler example that demonstrates the same problem: ```d Dest convert(Source, Dest)(Source source) { return cast(Dest) source; } void main() { double d = 123.456; auto result = convert(d); // Source = double, Dest = ??? } ```