In the definition of a function that is a member of namespace
N,
a name used after the function's
declarator-id
shall be
declared before its use in the block in which it is used or in one of
its enclosing blocks (
[stmt.block]) or shall be declared before its
use in namespace
N or, if
N is a nested namespace, shall
be declared before its use in one of
N's enclosing namespaces
.