May 2003
Intermediate to advanced
808 pages
32h 24m
English
type — Type specifiers
type-specifier ::= simple-type-specifier | class-specifier | enum-specifier |
elaborated-type-specifier | cv-qualifier
simple-type-specifier ::= [::] [nested-name ::] type-name |
[::] nested-name :: template template-id | bool | char | double | float | int |
long | short | signed | unsigned | void | wchar_t
type-name ::= class-name | enum-name | typedef-name
typedef-name ::= identifier
elaborated-type-specifier ::= class-key [::] [nested-name ::] identifier |
class-key [::] [nested-name ::] [template] template-id |
enum [::] [nested-name ::] identifier | typename [::] nested-name :: identifier |
typename [::] nested-name :: [template] template-id
Type specifiers are used throughout C++: in declarations, type
casts, new expressions, and so on.
Although the syntax rules shown here are quite flexible, the semantic
rules impose many limits. For example, the simple syntax rules permit
short long as a type (specifically, as a decl-specifier-seq; see
declaration), but that combination of type
specifiers is not permitted. See Chapter
2 for details about semantics for valid type specifiers.
class, const, declaration, declarator, enum, identifier, struct, template, typedef, typename, union, volatile, Chapter 2