Почему код явно вызывает статический метод через нулевой указатель?
Я видел такой код в нескольких старых проектах:
class Class {
static void Method() {}
};
((Class*)0)->Method();
Этот код содержит неопределенное поведение, поскольку включает разыменование нулевого указателя (независимо от того, что произойдет после этого). Это на самом деле не имеет смысла - здесь приведен каст для передачи имени типа компилятору, и тот, кто написал код выше, мог бы написать это вместо этого:
Class::Method();
и с последним все будет в порядке.
Зачем кому-то писать прежний код? Это известная идиома из старых добрых времен или как?