9 Declarations [dcl]

9.3 Declarators [dcl.decl]


9.3.1 General [dcl.decl.general]

9.3.2 Type names [dcl.name]

9.3.3 Ambiguity resolution [dcl.ambig.res]

9.3.4 Meaning of declarators [dcl.meaning]

9.3.4.1 General [dcl.meaning.general]

9.3.4.2 Pointers [dcl.ptr]

9.3.4.3 References [dcl.ref]

9.3.4.4 Pointers to members [dcl.mptr]

9.3.4.5 Arrays [dcl.array]

9.3.4.6 Functions [dcl.fct]

9.3.4.7 Default arguments [dcl.fct.default]


9.3.1 General [dcl.decl.general]

A declarator declares a single variable, function, or type, within a declaration.
The init-declarator-list appearing in a simple-declaration is a comma-separated sequence of declarators, each of which can have an initializer.
In all contexts, a declarator is interpreted as given below.
Where an abstract-declarator can be used (or omitted) in place of a declarator ([dcl.fct], [except.pre]), it is as if a unique identifier were included in the appropriate place ([dcl.name]).
The preceding specifiers indicate the type, storage duration, linkage, or other properties of the entity or entities being declared.
Each declarator specifies one entity and (optionally) names it and/or modifies the type of the specifiers with operators such as * (pointer to) and () (function returning).
[Note 1: 
An init-declarator can also specify an initializer ([dcl.init]).
— end note]
Each init-declarator of a simple-declaration or member-declarator of a member-declaration is analyzed separately as if it were in a simple-declaration or member-declaration by itself.
[Note 2: 
A declaration with several declarators is usually equivalent to the corresponding sequence of declarations each with a single declarator.
That is, T D1, D2, ... Dn; is usually equivalent to T D1; T D2; ... T Dn; where T is a decl-specifier-seq and each Di is an