[clang] [clang][Sema] Track trivial-relocatability as a type trait (PR #84621)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Mar 12 06:36:14 PDT 2024
================
@@ -826,6 +842,14 @@ void CXXRecordDecl::addedMember(Decl *D) {
? !Constructor->isImplicit()
: (Constructor->isUserProvided() || Constructor->isExplicit()))
data().Aggregate = false;
+
+ // A trivially relocatable class is a class:
+ // -- where no eligible copy constructor, move constructor, copy
+ // assignment operator, move assignment operator, or destructor is
+ // user-provided,
+ if (Constructor->isUserProvided() && (Constructor->isCopyConstructor() ||
+ Constructor->isMoveConstructor()))
+ data().IsNaturallyTriviallyRelocatable = false;
----------------
cor3ntin wrote:
Where did you get that definition from?
In P2786R4, `C` is trivial if `C(someC())` does not invoke a user-defined constructor, which is more corect vis a vis constraints. (So that would have to be done from outside the class, Maybe in Sema)
https://github.com/llvm/llvm-project/pull/84621
More information about the cfe-commits
mailing list