From: Giovanni Bajo Date: Mon, 30 Jun 2003 18:45:25 +0000 (+0200) Subject: re PR c++/10750 (error with using template template expression in static const initia... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9b61cc1bccb144e5483c6463348ef13915fbe829;p=gcc.git re PR c++/10750 (error with using template template expression in static const initializer) 2003-06-30 Giovanni Bajo PR c++/10750 * parser.c (cp_parser_primary_expression): A VAR_DECL with a (value- or type-) dependent expression as DECL_INITIAL is a valid constant-expression (at parser time). From-SVN: r68720 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 9d84c82274c..821c85f8151 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2003-06-30 Giovanni Bajo + + PR c++/10750 + * parser.c (cp_parser_primary_expression): A VAR_DECL with a + (value- or type-) dependent expression as DECL_INITIAL is a + valid constant-expression (at parser time). + 2003-06-30 Giovanni Bajo PR c++/11106 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 21166190b8b..46351153bf1 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -2783,11 +2783,16 @@ cp_parser_primary_expression (cp_parser *parser, && INTEGRAL_OR_ENUMERATION_TYPE_P (TREE_TYPE (decl))) /* Const variables or static data members of integral or enumeration types initialized with constant - expressions. */ + expressions (or dependent expressions - in this case + the check will be done at instantiation time). */ && !(TREE_CODE (decl) == VAR_DECL && INTEGRAL_OR_ENUMERATION_TYPE_P (TREE_TYPE (decl)) && DECL_INITIAL (decl) - && TREE_CONSTANT (DECL_INITIAL (decl)))) + && (TREE_CONSTANT (DECL_INITIAL (decl)) + || type_dependent_expression_p + (DECL_INITIAL (decl)) + || value_dependent_expression_p + (DECL_INITIAL (decl))))) { if (!parser->allow_non_constant_expression_p) return cp_parser_non_constant_id_expression (decl);