================
@@ -11714,13 +11714,37 @@ static void DiagnoseBadDeduction(Sema &S, NamedDecl
*Found, Decl *Templated,
return;
}
- case TemplateDeductionResult::InvalidExplicitArguments:
+ case TemplateDeductionResult::InvalidExplicitArguments: {
assert(ParamD && "no parameter found for invalid explicit arguments");
- if (ParamD->getDeclName())
- S.Diag(Templated->getLocation(),
- diag::note_ovl_candidate_explicit_arg_mismatch_named)
- << ParamD->getDeclName();
- else {
+ if (ParamD->getDeclName()) {
----------------
AidanGoldfarb wrote:
Just added. A current message is like this:
```
template <typename T>
void case1(T value) {}
int main() {
case1<42>(42);
}
```
```
source.cpp:44:5: error: no matching function for call to 'case1'
44 | case1<42>(42);
source.cpp:41:6: note: candidate template ignored: invalid explicitly-specified
argument for template parameter 'T': expected a type, but got value '42' (of
type 'int')
40 | template <typename T>
| ~~~~~~~~~~
41 | void case1(T value) {}
| ^
```
Perhaps it is a bit unclear having the highlight and caret on sequential lines,
which both refer to the same function definition? If this format looks good I
am happy to keep it, but I could foresee some confusion.
https://github.com/llvm/llvm-project/pull/122754
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits