[Bug c++/85892] New: value-initialization failure
Casey at Carter dot net
gcc-bugzilla@gcc.gnu.org
Wed May 23 16:16:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85892
Bug ID: 85892
Summary: value-initialization failure
Product: gcc
Version: 8.0.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: Casey at Carter dot net
Target Milestone: ---
This test program aborts because `collector`'s base `item` isn't properly
zero-initialized:
void* operator new(decltype(sizeof(int)), void* ptr) {
return ptr;
}
struct item { int data; };
struct collector : item {
collector() = default;
collector(int) {}
};
struct tuple : collector {
tuple() : collector{} {}
};
int main() {
alignas(tuple) unsigned char space[sizeof(tuple)];
for (auto& c : space) c = 0xff;
auto ptr = ::new(&space) tuple;
int& i = static_cast<item&>(*ptr).data;
if (i != 0) __builtin_abort();
}
Default-initialization of `tuple` invokes its constructor, which
value-initializes its `collector` base subobject, which should zero-initialize
`collector`'s `item` base subobject.
More information about the Gcc-bugs
mailing list