In the declaration for an entity, attributes appertaining to that
entity may appear at the start of the declaration and after the
declarator-id for that declaration.
A declaration occurs in a scope; the scope rules are
summarized in [basic.lookup].
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
[dcl.dcl] 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
the declaration.
In such cases,
the decl-specifier-seq shall introduce one or more names into
the program, or shall redeclare a name introduced by a previous
declaration.
If the value of the expression when
so converted is true, the declaration has no
effect.
Otherwise, the program is ill-formed, and the resulting
diagnostic message ([intro.compliance]) shall include the text of
the string-literal, if one is supplied,
except that characters not in the basic
source character set are not required to appear in
the diagnostic message.