This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
c++/10152: members of nested class granted special access to enclosing class
- From: dbaron at dbaron dot org
- To: gcc-gnats at gcc dot gnu dot org
- Date: 19 Mar 2003 15:57:08 -0000
- Subject: c++/10152: members of nested class granted special access to enclosing class
- Reply-to: dbaron at dbaron dot org
>Number: 10152
>Category: c++
>Synopsis: members of nested class granted special access to enclosing class
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: accepts-illegal
>Submitter-Id: net
>Arrival-Date: Wed Mar 19 16:06:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator: dbaron at dbaron dot org
>Release: gcc 3.2.2
>Organization:
>Environment:
>Description:
Contrary to the C++ standard, section 11.8, clause 1, gcc grants nested classes special access privileges to members of their enclosing class.
This bug is present both in gcc 3.2.2 and in the gcc 3.3 branch from February 10. Based on a different testcase (in Mozilla source), I believe the bug is also present in egcs, gcc 2.95, etc.
The following is a simplified variant of the example given in C++ 11.8 clause 1, which compiles with "g++ -ansi -pedantic" even though it contains an error:
----------
/*
* This is a reduced form of the example in C++ 11.8,
* clause 1, which says that "The members of a nested
* class have no special access to members of an
* enclosing class.
*/
class E {
class B {};
class I {
B b; // error: E::B is private
};
};
int main()
{
return 1;
}
----------
>How-To-Repeat:
Compile above example with "g++ -ansi -pedantic".
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted: