The 
static specifier shall be applied only
to the declaration of a variable or function,
to a structured binding declaration (
[dcl.struct.bind]), or
to the declaration of an anonymous union (
[class.union.anon])
.There can be no
static function declarations within a block, nor any
static function parameters
.A 
static specifier used in
the declaration of a variable declares the variable to have static storage
duration (
[basic.stc.static]), unless accompanied by the
thread_local specifier, which declares the variable to have thread
storage duration (
[basic.stc.thread])
.A 
static specifier can be
used in declarations of class members; 
[class.static] describes its
effect
.For the linkage of a name declared with a 
static specifier,
see 
[basic.link].