Skip to content

Commit 8dd01f8

Browse files
committed
more tests for constrained default constructors
1 parent 189c4a1 commit 8dd01f8

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

clang/lib/Sema/SemaTypeTraits.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1076,8 +1076,7 @@ static bool EvaluateUnaryTypeTrait(Sema &Self, TypeTrait UTT,
10761076
if (T.isPODType(C) || T->isObjCLifetimeType())
10771077
return true;
10781078
if (CXXRecordDecl *RD = C.getBaseElementType(T)->getAsCXXRecordDecl()) {
1079-
if (RD->hasTrivialDefaultConstructor() &&
1080-
!RD->hasNonTrivialDefaultConstructor())
1079+
if (RD->hasTrivialDefaultConstructor())
10811080
return true;
10821081

10831082
bool FoundConstructor = false;

clang/test/SemaCXX/type-traits.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2099,7 +2099,25 @@ class Tpl {
20992099
};
21002100
static_assert(__builtin_is_implicit_lifetime(Tpl<int>));
21012101

2102+
template <typename>
2103+
class MultipleDefaults {
2104+
MultipleDefaults() {};
2105+
MultipleDefaults() requires true = default;
2106+
};
2107+
static_assert(__builtin_is_implicit_lifetime(MultipleDefaults<int>));
2108+
template <typename>
2109+
class MultipleDefaults2 {
2110+
MultipleDefaults2() requires true {};
2111+
MultipleDefaults2() = default;
2112+
};
2113+
2114+
static_assert(__builtin_is_implicit_lifetime(MultipleDefaults2<int>));
2115+
2116+
21022117
#endif
2118+
2119+
2120+
21032121
}
21042122

21052123
void is_signed()

0 commit comments

Comments
 (0)