Clang is not the solution. Yes it has some better error messages. Although GCC is quickly catching up.
But it can't solve the core problem. It's simply the language. The lack of Concepts (or something similar) means that error messages simply refer to implementation internals of the Template you are using. Easily giving you a long cascade of error messages when it's in some Template that is used by the Template.
All of the sudden you have to look at implementation details of your standard library or something even worse such as boost. Just to figure out what the mistake was.
And there is nothing Clang or GCC can do about it.
But it can't solve the core problem. It's simply the language. The lack of Concepts (or something similar) means that error messages simply refer to implementation internals of the Template you are using. Easily giving you a long cascade of error messages when it's in some Template that is used by the Template.
All of the sudden you have to look at implementation details of your standard library or something even worse such as boost. Just to figure out what the mistake was.
And there is nothing Clang or GCC can do about it.