список-описаний-парам , …
список-описаний-парам:
описание-параметра
список-описаний-парам , описание-параметра
описание-параметра:
спецификации-описания описатель
спецификации-описания описатель = выражение
спецификации-описания абстрактный-описатель opt
спецификации-описания абстрактный-описатель opt = выражение
определение-функции:
спецификации-описания opt описатель инициализатор-ctor тело-функции
тело-функции:
составной-оператор
инициализатор:
= выражение-присваивания
= { список-инициализаторов , opt }
( список-выражений )
список-инициализаторов:
выражение-присваивания
список-инициализаторов , выражение-присваивания
{ список-инициализаторов , opt }
R.17.5 Описания класса
спецификация-класса:
заголовок-класса { список-членов 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
+ - * / % ^& | ~
! = ‹ › += -= *= /= %=
^= &= |= ‹‹ ›› ››= ‹‹= == !=
‹= ›= && || ++ -- , -›* -›
() []
R.17.6 Операторы
оператор:
помеченный-оператор
оператор-выражение
составной-оператор
выбирающий-оператор
оператор-цикла
оператор-перехода
оператор-описания
помеченный-оператор:
идентификатор : оператор
case выражение-константа : оператор
default : оператор
оператор-выражение:
выражение opt;
составной-оператор:
{ список-операторов opt }
список-операторов:
оператор
список-операторов оператор
выбирающий-оператор:
if ( выражение ) оператор
if ( выражение ) оператор else оператор
switch ( выражение ) оператор
оператор-цикла:
while ( выражение ) оператор
do оператор while ( выражение )
for ( оператор-иниц выражение opt ; выражение opt ) оператор
оператор-иниц:
оператор-выражение
оператор-описание
оператор-перехода:
break ;
continue ;
return выражение opt ;
goto идентификатор ;
оператор-описания:
описание
R.17.7 Препроцессор
#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
R.17.8 Шаблоны типа
описание-шаблона-типа:
template ‹ список-параметров-шаблона-типа › описание
список-параметров-шаблона-типа:
параметр-шаблона-типа
список-параметров-шаблона-типа , параметр-шаблона-типа