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.

Reply via email to