diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp
index 11bef468c91b5770a86c470cf41052a8f725a00b..d8281ec9848ddf0fc96c96e507a9f5284e3141c7 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;