[dcl.type.simple] (original) (raw)
[ Note
:
An injected-class-name is never interpreted as a template-namein contexts where class template argument deduction would be performed ([temp.local]).
— end note
]
The othersimple-type-specifiersspecify either a previously-declared type, a type determined from an expression, or one of the fundamental types ([basic.fundamental]).
Table 14 summarizes the valid combinations ofsimple-type-specifiersand the types they specify.
Table 14: simple-type-specifiers and the types they specify [tab:dcl.type.simple]
| 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” |
When multiple simple-type-specifiers are allowed, they can be freely intermixed with other decl-specifiers in any order.
[ Note
:
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
]