------- Comment #2 from igodard at pacbell dot net  2009-12-14 04:51 -------
Well, I see several issues with the diagnostics. 

1) The call is not ambiguous, because if it were (only) ambiguous then removing
the base "baz" would disambiguate. Instead the case without "baz" gets you:
   s3:~/ootbc/memspec$ g++ foo.cc
   foo.cc: In function ‘int main()’:
   foo.cc:27: error: no matching function for call to ‘foo::newNode()’
That is, a call cannot be both ambiguous and have no matching function.

2) The reported list of overloads include those which have the wrong number of
arguments.

3) The diagnostic contains "freeList::newNode(U, V) [with U = U, V = V, T =
bar]" as the call citation, which makes it look like the local U matches a
(non-existent in this case) global U and local V matches a global V, the way
that local T matches global bar. Perhaps it could say something like
"freeList::newNode(U, V) [with U = ?, V = ?, T = bar]"


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42356

Reply via email to