On Wed, Sep 07, 2005 at 09:55:29PM +0200, Richard B. Kreckel wrote: > On 7 Sep 2005, Gabriel Dos Reis wrote: > > Mike Stump <[EMAIL PROTECTED]> writes: > > | I'll echo the generalized request that we try and avoid tightenings > > | on other than x.y.0 releases. > > > > I hear you. In this specific case, it worths remembering people that > > the issue is not just an accept-invalid that was turned into > > reject-invalid, but wrong-code generation (in the sense that > > wrong-code was being genereted for *valid* program) that was fixed. > > I'm unable to find which wrong-code generation PR was fixed by reading > this thread. That applies to any of the two examples I posted. > > Anyway, as I mentioned: If this broken code was a collateral damage of a > really serious bug, then it would be foolish to complain. It's just that > I'm having difficulties imagining how accepting a friend declaration as a > forward declaration (which by the way worked since at least GCC 2.7.x) can > make your code accidentally fire that ballistic rocket. (If it really > can, then you're having a truck load of other problems besides code > quality.)
In the hopes that it will help the discussion I ran regression hunts on the two test cases. The first test: struct foo { friend class bar; void screw (bar&); }; is rejected starting with this 4.0 patch: http://gcc.gnu.org/ml/gcc-cvs/2005-05/msg01007.html The second test: struct lala { void f () const {} }; struct lulu { template<class T> lulu (void (T::*)()) {} }; lulu froobrazzz(&lala::f); is rejected starting with this 4.0 patch: http://gcc.gnu.org/ml/gcc-cvs/2005-08/msg00384.html Janis