diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp
index e46f4bbae9325093cc1f3dfde369796dee540a37..73ffa2118b44a8fa3c28bd54707659a808d2d04e 100644
--- a/src/shared/cplusplus/Parser.cpp
+++ b/src/shared/cplusplus/Parser.cpp
@@ -2932,9 +2932,9 @@ bool Parser::parseNameId(NameAST *&name)
                 unsigned saved = cursor();
                 ExpressionAST *expr = 0;
                 bool blocked = blockErrors(true);
-                if (parseCastExpression(expr)) {
-                    (void) blockErrors(blocked);
-
+                bool lookAtCastExpression = parseCastExpression(expr);
+                (void) blockErrors(blocked);
+                if (lookAtCastExpression) {
                     if (CastExpressionAST *cast_expression = expr->asCastExpression()) {
                         if (cast_expression->lparen_token && cast_expression->rparen_token
                                 && cast_expression->type_id && cast_expression->expression) {