http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53822
--- Comment #4 from Marc Glisse <glisse at gcc dot gnu.org> --- Created attachment 31564 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=31564&action=edit patch (mostly untested) This changes the message to: error: call of overloaded 'f(NT&)' {aka 'f(unsigned int&)'} is ambiguous As far as I can tell, "%#A" is unused, so it seems ok to hijack it. It isn't very nice because without typedefs it will repeat the same thing twice, but printing [with NT=unsigned int] seems more complicated to me. Then maybe the example is not that well chosen, because in the more interesting cases NT depends on template parameters, and that may make [with ...] easier to implement (or not).