diff options
| author | Richard Smith <richard-llvm@metafoo.co.uk> | 2017-02-16 00:36:47 +0000 |
|---|---|---|
| committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2017-02-16 00:36:47 +0000 |
| commit | 4e05eaa9e84a271cdaf810ed5a981f1afd54aad9 (patch) | |
| tree | bd1d31dc9223337f5362e4b85b57c8d8b0727636 /clang/lib/Sema/SemaDecl.cpp | |
| parent | 7386ceac7453d1839bf6c89ec5d6b989b3818520 (diff) | |
| download | bcm5719-llvm-4e05eaa9e84a271cdaf810ed5a981f1afd54aad9.tar.gz bcm5719-llvm-4e05eaa9e84a271cdaf810ed5a981f1afd54aad9.zip | |
[c++1z] Diagnose non-deducible template parameters in deduction guide templates, per [temp.param]p11.
llvm-svn: 295264
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. |

