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