================ @@ -11714,13 +11715,52 @@ 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()) { + TemplateArgument FirstArg = *DeductionFailure.getFirstArg(); + std::string ParamName = ParamD->getNameAsString(); + TemplateArgument SecondArg = *DeductionFailure.getSecondArg(); + + if (auto *TTPD = dyn_cast<TemplateTypeParmDecl>(ParamD)) { + if (TTPD->wasDeclaredWithTypename()) + S.Diag(Templated->getLocation(), + diag::note_ovl_candidate_explicit_arg_mismatch_named_ttpd) + << ParamD->getDeclName() << FirstArg << SecondArg << ParamName + << "type"; + else { + // TODO write tests for type constrained classes + if (auto *constraint = TTPD->getTypeConstraint()) ---------------- antoniofrighetto wrote:
```suggestion if (TTPD->getTypeConstraint()) ``` https://github.com/llvm/llvm-project/pull/122754 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits