declaration:
decl-specifiersopt declarator-listopt ;
asm-declaration
function-definition
template-declaration
linkage-specification
decl-specifier:
storage-class-specifier
type-specifier
fct-specifier
friend
typedef
decl-specifiers:
decl-specifiersopt decl-specifier
storage-class-specifier:
auto
register
static
extern
fct-specifier:
inline
virtual
type-specifier:
simple-type-name
class-specifier
enum-specifier
elaborated-type-specifier
const
volatile
simple-type-name:
complete-class-name
qualified-type-name
char
short
int
long
signed
unsigned
float
double
void
__segment
elaborated-type-specifier:
class-key rmodelopt identifier
class-key rmodelopt class-name
enum-name
class-key:
class
struct
union
qualified-type-name:
typedef-name
class-name : : qualified-type-name
complete-class-name:
qualified-class-name
: : qualified-class-name
qualified-class-name:
class-name
class-name : : qualified-class-name
enum-specifier:
enum identifieropt { enum-listopt }
enum-list:
enumerator
enum-list , enumerator
enumerator:
identifier
identifier = constant-expression
constant-expression:
conditional-expression
linkage-specification:
extern string-literal { declaration-listopt }
extern string-literal declaration
declaration-list:
declaration
declaration-list declaration