diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-02-04 04:20:44 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-02-04 04:20:44 +0000 |
commit | a99fb4c77d96f01360244edba5b87f88f68897f4 (patch) | |
tree | d8edd4966b0398ce102ad6bcc5bf3785a3982ec9 /clang/lib/Sema/SemaDecl.cpp | |
parent | 8b481d8ac2af1ac2af029d0773938d7bff364737 (diff) | |
download | bcm5719-llvm-a99fb4c77d96f01360244edba5b87f88f68897f4.tar.gz bcm5719-llvm-a99fb4c77d96f01360244edba5b87f88f68897f4.zip |
Tighten up the semantics of default template arguments, per C++0x
[temp.param]p9 and C++ DR226. Fixes PR8747.
llvm-svn: 124856
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 9c4fdc99f27..88c3a770c27 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -3967,8 +3967,14 @@ Sema::ActOnFunctionDeclarator(Scope* S, Declarator& D, DeclContext* DC, FunctionTemplateDecl *PrevTemplate = FunctionTemplate->getPreviousDeclaration(); CheckTemplateParameterList(FunctionTemplate->getTemplateParameters(), PrevTemplate? PrevTemplate->getTemplateParameters() : 0, - D.getDeclSpec().isFriendSpecified()? TPC_FriendFunctionTemplate - : TPC_FunctionTemplate); + D.getDeclSpec().isFriendSpecified() + ? (IsFunctionDefinition + ? TPC_FriendFunctionTemplateDefinition + : TPC_FriendFunctionTemplate) + : (D.getCXXScopeSpec().isSet() && + DC && DC->isRecord()) + ? TPC_ClassTemplateMember + : TPC_FunctionTemplate); } if (NewFD->isInvalidDecl()) { |