================
@@ -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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits