The patch should fix your problem.
Index: E:/code/cb/cb_trunk/src/plugins/codecompletion/parser/parserthread.cpp
===================================================================
--- E:/code/cb/cb_trunk/src/plugins/codecompletion/parser/parserthread.cpp	(revision 7535)
+++ E:/code/cb/cb_trunk/src/plugins/codecompletion/parser/parserthread.cpp	(working copy)
@@ -2646,6 +2646,7 @@
         else if (tmp==ParserConsts::gt)
         {
             --nestLvl;
+            m_TemplateArgument.Trim();
             m_TemplateArgument << tmp;
         }
         else if (tmp==ParserConsts::semicolon)
@@ -2658,7 +2659,7 @@
         else if (tmp.IsEmpty())
             break;
         else
-            m_TemplateArgument << tmp;
+            m_TemplateArgument << tmp <<_T(" ");
         if (nestLvl <= 0)
             break;
     }
BTW:
If you write the code: (No need to write some "template" declaration)
Then, "EEEE" will be recognized as a variable, and "AAA< CCC DDD>" will be its type string.