[clang] [clang] Allow class with anonymous union member to be const-default-constructible even if a union member has a default member initializer (#95854) (PR #96301)
Richard Smith via cfe-commits
cfe-commits at lists.llvm.org
Fri Jun 21 12:40:28 PDT 2024
================
@@ -1392,7 +1392,8 @@ class CXXRecordDecl : public RecordDecl {
bool allowConstDefaultInit() const {
return !data().HasUninitializedFields ||
!(data().HasDefaultedDefaultConstructor ||
- needsImplicitDefaultConstructor());
+ needsImplicitDefaultConstructor()) ||
+ hasInClassInitializer();
----------------
zygoloid wrote:
What happens for:
```
struct A {
union {
struct {
int n = 5;
int m;
};
};
};
const A a;
```
This is a language extension so we get to choose its semantics, but I think the most logical choice is to reject because the union member is not *fully* initialized.
https://github.com/llvm/llvm-project/pull/96301
More information about the cfe-commits
mailing list