Programar em C++/Namespace
O propósito dos namespace é localizar os identifiers (os nomes) por forma a evitar que haja apenas um, para evitar colisões.
Por exemplo eu poderia criar uma função com um determinado nome e depois vir a saber que esse mesmo nome existia na biblioteca. E isto pode ocorrer bem freqüentemente quando temos vários programadores contribuindo para o mesmo projeto e ainda mais quando se recorre a bibliotecas para usar código criado por outros.
O que o namespace permite é continuar a termos o mesmo nome mas irá fazer a diferenciação pela detecção do contexto de aplicação para cada nome.