implicit cast and overload priority
ShadoLight
ettienne.gilbert at gmail.com
Sun Feb 16 11:54:46 UTC 2025
On Sunday, 16 February 2025 at 05:39:07 UTC, Jonathan M Davis
wrote:
> _especially_ when VRP comes into play, because then you get
> nonsense like foo(1) calling the bool overload.
>
I have often seen this mentioned, but I only see this happen if
there *isn't* an integer overload i.e. this...
```d
//void foo(int x) { writeln("I"); } //Comment to remove 'int'
overload
void foo(long x) { writeln("L"); }
void foo(ulong x) { writeln("UL"); }
void foo(bool x) { writeln("B"); }
void main()
{
foo(17UL);
foo(1);
foo(true);
}
```
...will output:
UL
B
B
But if you uncomment the 'int' overload, you get...
UL
I
B
...which is what I would expect. Or am I misunderstanding your
point? With the 'int' overload commented, are you arguing it
should match the best overloaded type that can VRP from 'int',
such as 'long' above?
More information about the Digitalmars-d-learn
mailing list