Los espacios de nombre en C++ no son los mismos en absoluto que en .Net, ActionScript y Java (que comparten el mismo concepto). No son el mismo concepto en absoluto.
En C++, los espacios de nombres están allí principalmente para permitir la encapsulación de varios tipos y funciones en un contexto con nombre, el espacio de nombres. Solo se trata de nombrar y acceder a los nombres.
En .Net, ActionScript y Java, los espacios de nombres son más sobre módulos que nombres. Obligan al desarrollador a organizar su código en espacios de nombres separados que tratan cada uno de un propósito, el contexto. Como esos lenguajes son dinámicos (en lugar de estáticos como C++), los espacios de nombres permiten la vinculación tardía de los tipos al código, lo que hace que la compilación sea rápida porque solo debe tener el nombre canónico (nombre y espacio de nombres) del tipo que desea utilizar en un archivo .
En C++ no hay comandos de módulo, solo unidades de compilación que no se conocen entre sí.
Ahora, sobre su uso, a menudo es una buena práctica usar un espacio de nombres en C++ para encapsular un módulo (ejecutable o dll/so), algún código de implementación o cualquier subparte útil del código. Eso dice que la mayoría de las veces es mejor no tener una jerarquía de espacios de nombres demasiado profunda. Por razones históricas, muchos desarrolladores de C++ ni siquiera sabían por mucho tiempo que C++ tenía una característica llamada espacio de nombres. Ahora, lo que llamamos "C++ moderno" sugiere que usted lo sepa, pero todavía se usa mucho código antiguo de C++ y tal vez eso es lo que está viendo cuando habla de espacios de nombres.
Los espacios de nombres en C++ son una característica diferente que en otros idiomas, lo que hace que su escritura sea más o menos aparente en el código. De hecho, es tan diferente que no lo administrarás del mismo modo, lo que hace que el código sea realmente difícil de entender cuando vienes de .Net. Así que no debería tomar espacios de nombres de la misma manera entre los idiomas, son conceptos realmente diferentes.
Me pregunto qué código estás viendo. Todo lo que hago, excepto el "código principal", está en un espacio de nombres. – GManNickG
@GMan: Bueno, como un ejemplo, [a Scott Meyers no le interesan demasiado] (http://groups.google.com/group/comp.lang.c++moderated/msg/f7e901ce6e8a86c0) (o, en al menos no lo hizo en el momento en que escribió eso, hace nueve años). –
Meyers no se quejaba de los conceptos de espacio de nombres, solo acerca de los compromisos (búsqueda de Koenig) necesarios para actualizarlos en el lenguaje. –