Почему код явно вызывает статический метод через указатель, равный null?
Я видел подобный код в нескольких старых проектах:
class Class {
static void Method() {}
};
((Class*)0)->Method();
Этот код содержит неопределенное поведение, так как включает разыменование нулевого указателя (что бы ни происходило после этого). Он действительно не имеет смысла — приведение типа используется здесь лишь для того, чтобы сообщить компилятору имя типа, и автор кода мог бы написать это вместо:
Class::Method();
И последний вариант был бы приемлемым.
Почему кто-то мог бы написать первый вариант кода? Это известный идиоматизм из каких-то добрых старых времен или что-то в этом роде?
Сравнение регулярного приведения типов, static_cast и dynamic_cast
Разница между const int*, const int * const и int * const?
Почему следует использовать указатель вместо самого объекта?
Неопределенное, неуточненное и зависимое от реализации поведение
Как инициализировать приватные статические члены данных в заголовочном файле