Doug,<br><br>Here's a the patch building on my previous overloaded function resolution patch. In addition to handling template functions properly when doing the overload resolution (which turned out to be easier than anticipated), it also fixes tiny bug in my previous patch that lead to no error message being printed out if the call to BestViableFunction did not succeed. I have a couple of questions about the remaining cases you mentioned in the thread for my previous patch:<br>

<br>  1. For the case of member functions, were referring to when the typo correction is being done on a member function called from within another member function ("class X { void foo(); void b() { fio(); };", correcting fio to foo) or when one is called through "." or "->" ("void b() { X x; x.fio(); }" and correcting x.fio to x.foo)? The former case seems to work already, and the latter is not handled by DiagnoseEmptyLookup but by LookupMemberExprInRecord in SemaExprMember.cpp.<br>

<br>  2. What exactly was the situation you were referring to when you said "we could see using declarations (which we'd need to look through) or 
unresolved using declarations (which we'd probably just give up on)"? That given e.g.<br><br>   namespace NS { void foo(double); }<br>   void foo(int);<br>   using namespace NS;<br>   void bar() { Foo(0.5); }<br>
<br>both foo(int) and foo(double) from NS should be candidates for overload resolution when correcting Foo(0.5), and when "foo" is suggested as a correction the note points foo(double)?<br><br>Thanks,<br>Kaelyn<br>