https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101811
--- Comment #4 from Tobias Schlüter <tobi at gcc dot gnu.org> --- Hi Jonathan, I know that we disagree about clang's error message and that's why I tried to explain what makes clang's a better error message for me. My "parsing" of clang's error message was not a comparison to gcc's, but an analysis how it conveys all the information I need to find and fix the issue. Glad to see that we more or less agree on the issues with gcc's message, though. That's the important part anyway. I also like your suggestion. If we are at a stage where grammatical niceties matter, I would make the symbol in the first message the subject, so <source>:6:6: error: 'template<int> void X::f()' matches no declaration 6 | void X::f() | ^ <source>:2:10: note: non-matching declaration 'void X::f()' is not a template 2 | void f(); | ^ Thanks for correcting my misunderstanding about the status of the C++ FE, and I'm glad to hear that. I really wonder where I'd picked up that piece of misinformation. Actually, while I wrote this I was wondering "how do they manage to stay up to speed with the latest versions then?" Now I'm less impressed ;-) Cheers!