diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2018-03-16 13:36:56 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2018-03-16 13:36:56 +0000 |
commit | c660c8f5d2c76fe0cb18cd027057a58e2cb5de7b (patch) | |
tree | 64ae448848a29deb18f2b52107f48812d26b66f4 /clang/lib/Sema/SemaDeclCXX.cpp | |
parent | 8dcf6fa3085af833751992d1ab3ceaf8f55f8cba (diff) | |
download | bcm5719-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.cpp | 4 |
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(); |