4.7.5. Espacios de nombres en los ficheros de cabecera

Notará que las directivas using están presentes en casi todos los ficheros cpp de esto libro, normalmente en la forma:

using namespace std;

Como std es el espacio de nombres que encierra la librería Estándar C++ al completo, esta directiva using en particular permite que se puedan usar los nombres de la librería Estándar C++. Sin embargo, casi nunca verá una directiva using en un fichero de cabecera (al menos, no fuera de un bloque). La razón es que la directiva using elimina la protección de ese espacio de nombres en particular, y el efecto dura hasta que termina la unidad de compilación actual. Si pone una directiva using (fuera de un bloque) en un fichero de cabecera, significa que esta perdida de «protección del espacio de nombres» ocurrirá con cualquier fichero que incluya este fichero de cabecera, lo que a menudo significa otros ficheros de cabecera, es muy fácil acabar «desactivando» los espacios de nombres en todos sitios, y por tanto, neutralizando los efectos beneficiosos de los espacios de nombres.

En resumen: no ponga directivas using en ficheros de cabecera.