9 Declarations [dcl]

9.2 Specifiers [dcl.spec]

9.2.9 Type specifiers [dcl.type]

9.2.9.3 Simple type specifiers [dcl.type.simple]

The component name of a type-name is the first name in it.
A placeholder-type-specifier is a placeholder for a type to be deduced ([dcl.spec.auto]).
A type-specifier is a placeholder for a deduced class type ([dcl.type.class.deduct]) if
The nested-name-specifier or splice-specifier, if any, shall be non-dependent and the simple-template-name, pack-index-template-name, or splice-specifier shall designate a deducible template.
A deducible template is
[Note 1: 
An injected-class-name is never interpreted as a template-name in contexts where class template argument deduction would be performed ([temp.local]).
โ€” end note]
The other simple-type-specifiers specify either a previously-declared type, a type determined from an expression, or one of the fundamental types ([basic.fundamental]).
Table 17 summarizes the valid combinations of simple-type-specifiers and the types they specify.
Table 17simple-type-specifiers and the types they specify [tab:dcl.type.simple]
Specifier(s)
Type
the type named
the type as defined in [temp.names]
the type as defined in [dcl.type.decltype]
the type as defined in [dcl.type.pack.index]
the type as defined in [dcl.spec.auto]
the type as defined in [dcl.type.class.deduct]
the type as defined in [dcl.type.splice]
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โ€
When multiple simple-type-specifiers are allowed, they can be freely intermixed with other decl-specifiers in any order.
[Note 2: 
It is implementation-defined whether objects of char type are represented as signed or unsigned quantities.
The signed specifier forces char objects to be signed; it is redundant in other contexts.
โ€” end note]