================
@@ -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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits