[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)

Rajveer Singh Bharadwaj via cfe-commits cfe-commits at lists.llvm.org
Sat Jun 22 01:20:37 PDT 2024


================
@@ -1392,7 +1392,8 @@ class CXXRecordDecl : public RecordDecl {
   bool allowConstDefaultInit() const {
     return !data().HasUninitializedFields ||
            !(data().HasDefaultedDefaultConstructor ||
-             needsImplicitDefaultConstructor());
+             needsImplicitDefaultConstructor()) ||
+           hasInClassInitializer();
----------------
Rajveer100 wrote:

The two tests that were broken:

```c++
struct some_init {
  int a = 0;
  int b;
  int c = 0;
};

void constobjs() {
  // ...
  const some_init si;
  // ...
}
```

```c++
struct Ints2 {
  int a = 10;
  int b;
};
constexpr Ints2 ints22;
```

https://github.com/llvm/llvm-project/pull/96301


More information about the cfe-commits mailing list