https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62221
Bug ID: 62221
Summary: Explicit base destructor call acccepted
Product: gcc
Version: 5.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: potswa at mac dot com
#include <new>
struct b {
virtual ~ b() {}
};
struct d : b {
~ d () {}
};
int main() {
d o;
o.~b();
new( & o ) d;
}
This is ill formed but is accepted. Clang, EDG, and MSVC all reject it.
[basic.lookup.classref]p3:
"If the type T of the object expression is of a class type C, the type-name is
also looked up in the scope of class C. At least one of the lookups shall find
a name that refers to (possibly cv-qualified) T."