1 #ifndef OVERLOADED_DELETE_IN_HEADER
2 #define OVERLOADED_DELETE_IN_HEADER
4 struct DeleteInHeader
{
6 static void operator delete(void *ptr
);
9 void DeleteInHeader::operator delete(void *ptr
) {
10 DeleteInHeader
*self
= (DeleteInHeader
*)ptr
;
11 self
->data
= 1; // no-warning: Still alive.
13 ::operator delete(ptr
);
15 self
->data
= 2; // expected-warning {{Use of memory after it is freed [cplusplus.NewDelete]}}
18 #endif // OVERLOADED_DELETE_IN_SYSTEM_HEADER