[cfe-dev] [PATCH] Friend class cannot access protected field of parent

John McCall rjmccall at apple.com
Tue Jun 8 10:52:42 PDT 2010


On Jun 8, 2010, at 1:56 AM, Olivier Goffart wrote:

> Le Tuesday 08 June 2010, John McCall a écrit :
>> On Jun 8, 2010, at 12:23 AM, Olivier Goffart wrote:
>>> So you think it is better not to try to make it work, even for the non-
>>> template case?
>> 
>> Yes.  Like I said, I don't think this is an intended feature;  I think it's
>> a drafting error.  [class.access.base] contains many repetitions of the
>> phrase "member or friend";  I think someone just wrote "member or friend"
>> here without really thinking.  I think when they were drafting the example
>> in [class.protected] they were only thinking about the effect of the
>> protected access restriction, not whether the member itself was accessible
>> from the naming class.  I'm willing to consider evidence in the form of a
>> DR that I'm wrong, but I don't really want to implement the rule, and I'm
>> not going to implement it as long as it's undecidable.
> 
> Alright.
> Still, according to the examples in [class.protected], it does not seem to be 
> a simple mistake.

Right, I acknowledge that.

For what it's worth, your patch looks pretty good, except (1) I don't see how you're
dealing with multiple declarations of the target function/record and (2) you're
pushing friend decls in template definitions, which seems to be inconsistent
with what you say g++ does.

John.



More information about the cfe-dev mailing list