Skip to content

Commit c2b9dae

Browse files
Fix bug in detecting in-class member initializers
1 parent 4ed1952 commit c2b9dae

File tree

2 files changed

+3
-3
lines changed

2 files changed

+3
-3
lines changed

clang/lib/AST/DeclCXX.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1118,7 +1118,7 @@ void CXXRecordDecl::addedMember(Decl *D) {
11181118
} else if (!T.isCXX98PODType(Context))
11191119
data().PlainOldData = false;
11201120

1121-
if (Field->hasAttr<ExplicitInitAttr>() && !Field->hasInClassInitializer())
1121+
if (Field->hasAttr<ExplicitInitAttr>())
11221122
setHasUninitializedExplicitInitFields(true);
11231123

11241124
if (T->isReferenceType()) {
@@ -1376,7 +1376,7 @@ void CXXRecordDecl::addedMember(Decl *D) {
13761376
data().ImplicitCopyAssignmentHasConstParam = false;
13771377

13781378
if (FieldRec->hasUninitializedExplicitInitFields() &&
1379-
FieldRec->isAggregate() && !Field->hasInClassInitializer())
1379+
FieldRec->isAggregate())
13801380
setHasUninitializedExplicitInitFields(true);
13811381

13821382
if (FieldRec->hasUninitializedReferenceMember() &&

clang/test/SemaCXX/uninitialized.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1490,7 +1490,7 @@ void aggregate() {
14901490
};
14911491

14921492
struct C {
1493-
[[clang::requires_explicit_initialization]] int c1; // #FIELD_C1
1493+
[[clang::requires_explicit_initialization]] int c1 = 2; // #FIELD_C1
14941494
C() = default; // Test pre-C++20 aggregates
14951495
};
14961496

0 commit comments

Comments
 (0)