diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp
index f3f53d321ff030981b490178fd99c12034082fd7..b684b799fa836e4717d7d8b52c0ac60874fe5182 100644
--- a/src/shared/cplusplus/Parser.cpp
+++ b/src/shared/cplusplus/Parser.cpp
@@ -2328,6 +2328,10 @@ bool Parser::parseTypeIdList(ExpressionListAST *&node)
         *expression_list_ptr = new (_pool) ExpressionListAST;
         (*expression_list_ptr)->value = typeId;
         expression_list_ptr = &(*expression_list_ptr)->next;
+
+        if (_cxx0xEnabled && LA() == T_DOT_DOT_DOT)
+            consumeToken(); // ### store this token
+
         while (LA() == T_COMMA) {
             consumeToken();
 
@@ -2335,6 +2339,9 @@ bool Parser::parseTypeIdList(ExpressionListAST *&node)
                 *expression_list_ptr = new (_pool) ExpressionListAST;
                 (*expression_list_ptr)->value = typeId;
                 expression_list_ptr = &(*expression_list_ptr)->next;
+
+                if (_cxx0xEnabled && LA() == T_DOT_DOT_DOT)
+                    consumeToken(); // ### store this token
             }
         }
         return true;