Выбрать главу

 :: opt new параметры-new opt имя-типа-new инициализатор-new

 :: opt new параметры-new opt ( имя-типа ) инициализатор-new

параметры-new:

 ( список-выражений )

имя-типа-new:

 список-спецификаций-типа описатель-new opt

описатель-new:

 * список-спецификаций-cv opt описатель-new opt

 имя-класса :: список-спецификаций-cv opt описатель-new opt

 описатель-new opt [ выражение ]

инициализатор-new:

 ( список-инициализаторов opt )

выражение-освобождения:

 :: opt delete выражение-приведения

 :: opt delete [ ] выражение-приведения

постфиксное-выражение:

 первичное-выражение

 постфиксное-выражение [ выражение ]

 постфиксное-выражение ( список-выражений opt )

 имя-простого-типа ( список-выражений opt )

 постфиксное-выражение . имя

 постфиксное-выражение -› имя

 постфиксное-выражение ++

 постфиксное-выражение --

список-выражений:

 выражение-присваивания

 список-выражений , выражение-присваивания

первичное-выражение:

 литерал

 this

 :: идентификатор

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

 :: уточненное-имя

 ( выражение )

 имя

имя:

 идентификатор

 имя-функции-операции

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

 ~имя-класса

 уточненное-имя

уточненное-имя:

 уточняющее-имя-класса :: имя

литерал:

 целая константа

 символьная константа

 константа с плавающей точкой

 строка литералов

R.17.3 Описания

описания:

 спецификации-описания opt список-описателей opt;

 описание-asm

 определение-функции

 спецификация-связи

спецификация-описания:

 спецификация-класса-памяти

 спецификация-типа

 спецификация-fct

 спецификация-шаблона-типа

 friend

 typedef

спецификации-описания:

 спецификации-описания opt спецификация-описания

спецификация-класса-памяти:

 auto

 register

 static

 extern

спецификация-fct:

 inline

 virtual

спецификация-типа:

 имя-простого-типа

 спецификация-класса

 спецификация-перечисления

 спецификация-сложного-типа

 :: имя-класса

 const

 volatile

имя-простого-типа:

 полное-имя-класса

 уточненное-имя-типа

 char

 short

 int

 long

 signed

 unsigned

 float

 double

 void

спецификация-сложного-типа:

 служебное-слово-класса имя-класса

 служебное-слово-класса идентификатор

служебное-слово-класса:

 class

 struct

 union

уточненное-имя-типа:

 имя-typedef

 имя-класса :: уточненное-имя-типа

полное-имя-класса:

 уточненное-имя-класса

 :: уточненное-имя-класса

уточненное-имя-класса:

 имя-класса

 имя-класса :: уточненное-имя-класса

имя-перечисления:

 идентификатор

спецификация-перечисления:

 enum идентификатор opt { список-перечисления }

список-перечисления:

 элемент-перечисления

 список-перечисления , элемент-перечисления

элемент-перечисления:

 идентификатор

 идентификатор = выражение-константа

спецификация-связи:

 extern строка-литерал { список-описаний opt }

 extern строка-литерал описание

список-описаний:

 описание

 список-описаний описание

описание-asm:

 asm ( строка-литерал ) ;

R.17.4 Описатели

список-описаний:

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

 список-описаний , описатель-с-инициализатором

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

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

описатель:

 имя-в-описателе

 операция-ptr описатель

 описатель ( список-описаний-параметров ) список-спецификаций-cv opt

 описатель [ выражение-константа opt ]

 ( описатель )

операция-ptr:

 * список-спецификаций-cv opt

 & список-спецификаций-cv opt

 полное-имя-класса :: * список-спецификаций-cv opt

список-спецификаций-cv:

 const

 volatile

имя-в-описателе:

 имя

 имя-класса

 ~имя-класса

 имя-typedef

 уточненное-имя-типа

имя-типа:

 список-спецификаций-типа абстрактный-описатель opt

список-спецификаций-типа:

 спецификация-типа список-спецификаций-типа

абстрактный-описатель:

 операция-ptr абстрактный-описатель opt

 абстрактный-описатель opt ( список-описаний-параметров ) список-спецификаций_cv opt

 абстрактный-описатель opt [ выражение-константа opt ]

 ( абстрактный-описатель )

список-описаний-параметров:

 список-описаний-парам opt … opt