elsteveogrande added inline comments.
================ Comment at: lib/Serialization/ASTReaderDecl.cpp:1771 auto *Def = DD.Definition; DD = std::move(MergeDD); DD.Definition = Def; ---------------- Hi @rsmith, thanks again for looking! This is the part that I was concerned about: that `DD` could be either a `DefinitionData` or `LambdaDefinitionData` reference; similar `MergeDD`. It didn't seem that move-assign was well-defined in the cases where they were mixed. If their being different is completely unexpected, though, this whole thing could perhaps be an assertion that they are both lambda, or both not lambda. And an `IsLambda` field on the CXXRecordDecl` (or `TTK_Lambda`). Alternatively, I could make the lambda data a pointer or `std::unique_ptr<LambdaDefinitionData>` inside `DefinitionData` (and maybe make the latter `final`), so as not to allocate much extra space in the non-lambda case. Depends on whether a new tag type is not too much of a breaking change. Also, whether it's known at this point that this record is a lambda (and `DD` is already of the correct type). Repository: rC Clang https://reviews.llvm.org/D50948 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits