redi: that sequence "{ delete p; return p == 0; }" or equivalently, in C, "{ free(p); return p == 0; }"isn't just implementation-defined. It's formally undefined. That means any program that even looks at a freed pointer value is allowed to do anything, right up to erasing your disk and impregnating your sister. That's not just perverseness on the part of the standard committees (or myself). Rather, it's meant to offer latitude to implementers to trap such (mis)uses. The same, incidentally, applies to "{ int i; return i == 0; }".

Everything still works, mirabile dictu. Maybe we're not being ambitious enough any more.
Orkut "I hate Java" membership is at 415, "Lisp" at 401. Evidently I was wrong to expect "Lisp" would catch up.