Declaring names in appropriate namespaces reduces the number of names found during lookup, decreasing the risk of name clash and of surprising name lookup. 

This rule raises an issue when a name in the global namespace has external linkage and therefore can be accessed from outside a particular translation unit.

Some names have to be declared in the global namespace, and are excluded from this rule:

* ``++main++`` (or its variants)
* Overloads of the global ``++new++`` & ``++delete++`` operators

In addition, no issue is raised for function definitions because they can only be accessed from different translation units through a forward declaration that will be flagged.
