[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