Ich würde sagen, dass die zweite Verwendung ziemlich ungewöhnlich ist, zumindest in dem Code, den ich bisher gesehen habe (und ich habe ziemlich viel C++ Code gesehen). Können Sie erklären, was der Grund für die zweite Technik ist?
Normalerweise verwenden Sie einen anonymen Namespace in einer C++ - Implementierungsdatei, um das gleiche zu erreichen, was "statisch" in C tun würde (oder C++, aber wir werden es beschönigen), nämlich die Sichtbarkeit der Symbole zu beschränken die aktuelle Übersetzungseinheit. Der typedef erzeugt keine Symbole, die exportiert werden, damit der Linker sie sehen kann, da sie nichts "konkretes" im Sinne von etwas Konkretem erzeugen, mit dem Sie verlinken könnten.
Meine Empfehlung? Ich würde mit der ersten Notation gehen. Der zweite fügt eine unnötige Komplikation hinzu und kauft meiner Meinung nach nichts.
Hmm Ich dachte, dass der anonyme Namespace Geltungsbereich über den gesamten Dateiinhalt hatte, einschließlich anderer Namespaces in der Datei, was ihn identisch machen würde, Dinge in den Dateibereich zu setzen (außer für externe Verknüpfungsregeln). Ich war mir nicht sicher, ob externe Verknüpfungsregeln für syntaktischen Zucker wie typedefs und using relevant sein würden. – Jay
Sie haben Recht, die using-Deklaration in den anonymen Namespace zu platzieren oder nicht, ändert nichts. Ich lag falsch. Ich habe das bearbeitet. – Thomas