Pourquoi C ++ a-t-il fait une distinction entre les globaux statiques (liaison interne) et les symboles dans un espace de noms sans nom (liaison externe, mais aucun moyen de s'y référer de l'extérieur de toute façon), lors de l'introduction de ce dernier?
Certaines de ces raisons sont-elles toujours valables ou y en a-t-il de nouvelles?
Y a-t-il des endroits où ils sont encore différents, mais la règle arbitraire que doivent être les unions anonymes globales (ou de portée d'espace de noms)
static
, et quelles sont-elles?Pour les points bonus, s'il n'y a plus de bonnes raisons pour qu'ils soient différents, y a-t-il une demande pour les rendre équivalents?
Lorsque C ++ a introduit les espaces de noms (C ++ 98), et spécifiquement les espaces de noms sans nom, les globaux statiques étaient obsolètes et inférieurs à la nouvelle chose dans un accès d'enthousiasme, bien que cela ait été inversé avec C ++ 11 :
Obsolescence du mot-clé statique… Pas plus?
Avant C ++ 11, les symboles avec liaison interne ne pouvaient pas être utilisés comme arguments de modèle: Pourquoi C ++ 03 nécessitait-il des paramètres de modèle pour avoir une liaison externe?