================ @@ -540,6 +540,14 @@ namespace PR10504 { void f(A *x) { delete x; } // expected-warning {{delete called on 'PR10504::A' that is abstract but has non-virtual destructor}} } +#if __cplusplus >= 201103L +enum GH99278_1 { // expected-note {{definition of 'GH99278_1' is not complete until the closing '}'}} + zero = decltype(delete static_cast<GH99278_1*>(nullptr), 0){} ---------------- frederick-vs-ja wrote:
If one attempts to evaluate such a weird delete-expression, there would be initially UB because it's impossible to `new` an object of an incomplete enum type. However, the UB would be definitely transformed into constant evaluation failure, becaue such an enum type only incomplete in the enum body, where every evaluation must be within the constant evaluation of some enumerator. https://github.com/llvm/llvm-project/pull/118455 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits