Warum würde Code explizit eine statische Methode über einen Nullzeiger aufrufen?
Ich habe Code wie diesen in ein paar alten Projekten gesehen:
class Class {
static void Method() {}
};
((Class*)0)->Method();
Dieser Code enthält undefiniertes Verhalten, da ein Nullzeiger dereferenziert wird (egal, was danach passiert). Es macht wirklich keinen Sinn - die Besetzung ist da, um den Typnamen an den Compiler weiterzuleiten, und wer auch immer den obigen Code geschrieben hat, könnte dies stattdessen geschrieben haben:
Class::Method();
und letzteres wäre okay.
Warum würde jemand den früheren Code schreiben? Ist es eine bekannte Redewendung aus guten alten Zeiten oder was?