================ @@ -10918,7 +11083,44 @@ bool OverloadCandidate::NotValidBecauseConstraintExprHasError() const { OverloadingResult OverloadCandidateSet::BestViableFunction(Sema &S, SourceLocation Loc, iterator &Best) { + + bool TwoPhaseResolution = + !NonDeducedCandidates.empty() && Kind != CSK_CodeCompletion && + Kind != CSK_InitByUserDefinedConversion && Kind != CSK_InitByConstructor; + + if (TwoPhaseResolution) { + Best = end(); + for (auto It = begin(); It != end(); ++It) { + if (It->isPerfectMatch(S.getASTContext())) { + if (Best == end()) { + Best = It; + } else { + Best = end(); + break; + } + } ---------------- zyn0217 wrote:
If there are two+ perfect matches, I presume the reason for going on adding template candidates is that we want every candidates to be present in the diagnostic? https://github.com/llvm/llvm-project/pull/133426 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits