From 4d457401672c4ac7e9c752be357339729441a79d Mon Sep 17 00:00:00 2001
From: Roberto Raggi <roberto.raggi@nokia.com>
Date: Mon, 12 Apr 2010 09:26:47 +0200
Subject: [PATCH] Fixed parsing of anonymous template parameters.

For example,
  template <template <typename> class X> struct foo {};

Reviewed-by: erikv
---
 src/shared/cplusplus/Parser.cpp | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp
index 11bef468c91..d8281ec9848 100644
--- a/src/shared/cplusplus/Parser.cpp
+++ b/src/shared/cplusplus/Parser.cpp
@@ -1577,13 +1577,22 @@ bool Parser::parseTemplateTypeParameter(DeclarationAST *&node)
 
 bool Parser::lookAtTypeParameter() const
 {
-    if ((LA() == T_CLASS || LA() == T_TYPENAME) && LA(2) == T_IDENTIFIER) {
-        switch (LA(3)) {
-        case T_EQUAL:
-        case T_COMMA:
-        case T_GREATER:
-            return true;
+    if (LA() == T_CLASS || LA() == T_TYPENAME) {
+        if (LA(2) == T_IDENTIFIER) {
+            switch (LA(3)) {
+            case T_EQUAL:
+            case T_COMMA:
+            case T_GREATER:
+                return true;
+
+            default:
+                return false;
+            }
         }
+
+        // recognized an anonymous template type parameter. e.g
+        //    template <typename>
+        return true;
     }
 
     return false;
-- 
GitLab