Direi che il secondo utilizzo è piuttosto raro, almeno nel codice che ho visto finora (e ho visto molto C++ di codice). Potresti spiegare qual è il ragionamento alla base della seconda tecnica?
Generalmente si utilizza uno spazio dei nomi anonimo in un file di implementazione C++ per ottenere la stessa cosa che farebbe "statico" in C (o C++, ma lo sorveglieremo), vale a dire limitare la visibilità dei simboli a l'attuale unità di traduzione. Il typedef in realtà non produce simboli che vengono esportati per il linker in modo che non creino nulla di "concreto" nel senso di qualsiasi cosa concreta a cui si possa creare un collegamento.
La mia raccomandazione? Vorrei andare con la prima notazione. Il secondo aggiunge una complicazione inutile e, secondo me, non ti compra nulla.
fonte
2009-12-05 14:49:01
Hmm Ho pensato che lo spazio dei nomi anonimo avesse scope sull'intero contenuto del file, inclusi altri spazi dei nomi nel file, il che renderebbe lo stesso identico a mettere le cose in scope del file comunque (eccetto per le regole del linkage esterno). Non ero sicuro che le regole del linkage esterno sarebbero rilevanti per lo zucchero sintattico come typedef e l'uso. – Jay
Hai ragione, posizionando la dichiarazione using nello spazio dei nomi anonimo o no non cambia nulla. Mi sono sbagliato. Ho modificato questo. – Thomas