За пределами тела класса (где за определением функции необязательно может следовать один ;
), определение функции завершается концом составного оператора - то есть закрытия }
.В области имен пространства следующий токен после закрывающей скобки определения функции должен составлять часть следующего объявления.
В C ++ 03 нет такой вещи как empty-объявление , поэтому размещение ;
недопустимо, хотя и допускается многими реализациями.(Хотя синтаксис C ++ 03 simple-объявление , по-видимому, позволяет пропустить decl-specier-seq и пропущенный init-Declarator-list ,оставляя только ;
, есть семантическое правило, запрещающее исключать обе необязательные части, выраженное в 7 [dcl.dcl] / 3 стандарта.)
В простом объявлениинеобязательный список инициализаторов-объявлений может быть опущен только при объявлении класса (раздел 9) или перечисления (7.2), то есть когда decl-specier-seq содержит либо спецификатор класса , уточненный спецификатор типа с ключом класса (9.1) или спецификатор перечисления .
C ++ 0x представляет empty-декларацию (которая является декларацией без эффекта), так что вы можете иметь столько мошеннических ;
в области имен, сколько пожелаете, хотянет веских причин для этого.