This used to compile but doesn't any more on mainline (ok on 4.0.x branch): ----------------------- struct B { void foo(); }; template <typename T> class I : public B {}; template <typename T> class D : private I<T> { I<T>::B::foo; }; -------------------------- g/x> /home/bangerth/bin/gcc-4.0.1-pre/bin/c++ -c x.cc g/x> /home/bangerth/bin/gcc-4.1-pre/bin/c++ -c x.cc x.cc:8: error: type ‘B’ is not a base type for type ‘D<T>’ W.
-- Summary: [4.1 regression] Rejects old-style using declaration Product: gcc Version: 4.1.0 Status: UNCONFIRMED Keywords: rejects-valid Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: bangerth at dealii dot org CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22136