llvm/llvm-project

Optimize `decltype(T{})` to `T` in compiler error messages

Open

#96.638 geöffnet am 25. Juni 2024

Auf GitHub ansehen
 (11 Kommentare) (1 Reaktion) (0 zugewiesene Personen)C++ (10.782 Forks)batch import
clang:diagnosticsgood first issuequality-of-implementation

Repository-Metriken

Stars
 (26.378 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 1T 2h) (1.000 gemergte PRs in 30 T)

Beschreibung

In many cases clang generates an error like:

note: because 'implicitly_convertible(kind_of_<decltype(struct time{{{}}})>{{{}, {}}}, kind_of_<decltype(derived_quantity_spec<power<length, 2>, per<time> >{{{}, {{}}}})>{{{}}})' evaluated to false

besides the #88502 issue the decltype(T{}) also does not help in readability here. The above message could be simplified to:

note: because 'implicitly_convertible(kind_of_<struct time>{}, kind_of_<derived_quantity_spec<power<length, 2>, per<time> >>{})' evaluated to false

Those two issues would help libraries like mp-units provide users with much easier-to-understand diagnostics.

Contributor Guide