[Bug c++/86001] New: explicit default constructor not allowed in anonymous aggregate
xavierb at gmail dot com
gcc-bugzilla@gcc.gnu.org
Wed May 30 17:58:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86001
Bug ID: 86001
Summary: explicit default constructor not allowed in anonymous
aggregate
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: xavierb at gmail dot com
Target Milestone: ---
Hello,
In this example:
union Union {
int val;
Union() = default;
Union(int _v) : val(_v) {}
};
struct StructA {
Union u;
};
struct StructB {
struct {
Union u;
} s;
};
struct StructC {
struct {
Union u;
};
};
GCC (6,7,8 and 9) accept StructA and StructB.
but not StructC:
error: member 'Union StructC::<unnamed struct>::u' with constructor not
allowed in anonymous aggregate
Maybe it's not valid c++ for some reason? But it compiles fine with clang,
msvc, icc.
More information about the Gcc-bugs
mailing list