> { список-инициализаторов , >opt }
>спецификация-класса:
> заголовок-класса { список-членов >opt }
>заголовок-класса:
> служебное-слово-класса идентификатор >opt спец-базовых >opt
> служебное-слово-класса имя-класса спец-базовых >opt
>служебное-слово-класса:
> class
> struct
> union
>список-членов:
> описание-члена список-членов >opt
> спецификация-доступа : список-членов >opt
>описание-члена:
> спецификации-описания >opt список-описателей-членов >opt ;
> определение-функции ; >opt
> уточненное-имя ;
>список-описателей-членов:
> описатель-члена
> список-описателей-членов , описатель-члена
>описатель-члена:
> описатель спецификация-чистой >opt
> идентификатор >opt : выражение-константа
>спецификация-чистой:
> = 0
>список-базовых:
> спецификация-базовых
> список-базовых , спецификация-базовых
>спецификация-базовых:
> полное-имя-класса
> virtual спецификация-доступа >opt полное-имя-класса
> спецификация-доступа virtual >opt полное-имя-класса
>спецификация-доступа:
> private
> protected
> public
>имя-функции-преобразования:
> operator имя-типа-преобразования
>имя-типа-преобразования:
> список-спецификаций-типа операция-ptr >opt
>инициализатор-ctor:
> : список-инициализаторов-членов
>список-инициализаторов-членов:
> инициализатор-члена
> инициализатор-члена , список-инициализаторов-члена
>инициализатор-члена:
> полное-имя-класса ( список-выражений >opt )
> идентификатор
>имя-функции-оператор:
> operator операция
>операция : один из
> new delete
> + - * / % ^& | ~
> ! = ‹ › += -= *= /= %=
> ^= &= |= ‹‹ ›› ››= ‹‹= == !=
> ‹= ›= && || ++ -- , -›* -›
> () []
>оператор:
> помеченный-оператор
> оператор-выражение
> составной-оператор
> выбирающий-оператор
> оператор-цикла
> оператор-перехода
> оператор-описания
>помеченный-оператор:
> идентификатор : оператор
> case выражение-константа : оператор
> default : оператор
>оператор-выражение:
> выражение opt;
>составной-оператор:
> { список-операторов >opt }
>список-операторов:
> оператор
> список-операторов оператор
>выбирающий-оператор:
> if ( выражение ) оператор
> if ( выражение ) оператор else оператор
> switch ( выражение ) оператор
>оператор-цикла:
> while ( выражение ) оператор
> do оператор while ( выражение )
> for ( оператор-иниц выражение >opt ; выражение >opt ) оператор
>оператор-иниц:
> оператор-выражение
> оператор-описание
>оператор-перехода:
> break ;
> continue ;
> return выражение >opt ;
> goto идентификатор ;
>оператор-описания:
> описание
>#define идентификатор строка-лексем
>#define идентификатор ( идентификатор , … , идентификатор ) строка-лексем
>#include "имяфайла"
>#include ‹имяфайла›
>#line константа "имяфайла" >opt
>#undef идентификатор
>условное:
> часть-if части-elif >opt часть-else >opt строка-endif
>часть-if:
> строка-if текст
>строка-if:
> # if выражение-константа
> # ifdef идентификатор
> # ifndef идентификатор
>части-elif:
> строка-elif текст
> части-elif строка-elif текст
>строка-elif:
> # elif выражение-константа
>часть-else:
> строка-else текст
>строка-else:
> # else
>строка-endif:
> # endif
>описание-шаблона-типа:
> template ‹ список-параметров-шаблона-типа › описание
>список-параметров-шаблона-типа:
> параметр-шаблона-типа
> список-параметров-шаблона-типа , параметр-шаблона-типа
>параметр-шаблона-типа:
> параметр-типа
> описание-параметра
>параметр-типа:
> class идентификатор
>имя-шаблонного-класса:
> имя-шаблона-типа ‹ список-парам-шаблона-типа ›
>список-парам-шаблона-типа:
> парам-шаблона-типа
> список-парам-шаблона-типа , парам-шаблона-типа
>парам-шаблона:
> выражение
> имя-типа
R.17.9 Обработка особых ситуаций
>проверяемый-блок:
> try составной-оператор список-обработчиков
>список-обработчиков:
> обработчик список-обработчиков >opt
>обработчик:
> catch ( описание-особой-ситуации ) составной-оператор
>описание-особой-ситуации:
> список-спецификаций-типа описатель
> список-спецификаций-типа абстрактный-описатель
> список-спецификаций-типа
> …
>выражение-запуска:
> throw выражение >opt
>спецификация-особой-ситуации:
> throw ( список-типа >opt )
>список-типа:
> имя-типа
> список-типа , имя-типа