On Thu, Apr 20, 2017 at 11:05:00AM +0000, Nick Treleaven via Digitalmars-d-learn wrote: [...] > This is also a problem for overloading: > > alias foo = (char c) => 1; > alias foo = (int i) => 4; > > static assert(foo(7) == 4); // fails > > I would like to see some small changes to mitigate against things like > this, even if we can't agree to prevent the conversion overall. It > would be nice if we filed a bug as a rallying point for ideas on this > issue.
+1. Recently I was bitten by the char/int overload ambiguity problem, and it was not pretty. Well, actually, it was worse in my case because I had overloaded char against ubyte. Basically the only way I can disambiguate is to wrap one of them in a struct to force the compiler to treat them differently. Another pernicious thing I encountered recently, related to implicit conversions, is this: https://issues.dlang.org/show_bug.cgi?id=17336 It drew a very enunciated "WAT?!" from me. T -- Gone Chopin. Bach in a minuet.