1 matches bool, 2 matches long
Simen Kjaeraas
simen.kjaras at gmail.com
Thu Apr 25 15:48:33 PDT 2013
On 2013-04-25, 23:05, Ali Çehreli wrote:
> This question has first appeared on D.learn:
>
> http://forum.dlang.org/post/vlosugoeuobjrdfaeegk@forum.dlang.org
>
> A simple program:
>
> import std.stdio;
>
> void foo(bool b)
> {
> writeln("bool");
> }
>
> void foo(long l)
> {
> writeln("long");
> }
>
> void main()
> {
> foo(1);
> foo(2);
> }
>
> The program calls two separate foo() overloads for 1 and 2:
>
> bool
> long
>
> According to the language spec, both overloads match the int argument by
> "implicit conversion" as described under "Function Overloading" here:
>
> http://dlang.org/function.html
>
> Then, the overload must be resolved by partial ordering: "If two or more
> functions have the same match level, then partial ordering is used to
> try to find the best match. Partial ordering finds the most specialized
> function."
>
> Is bool more specialized than long or is this a bug? Intuitively, both
> should match the 'long' overload. It feels like there should at least be
> ambiguity.
For what it's worth, this is ambiguous in C++.
--
Simen
More information about the Digitalmars-d
mailing list