A declaration that declares a function
or defines a class, namespace, template, or function also has one or
more scopes nested within it.
These nested scopes, in turn, can have
declarations nested within them.
Unless otherwise stated, utterances in
about components in, of, or contained by a
declaration or subcomponent thereof refer only to those components of
the declaration that are not
nested within scopes nested within
If the value of the expression when
so converted is true
, the declaration has no
static_assert(sizeof(int) == sizeof(void*), "wrong pointer size");
— end example
Syntactic components beyond those found in the general form of
declaration are added to a function declaration to make a
An object declaration, however, is also
a definition unless it contains the extern
specifier and has no
An object definition causes storage of appropriate size and alignment to be reserved and
any appropriate initialization ([dcl.init]
) to be done.