@@ -6567,29 +6567,22 @@ static void
6567
6567
collectViableConversionCandidates(Sema &SemaRef, Expr *From, QualType ToType,
6568
6568
UnresolvedSetImpl &ViableConversions,
6569
6569
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()) {
6572
6571
NamedDecl *D = FoundDecl.getDecl();
6573
6572
CXXRecordDecl *ActingContext = cast<CXXRecordDecl>(D->getDeclContext());
6574
6573
if (isa<UsingShadowDecl>(D))
6575
6574
D = cast<UsingShadowDecl>(D)->getTargetDecl();
6576
6575
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)) {
6585
6577
SemaRef.AddTemplateConversionCandidate(
6586
6578
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);
6593
6586
}
6594
6587
}
6595
6588
0 commit comments