tbaeder added inline comments.
================ Comment at: clang/test/AST/Interp/records.cpp:317-318 { - auto T = Test(Arr, Pos); + Test(Arr, Pos); // End of scope, should destroy Test. } ---------------- aaron.ballman wrote: > Nit: nothing actually tests that this object is destroyed correctly. Here's > an interesting test to consider: > ``` > struct S { > constexpr S() {} > constexpr ~S() noexcept(false) { throw 12; } > }; > > constexpr int f() { > S{}; > return 12; > } > > static_assert(f() == 12); > ``` > That should fail because `~S()` would hit the `throw` expression and thus is > not valid. Note, you'll need to add `-Wno-invalid-constexpr` to your test to > avoid the warning-defaults-to-error about the destructor never producing a > constant expression. There are multiple reasons why that sample is not rejected right now, one I can easily fix in a follow-up patch, the other one would actually require us to recognize the `throw` and reject it with a proper diagnostic. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D147591/new/ https://reviews.llvm.org/D147591 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits