Vous êtes essentiellement en se référant à la section $7.3.1.1/2 de la Norme C++,
L'utilisation du mot-clé static est
obsolète lors de la déclaration d'objets dans un
espace de noms de la portée; le
sans nom d'espace de noms fournit un supérieur
alternative.
Sans nom d'espace de noms est supérieure à mot-clé static, principalement parce que le mot-clé static
ne s'applique qu'aux variables déclarations et les fonctions, de ne pas définis par l'utilisateur types.
Le code suivant est valide en C++
//legal code
static int sample_function() { /* function body */ }
static int sample_variale;
Mais ce code n'est PAS valide:
//illegal code
static class sample_class { /* class body */ };
static struct sample_struct { /* struct body */ };
Donc la solution est, sans nom d'espace de noms, qui est-ce,
//legal code
namespace
{
class sample_class { /* class body */ };
struct sample_struct { /* struct body */ };
}
Espérons qu'il explique pourquoi unnamed-namespace
est supérieure à static
.
Aussi, notez que l'utilisation du mot-clé static est déconseillé lors de la déclaration d'objets dans un espace de noms portée (selon la Norme).
0 votes
Toutefois, les espaces de noms non nommés ne remplacent pas suffisamment les espaces de noms espace nominatif statique selon le comité de normalisation. Il existe encore quelques cas où les espaces de noms non nommés échouent et où seuls les espaces de noms non nommés peuvent être utilisés.
static
œuvre.