https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70939
Bug ID: 70939
Summary: creating object of abstract class allowed in all
versions of g++
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: major
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: pravasimeet999 at yahoo dot com
Target Milestone: ---
Created attachment 38408
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38408&action=edit
g++ compiles ill formed C++ program successfully
The following program is ill formed C++ program because it is not allowed to
create objects of abstract class. But in all versions of g++ the program
compiles successfully.
This question originally asked on stackoverflow by user Matt. See here:
http://stackoverflow.com/questions/37017094/why-do-gcc-and-clang-allow-me-to-construct-an-abstract-class
.
(See live demo here: http://melpon.org/wandbox/permlink/U7PeIkEPT19BfguJ )
#include <stdio.h>
class A
{
public:
A() {
printf("A()\n");
}
virtual void b() const = 0;
};
int main()
{
const A& a{};
a.b();
return 0;
}
The program is clearly invalid & implementation is required to produce a
diagnosis for this according to C++ standard.