http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48446
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-04-07 08:30:57 UTC --- template<typename T> struct A { ~A (); T *operator-> () const; }; struct B { typedef A <B> P; static P foo (int); }; struct C { typedef A<C> P; static const int c = 80; }; C::P bar (); void baz () { char z[bar ()->c]; { B::P m = B::foo (sizeof (z)); } } Yeah, apparently some problem on the FE side with cleanups, where CLEANUP_POINT_EXPR already for z is given the cleanups for m, which are in a nested bind though and thus m wasn't seen in bind expr yet.