Table 2 A partial, slightly-simplified grammar for a decl-specifier in C++

decl-specifier =
storage-class-specifier |
function-specifier |
type-specifier |
"friend" |
"typedef" .

storage-class-specifier =
"auto" | "register" | "static" | "extern" | "mutable" .

function-specifier =
"inline" | "virtual" | "explicit".

type-specifier =
cv-qualifier |
simple-type-specifier |
class-specifier |
enum-specifier |
elaborated-type-specifier .

cv-qualifier =
"const" | "volatile" .

simple-type-specifier =
"bool" | "char" | "int" | "wchar_t" |
"double" | "float" |
"void"
"long" | "short" |
"signed" | "unsigned" |
type-name .

type-name =
class-name | enum-name | typedef-name .