<div dir="ltr">First, I can guess that why Walter disagree *fixing* this problem.<div><br></div><div><a href="http://dlang.org/overview.html">http://dlang.org/overview.html</a></div><div>> Major Design Goals of D</div><div>
> 9. Where D code looks the same as C code, have it either behave the same or issue an error.<br></div><div><div><br></div><div style>Based on the design goal, we should not change the behavior toward foo(1) matching to long version.</div>
<div style>It will change the code behavior that looks like C.<br></div><div style><br></div><div style>But, we can raise an "ambiguous error" for the case.</div><div style>I think we need to add a "special rule" for more natural overload resolution in D.<br>
</div><div><div><br></div><div style>// The expected behavior we can do at the most</div><div><div>extern(C) int printf(const char*, ...);</div><div>void foo(bool) { printf("bool\n"); }</div><div>void foo(long) { printf("long\n"); }</div>
<div>void main()</div><div>{</div><div><span style="white-space:pre">    </span>foo(0);  // Error: function foo called with argument types: (int) matches both foo(bool) and foo(long)</div><div><span style="white-space:pre">    </span>foo(1);  // Error: function foo called with argument types: (int) matches both foo(bool) and foo(long)</div>
<div><span style="white-space:pre">    </span>foo(2);  // OK, matches to long</div></div></div></div><div>}</div><div class="gmail_extra"><br></div><div class="gmail_extra">Kenji Hara<br><br><div class="gmail_quote">2013/4/27 Walter Bright <span dir="ltr"><<a href="mailto:newshound2@digitalmars.com" target="_blank">newshound2@digitalmars.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class=""><div class="h5">On 4/26/2013 1:59 PM, Andrej Mitrovic wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
On 4/26/13, Andrej Mitrovic <<a href="mailto:andrej.mitrovich@gmail.com" target="_blank">andrej.mitrovich@gmail.com</a>> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
An even better example:<br>
</blockquote>
<br>
import std.stdio;<br>
<br>
void foo(bool x) { writeln("1"); }<br>
void foo(long x) { writeln("2"); }<br>
<br>
void main()<br>
{<br>
     foo(1);  // "1"<br>
     foo(false ? 2 : 1);  // "2"<br>
}<br>
<br>
Kill it with fire.<br>
</blockquote>
<br></div></div>
How about this one:<br>
<br>
import std.stdio;<br>
<br>
void foo(short x) { writeln("1"); }<div class="im"><br>
void foo(long x) { writeln("2"); }<br>
<br>
void main()<br>
{<br></div>
     foo(30000);  // "1"<br>
     foo(false ? 40000 : 30000);  // "2"<br>
}<br>
</blockquote></div><br></div></div>