Sans nom/anonyme espaces de noms vs statique fonctions

Une fonction de C++ est la possibilité de créer sans nom (anonyme) des espaces de noms, comme suit:

namespace {
    int cannotAccessOutsideThisFile() { ... }
} //namespace

On pourrait penser qu'une telle fonctionnalité serait inutile, puisque vous ne pouvez pas spécifier le nom de l'espace de noms, il est impossible d'accéder à quoi que ce soit dans de l'extérieur. Mais ces espaces de noms sans nom sont accessibles dans le fichier, elles sont créées, comme si vous aviez un implicite à l'aide de la clause d'eux.

Ma question est, pourquoi et quand cela serait-il préférable à l'utilisation des fonctions statiques? Ou sont-ils essentiellement deux façons de faire exactement la même chose?

InformationsquelleAutor Head Geek | 2008-09-30