Warum hat C ++ bei der Einführung des letzteren zwischen statischen Globals (interne Verknüpfung) und Symbolen in einem unbenannten Namespace (externe Verknüpfung, aber keine Möglichkeit, von außen darauf zu verweisen) unterschieden?
Sind diese Gründe noch gültig oder gibt es neue?
Gibt es noch Orte, an denen sie sich noch unterscheiden, außer der willkürlichen Regel, dass anonyme globale Gewerkschaften (oder Namespace-Gewerkschaften) sein müssen
static
, und was sind sie?Wenn es für Bonuspunkte keine guten Gründe mehr gibt, sich zu unterscheiden, gibt es eine Aufforderung, sie gleichwertig zu machen?
Als C ++ Namespaces (C ++ 98) und speziell unbenannte Namespaces einführte, wurden statische Globals in einem Anfall von Begeisterung als veraltet und schlechter als das Neue eingestuft, obwohl dies mit C ++ 11 rückgängig gemacht wurde :
Verachtung des statischen Schlüsselworts… nicht mehr?
Vor C ++ 11 konnten Symbole mit interner Verknüpfung nicht als Vorlagenargumente verwendet werden: Warum erforderte C ++ 03 Vorlagenparameter für eine externe Verknüpfung?