The following code generate a compilation error: class Foo { private: Foo() { } };
class Bar : public Foo { public: Bar() {} }; int main() { return 0; } however,commenting out "Bar(){}" (i.e. let the compiler generate one for me),do not cause any compilation error. the same case for virtual base constructor(in which I discover it when reading C++ faq 23.9) class FooBase { friend class Foo; private: FooBase(); }; class Foo : virtual private FooBase { public: Foo() { } }; class Bar : private virtual Foo { public: Bar() {} //no error if comment it out }; int main() { return 0; } test on gcc 3.3 and gcc 3.4 in debian: g++-3.4 (GCC) 3.4.4 20050314 (prerelease) (Debian 3.4.3-12) g++-3.3 (GCC) 3.3.5 (Debian 1:3.3.5-12) -- Summary: no compilation error for inheriting Base class with private constructor when the constructor for Derived Class is compiler generated Product: gcc Version: 3.3.5 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: hingwah at hingwah dot net CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21363