This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/21746] New: Compiler will not create references of abstract types
- From: "vircum at yahoo dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 25 May 2005 02:15:44 -0000
- Subject: [Bug c++/21746] New: Compiler will not create references of abstract types
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
Consider the code:
class A {
public:
virtual void foo() = 0;
};
class B : public A {
public:
virtual void foo() {}
};
int main()
{
const A &a = B(); // <-- here
return 0;
}
in g++-4.0, as it comes pre-installed on Mac 10.4, I get the error:
$ g++ -c g++4-bug.cc
g++4-bug.cc: In function `int main()':
g++4-bug.cc:15: error: cannot allocate an object of abstract type 'A'
g++4-bug.cc:3: note: because the following virtual functions are pure within 'A':
g++4-bug.cc:5: note: virtual void A::foo()
However, this code compiles without complaint on the g++-3.4 that comes
preinstalled on this system. I don't know whether this has been fixed since
gcc-4.0, but it doesn't seem to me like there's any reason for gcc to reject
this code.
Thanks,
Michael
--
Summary: Compiler will not create references of abstract types
Product: gcc
Version: 4.0.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: vircum at yahoo dot com
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: powerpc-apple-darwin8.1.0
GCC host triplet: powerpc-apple-darwin8.1.0
GCC target triplet: powerpc-apple-darwin8.1.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21746