================ @@ -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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits