summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDeclCXX.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2018-03-16 13:36:56 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2018-03-16 13:36:56 +0000
commitc660c8f5d2c76fe0cb18cd027057a58e2cb5de7b (patch)
tree64ae448848a29deb18f2b52107f48812d26b66f4 /clang/lib/Sema/SemaDeclCXX.cpp
parent8dcf6fa3085af833751992d1ab3ceaf8f55f8cba (diff)
downloadbcm5719-llvm-c660c8f5d2c76fe0cb18cd027057a58e2cb5de7b.tar.gz
bcm5719-llvm-c660c8f5d2c76fe0cb18cd027057a58e2cb5de7b.zip
Implement C++ DR727, which permits explicit specializations at class scope.
More generally, this permits a template to be specialized in any scope in which it could be defined, so this also supersedes DR44 and DR374 (the latter of which we previously only implemented in C++11 mode onwards due to unclarity as to whether it was a DR). llvm-svn: 327705
Diffstat (limited to 'clang/lib/Sema/SemaDeclCXX.cpp')
-rw-r--r--clang/lib/Sema/SemaDeclCXX.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index 9e3647548be..6160eccabe8 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -3051,7 +3051,9 @@ Sema::ActOnCXXMemberDeclarator(Scope *S, AccessSpecifier AS, Declarator &D,
// int X::member;
// };
if (DeclContext *DC = computeDeclContext(SS, false))
- diagnoseQualifiedDeclaration(SS, DC, Name, D.getIdentifierLoc());
+ diagnoseQualifiedDeclaration(SS, DC, Name, D.getIdentifierLoc(),
+ D.getName().getKind() ==
+ UnqualifiedIdKind::IK_TemplateId);
else
Diag(D.getIdentifierLoc(), diag::err_member_qualification)
<< Name << SS.getRange();
OpenPOWER on IntegriCloud