При чтении стандарта я был очень удивлен, увидев, что на самом деле это имя является необязательным в объявлении:
struct Magic {};
int main() {
int; // well-formed
Magic; // well-formed
}
Для тех, кто хочет прочитать стандарт, это потому, что в простой декларации список init-declarator не является обязательным. Здесь demo.
И поэтому я действительно хочу знать, почему это разрешено. Почему я хотел бы это сделать? Мне это действительно не имеет смысла. Мое рассуждение заключается в том, что, если это не имеет смысла, зачем это допускать?