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