@@ -6567,29 +6567,22 @@ static void
65676567collectViableConversionCandidates(Sema &SemaRef, Expr *From, QualType ToType,
65686568 UnresolvedSetImpl &ViableConversions,
65696569 OverloadCandidateSet &CandidateSet) {
6570- for (unsigned I = 0, N = ViableConversions.size(); I != N; ++I) {
6571- DeclAccessPair FoundDecl = ViableConversions[I];
6570+ for (const DeclAccessPair &FoundDecl : ViableConversions.pairs()) {
65726571 NamedDecl *D = FoundDecl.getDecl();
65736572 CXXRecordDecl *ActingContext = cast<CXXRecordDecl>(D->getDeclContext());
65746573 if (isa<UsingShadowDecl>(D))
65756574 D = cast<UsingShadowDecl>(D)->getTargetDecl();
65766575
6577- CXXConversionDecl *Conv;
6578- FunctionTemplateDecl *ConvTemplate;
6579- if ((ConvTemplate = dyn_cast<FunctionTemplateDecl>(D)))
6580- Conv = cast<CXXConversionDecl>(ConvTemplate->getTemplatedDecl());
6581- else
6582- Conv = cast<CXXConversionDecl>(D);
6583-
6584- if (ConvTemplate)
6576+ if (auto *ConvTemplate = dyn_cast<FunctionTemplateDecl>(D)) {
65856577 SemaRef.AddTemplateConversionCandidate(
65866578 ConvTemplate, FoundDecl, ActingContext, From, ToType, CandidateSet,
6587- /*AllowObjCConversionOnExplicit=*/false, /*AllowExplicit*/ true);
6588- else
6589- SemaRef.AddConversionCandidate(Conv, FoundDecl, ActingContext, From,
6590- ToType, CandidateSet,
6591- /*AllowObjCConversionOnExplicit=*/false,
6592- /*AllowExplicit*/ true);
6579+ /*AllowObjCConversionOnExplicit=*/false, /*AllowExplicit=*/true);
6580+ continue;
6581+ }
6582+ CXXConversionDecl *Conv = cast<CXXConversionDecl>(D);
6583+ SemaRef.AddConversionCandidate(
6584+ Conv, FoundDecl, ActingContext, From, ToType, CandidateSet,
6585+ /*AllowObjCConversionOnExplicit=*/false, /*AllowExplicit=*/true);
65936586 }
65946587}
65956588
0 commit comments