[clang] [clang] require template arg list after template kw (PR #80801)
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Fri May 31 04:35:04 PDT 2024
================
@@ -2995,13 +2996,23 @@ bool Parser::ParseUnqualifiedId(CXXScopeSpec &SS, ParsedType ObjectType,
SS, ObjectType, ObjectHadErrors,
TemplateKWLoc ? *TemplateKWLoc : SourceLocation(), Id, IdLoc,
EnteringContext, Result, TemplateSpecified);
- else if (TemplateSpecified &&
- Actions.ActOnTemplateName(
- getCurScope(), SS, *TemplateKWLoc, Result, ObjectType,
- EnteringContext, Template,
- /*AllowInjectedClassName*/ true) == TNK_Non_template)
- return true;
+ if (TemplateSpecified) {
+ TemplateNameKind TNK =
+ Actions.ActOnTemplateName(getCurScope(), SS, *TemplateKWLoc, Result,
+ ObjectType, EnteringContext, Template,
+ /*AllowInjectedClassName*/ true);
+ if (TNK == TNK_Non_template)
+ return true;
+
+ // C++ [template.names]p6
+ // A name prefixed by the keyword template shall be followed by a template
+ // argument list or refer to a class template or an alias template.
+ if ((TNK == TNK_Function_template || TNK == TNK_Dependent_template_name ||
----------------
AaronBallman wrote:
I think it's reasonable to handle in a follow-up, thanks!
https://github.com/llvm/llvm-project/pull/80801
More information about the cfe-commits
mailing list