http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54588
--- Comment #3 from Manuel López-Ibáñez <manu at gcc dot gnu.org> --- (In reply to Paolo Carlini from comment #2) > This is weird ;) Isn't suggesting *exactly* what we don't want to do > anymore? (in particular considering the availability of the caret) > > Manuel? I guess what information is most useful depends on the exact case. In my experience, however, knowing the types you are trying to convert from and to is usually the key. Moreover, now that we have the caret, printing 'a' and 'b' in the message doesn't sound very useful. Moreover, either 'a' or 'b' may be arbitrarily complex expressions and we know how hard is to pretty-print expressions. G++ could certainly do better about printing types. It sometimes still spells out typedefs, when they don't make a difference. It could also be smarter when summarizing types, so for example here: template <class X> A {}; A<VeryComplicatedType> a; int b = a; there is no need to say 'A<class X> [with X = VeryComplicatedType]' (I think this is what we actually say now, no?) cannot convert to 'int', but we could say simply 'A<class X>' cannot convert to 'int' because it really doesn't matter what X is. See also (G) here: http://gcc.gnu.org/wiki/Better_Diagnostics. And the new template diffing from Clang would be perhaps nice to have: http://clang.llvm.org/diagnostics.html But this PR does not offer any concrete testcases. I think it is better to open PRs about specially bad outputs, and try to be smarter for those if possible. For example, we could do better with some particular recursive template diagnostics: PR43113.