<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Jun 18, 2013 at 6:57 AM, Rafael Espíndola <span dir="ltr"><<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">> Suppose overloading completely ignores whether a declaration is extern "C",<br>
> and suppose you have a hashtable which returns the extern "C" decl for a<br>
> given identifier.  After you conclude foo(int) overloads foo(), you look in<br>
> the hashtable and say "oops, there was already a declaration with that<br>
> name".  (I haven't really thought through whether this is a good idea.)<br>
<br>
</div>The case I don't understand is<br>
<br>
<br>
extern "C" {<br>
<div class="im">  static void foo() { }<br>
  void foo(int x) {}<br>
}<br>
<br>
</div>Overload in this proposal will decide that the second foo is an<br>
overload, we see that it is extern C, add it to the hash and now,<br>
where do we find the first foo? Note that it is *not* extern C<br>
according to the standard and our current implementation.<br></blockquote><div><br></div><div>Ah... I see what you mean.  The answer is we don't. :)<br><br></div><div>-Eli <br></div></div><br></div></div>