Type inference and overloaded functions
Namespace
rswhite4 at googlemail.com
Tue Dec 10 01:10:22 PST 2013
On Tuesday, 10 December 2013 at 08:26:34 UTC, Jonathan M Davis
wrote:
> On Tuesday, December 10, 2013 09:00:22 Namespace wrote:
>> I use this implict converting to static arrays very often and
>> if
>> we deprecate it, we really need something to declare static
>> array
>> literals.
>
> Implicit conversion isn't the problem. It's the fact that there
> are two
> possible matches, and it picks one over the other rather than
> requiring the
> programmer to indicate which one is correct (e.g. via casting).
> That's just
> going to lead to bugs. If there is no conflict, then the
> implicit conversion is
> fine. It's just that when there is a conflict that it's a
> problem.
Ok.
> We have similar problems with stuff like
>
> void foo(bool b) {...}
> void foo(long l) {...}
>
> foo(1); //calls the bool overload
>
> There was a huge thread on this a while back where almost no
> one other than
> Walter thought that this behavior was good, and it was clearly
> causing bugs
> (Walter argued that the solution was to just add an overload
> for int rather
> than fixing the conversion problem). IMHO, there should be no
> implicit
> conversion of literals when there's a conflict. It should
> result in an
> ambiguity error so that the programmer has the opportunity to
> indicate the
> correct overload.
>
> - Jonathan M Davis
Yeah I remember, but Kenji made a Pull Request to change this.
Regardless it would be very useful to have static array literals.
More information about the Digitalmars-d-learn
mailing list