https://issues.dlang.org/show_bug.cgi?id=15614
Issue ID: 15614 Summary: more helpful error messages when bang omiitted Product: D Version: D2 Hardware: x86_64 OS: Linux Status: NEW Severity: enhancement Priority: P1 Component: phobos Assignee: nob...@puremagic.com Reporter: lae...@laeeth.com import std.stdio; import std.string; import std.process; import std.algorithm; import std.array:array; import std.typecons:Tuple; import std.file:exists; enum whitelists=[ "/etc/mail/spamassassin/sent_whitelist.txt", "/etc/mail/spamassassin/vcard_whitelist.txt" ]; enum postgreyWhitelistPath="/etc/postfix/postgrey_whitelist_clients.local"; int main(string[] args) { bool all=false; string result; foreach(file;whitelists) { result~=(cast(string)std.file.read(file)) .splitLines .map(a=>a.extractDomain) .array .sort .uniq .filter(a=>(a.length>0)) .join("\n"); } std.file.write(postgreyWhitelistPath,result); return 0; } string extractDomain(string entry) { return entry; } simple.d(22): Error: template std.algorithm.iteration.map cannot deduce function from argument types !()(string[], void), candidates are: /usr/include/dlang/dmd/std/algorithm/iteration.d(431): std.algorithm.iteration.map(fun...) if (fun.length >= 1) Perhaps we could check if it would compile if a ! were added to the parameters and if so say "did you mean ...?" Yes, one quickly gets used to it, but it's one more needless friction for people learning the language. --