OSDN Git Service

2003-06-30 Giovanni Bajo <giovannibajo@libero.it>
authorbangerth <bangerth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Jun 2003 19:07:32 +0000 (19:07 +0000)
committerbangerth <bangerth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Jun 2003 19:07:32 +0000 (19:07 +0000)
        * pt.c (value_dependent_expression_p): Cast expressions are
        value-dependent also if their operand is value-dependent itself.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@68728 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/pt.c

index 1b56f53..2d80847 100644 (file)
@@ -11379,7 +11379,8 @@ dependent_type_p (tree type)
   return TYPE_DEPENDENT_P (type);
 }
 
-/* Returns TRUE if the EXPRESSION is value-dependent.  */
+/* Returns TRUE if the EXPRESSION is value-dependent, in the sense of
+   [temp.dep.constexpr] */
 
 bool
 value_dependent_expression_p (tree expression)
@@ -11406,13 +11407,15 @@ value_dependent_expression_p (tree expression)
       && value_dependent_expression_p (DECL_INITIAL (expression)))
     return true;
   /* These expressions are value-dependent if the type to which the
-     cast occurs is dependent.  */
+     cast occurs is dependent or the expression being casted is
+     value-dependent.  */
   if ((TREE_CODE (expression) == DYNAMIC_CAST_EXPR
        || TREE_CODE (expression) == STATIC_CAST_EXPR
        || TREE_CODE (expression) == CONST_CAST_EXPR
        || TREE_CODE (expression) == REINTERPRET_CAST_EXPR
        || TREE_CODE (expression) == CAST_EXPR)
-      && dependent_type_p (TREE_TYPE (expression)))
+      && (dependent_type_p (TREE_TYPE (expression))
+   || value_dependent_expression_p (TREE_OPERAND (expression, 0))))
     return true;
   /* A `sizeof' expression where the sizeof operand is a type is
      value-dependent if the type is dependent.  If the type was not