diff options
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index ff3909fd84e..3905348d3ca 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -9152,13 +9152,15 @@ bool Sema::CheckFunctionDeclaration(Scope *S, FunctionDecl *NewFD, } else if (CXXConversionDecl *Conversion = dyn_cast<CXXConversionDecl>(NewFD)) { ActOnConversionDeclarator(Conversion); - } else if (NewFD->isDeductionGuide() && - NewFD->getTemplateSpecializationKind() == - TSK_ExplicitSpecialization) { + } else if (NewFD->isDeductionGuide()) { + if (auto *TD = NewFD->getDescribedFunctionTemplate()) + CheckDeductionGuideTemplate(TD); + // A deduction guide is not on the list of entities that can be // explicitly specialized. - Diag(NewFD->getLocStart(), diag::err_deduction_guide_specialized) - << /*explicit specialization*/ 1; + if (NewFD->getTemplateSpecializationKind() == TSK_ExplicitSpecialization) + Diag(NewFD->getLocStart(), diag::err_deduction_guide_specialized) + << /*explicit specialization*/ 1; } // Find any virtual functions that this function overrides. |

