Ein Merkmal von C++ ist die Möglichkeit, unbenannte (anonyme) Namespaces zu erstellen, etwa so:
namespace {
int cannotAccessOutsideThisFile() { ... }
} // namespace
Man sollte meinen, dass eine solche Funktion nutzlos wäre - da man den Namen des Namensraums nicht angeben kann, ist es unmöglich, von außen auf irgendetwas innerhalb des Namensraums zuzugreifen. Aber diese unbenannten Namespaces sont in der Datei, in der sie erstellt wurden, zugänglich sind, als ob Sie eine implizite Verwendungsklausel für sie hätten.
Meine Frage ist, warum oder wann wäre dies der Verwendung statischer Funktionen vorzuziehen? Oder sind sie im Wesentlichen zwei Möglichkeiten, genau die gleiche Sache zu tun?