$uname -srm Linux 2.6.11.4-21.7-default i686 $tmp/bin/g++ -v Using built-in specs. Target: i686-pc-linux-gnu Configured with: ../gcc/configure --enable-languages=c,c++ --prefix=/home/xxx/tmp : (reconfigured) ../gcc/configure --enable-languages=c,c++ --prefix=/home/xxx/tmp : (reconfigured) ../gcc/configure --enable-languages=c,c++ --prefix=/home/xxx/tmp Thread model: posix gcc version 4.1.0 20050717 (experimental) The following code is rejected: class A { public: static void foo() {} static int i; }; class B : private A { }; class C : public B { public: void foo2() { A::foo(); // line 18 int c=A::i; // line 20 } }; Compilation with g++ -c test.cpp yields test.cpp: In member function ‘void C::foo2()’: test.cpp:3: error: ‘class A’ is inaccessible test.cpp:18: error: within this context test.cpp:3: error: ‘class A’ is inaccessible test.cpp:20: error: within this context Making C inherit directly from A works, though (i.e., Class C : private A). Also, g++ 3.3.4 and 3.3.5 did accept the code above. Thanks, Michael
-- Summary: No access to public static members/functions of privately inherited base class Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: mdweb at web dot de CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22540