On Mon, Apr 25, 2011 at 2:53 PM, Jason Merrill <ja...@redhat.com> wrote: > In C++0x we can have an initializer that is potentially constant and yet > still type-dependent if it involves a call, so we need to handle that. > > For 4.7 I'm explicitly testing for type-dependency; for 4.6 I've made a > smaller change to make value_dependent_expression_p return true for > type-dependent expressions as well. >
> commit 6b978a4d2e33771d8fd95f39a301f8df180ac98c > Author: Jason Merrill <ja...@redhat.com> > Date: Mon Apr 25 16:44:03 2011 -0400 > > PR c++/48707 > * pt.c (value_dependent_expression_p): Handle type-dependent > expression. > > diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c > index ed48203..fc5177d 100644 > --- a/gcc/cp/pt.c > +++ b/gcc/cp/pt.c > @@ -18068,6 +18068,11 @@ value_dependent_expression_p (tree expression) > if (DECL_P (expression) && type_dependent_expression_p (expression)) > return true; > > + /* We shouldn't have gotten here for a type-dependent expression, but > + let's handle it properly anyway. */ > + if (TREE_TYPE (expression) == NULL_TREE) > + return true; > + > switch (TREE_CODE (expression)) > { > case IDENTIFIER_NODE: Any particular reason why it was only applied to 4.6 branch? The same patch also fixes: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53836 on trunk which is a regression from 4.6. -- H.J.