From mboxrd@z Thu Jan 1 00:00:00 1970 From: bcr@lizardtech.com To: gnats-gnats@sourceware.cygnus.com Subject: gnats/217: Information on http://gcc.gnu.org/bugs.html incaccurate Date: Fri, 13 Jul 2001 10:24:00 -0000 Message-id: <20010713172014.9106.qmail@sourceware.cygnus.com> X-SW-Source: 2001-q3/msg00010.html List-Id: >Number: 217 >Category: gnats >Synopsis: Information on http://gcc.gnu.org/bugs.html incaccurate >Confidential: no >Severity: non-critical >Priority: medium >Responsible: unassigned >State: open >Class: doc-bug >Submitter-Id: net >Arrival-Date: Fri Jul 13 10:24:00 PDT 2001 >Closed-Date: >Last-Modified: >Originator: Dr Bill C Riemers >Release: gcc 3.0 >Organization: >Environment: Web browser >Description: On http://gcc.gnu.org/bugs.html , the following text is included: > G++ now implements type access control on member types. Defect report 45 > clarifies that nested classes are members of the class they are nested in, and > so are granted access to private members of that class. There are several problems with this text. First off, defect 45, talks about template implimentations, not Nested classes. So the refered defect # must be wrong. Second, according to "C++ Programming Language, Third Edition", by Bjarne Stroustrup, the creator of C++: Section C.11.3. The members of a member class have no special access to members of an enclosing class. Simularly members of an enclosing class have no special access to members of a nested class; the usual access rules (section 10.2.2) shall be obeyed. For example: class Outer { typedef int T; int i; public: int i2; static int x; class Inner { int x; T y; // error: Outer::T is private public: void f(Outer *p,int v); }; int g(Inner *p); }; ... >How-To-Repeat: >Fix: Update the webpage, and confirm the g++ compiler conforms to this standard. >Release-Note: >Audit-Trail: >Unformatted: