Почему "лишняя" точка с запятой не влияет на выполнение программы?

Есть вот такой код:

#include <iostream>

;// "лишняя" точка с запятой

int main()
{
   std::cout << 1;
}

Почему такой код скомпилируется? Я знаю, что в теле функции ";" является null-statement, но в данном случае эон таковым не является, т. к. за телом функции никаких statement'ов быть не может. Объясните мне пожалуйста.


Ответы (1 шт):

Автор решения: HolyBlackCat

Объявления тоже бывают пустые.

[dcl.pre]/1

empty-declaration:
    ; 
→ Ссылка