http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49637
--- Comment #9 from Jason Merrill <jason at gcc dot gnu.org> 2011-07-05 19:48:14 UTC --- (In reply to comment #8) > OH. I think I see what you are saying here. I now think that you're saying > "the partial ordering will try to deduce the arguments regardless of whether > or > not you tell it not to deduce it." Not exactly. The deduction done in partial ordering is not the same as the deduction done for the call itself; partial ordering tries to find template arguments which will make one signature match the other. Here, deducing U = int makes the first signature match the second, but T is only used in non-deduced context, so we don't have a value for it. If typename were a deduced context, we could deduce T = T and win. It's not clear to me why partial ordering requires that we deduce values for all used parameters anyway. I'm not sure what the EDG front end is doing here, I guess I'll raise it with the committee.