Notará que las directivas using están presentes en casi todos los ficheros cpp de este libro, normalmente en la forma:
using namespace std;
Como std es el espacio de nombres que encierra la Librería Estándar de C++ al completo, esta directiva using en particular permite que se puedan usar los nombres de la Librería Estándar de C++ sin calificarlos. 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 pérdida 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. Así, si empieza a poner directivas using en los ficheros de cabecera, es muy fácil acabar «desactivando» los espacios de nombres prácticamente en todas partes, y por tanto, neutralizando los efectos beneficiosos de los espacios de nombres.
En resumen: no ponga directivas using en ficheros de cabecera.