14.2 Описания

описание: спецификаторы_описания opt список_описателей opt ; описание_имени asm-описание

описание_имени: сост идентификатор ; enum идентификатор ;

сост:

class struct union

asm-описание: asm ( строка ) ;

спецификаторы_описания: спецификатор_описания спецификаторы_описания opt

спецификатор_описания: спецификатор_класса_памяти спецификатор_типа спецификатор_функции typedef friend

спецификатор_типа: простое_имя_типа спецификатор_класса спецификатор_enum усложненный_спецификатор_типа const

спецификатор_класса_памяти: auto extern register static

спецификатор_функции: inline overload virtual

усложненный_спецификатор_типа: ключ typedef-имя ключ идентификатор

ключ: class struct union enum

список_описателей: иниц-описатель иниц-описатель , список_описателей

иниц-описатель: описатель инициализатор opt

описатель: оп_имя ( описатель ) * const opt описатель amp; const opt описатель

описатель ( список_описаний_параметров ) описатель [ константное_выражение opt ]

оп_имя: простое_оп_имя typedef-имя :: простое_оп_имя

простое_оп_имя: идентификатор typedef-имя ~ typedef-имя имя_функции_операции имя_функции_преобразования

имя_функции_операции: operator операция

имя_функции_преобразования operator тип

список_описаний_параметров: список_описаний_прм opt ... opt

список_описаний_прм: список_описаний_прм , описание_параметра описание_параметра

описание_параметра: спецификаторы_описания описатель = выражение спецификаторы_описания описатель = константное_выражение спецификаторы_описания абстракт_описатель = выражение спецификаторы_описания абстракт_описатель = выражение

спецификатор_класса: заголовок_класса (* список_членов opt *) заголовок_класса (* список_членов opt public : список_членов opt *)

заголовок_класса: сост идентификатор opt сост идентификатор opt : public opt typedef-имя

список_членов: описание_члена список_членов opt

описание_члена: спецификаторы_описания opt описатель_члена инициализатор opt ; определение_функции opt

описатель_члена: описатель идентификатор opt : константное_выражение

инициализатор: = выражение = (* список_инициализаторов *) = (* список_инициализаторов , *) ( список_выражений )


список_инициализаторов: выражение список_инициализаторов , список_инициализаторов (* список_инициализаторов *)

спецификатор_enum: enum идентификатор opt (* enum-список *)

enum-список: перечислитель enum-список , перечислитель

перечислитель: идентификатор идентификатор = константное_выражение