Mark Mitchell wrote:
Those are somewhat above my pain threshold. Is there something else that we could do for the 4.0 branch? Like issue a warning and ignore the friend declaration?

Sorry for long delay. I just got back from a trip (but I will be away next week as well.) Doing what you suggest, ignoring friend declarations, would break other valid code now accepted by 4.0 such as below:

  class A {};
  namespace N {
    class B {
      friend class A;
      // more stuff here
    };
    class A {
      // accessing B private/protected members
    };
  }

> Am I correct in understand that the problem
> case is that the friend declaration looks like "friend class C" where
> there is a C in a containing scope, but no C in the class with the
> friend declaration?
The problem here is name conflict of C in two different scope
via using declaration/directive.

I see that either the patch (actually only one of the two fixes this issue:
http://gcc.gnu.org/ml/gcc-patches/2005-03/msg01283.html ) applied or
leave the current behavior as is.  It would do more harm than good
if we try to do something different.

--Kriang

Reply via email to