simple-type-specifier: nested-name-specifier type-name nested-name-specifier template simple-template-id decltype-specifier placeholder-type-specifier nested-name-specifier template-name char char8_t char16_t char32_t wchar_t bool short int long signed unsigned float double void
type-name: class-name enum-name typedef-name
typename nested-name-specifier template simple-template-idwhere the nested-name-specifier (if any) is non-dependent and the template-name of the simple-template-id names a deducible template.
| Specifier(s) | Type | 
| type-name | the type named | 
| simple-template-id | the type as defined in [temp.names] | 
| decltype-specifier | the type as defined in [dcl.type.decltype] | 
| placeholder-type-specifier | the type as defined in [dcl.spec.auto] | 
| template-name | the type as defined in [dcl.type.class.deduct] | 
| char | “char” | 
| unsigned char | “unsigned char” | 
| signed char | “signed char” | 
| char8_t | “char8_t” | 
| char16_t | “char16_t” | 
| char32_t | “char32_t” | 
| bool | “bool” | 
| unsigned | “unsigned int” | 
| unsigned int | “unsigned int” | 
| signed | “int” | 
| signed int | “int” | 
| int | “int” | 
| unsigned short int | “unsigned short int” | 
| unsigned short | “unsigned short int” | 
| unsigned long int | “unsigned long int” | 
| unsigned long | “unsigned long int” | 
| unsigned long long int | “unsigned long long int” | 
| unsigned long long | “unsigned long long int” | 
| signed long int | “long int” | 
| signed long | “long int” | 
| signed long long int | “long long int” | 
| signed long long | “long long int” | 
| long long int | “long long int” | 
| long long | “long long int” | 
| long int | “long int” | 
| long | “long int” | 
| signed short int | “short int” | 
| signed short | “short int” | 
| short int | “short int” | 
| short | “short int” | 
| wchar_t | “wchar_t” | 
| float | “float” | 
| double | “double” | 
| long double | “long double” | 
| void | “void” |