La norma no permite código como este:¿Existe alguna razón específica para que las declaraciones anidadas del espacio de nombres no estén permitidas en C++?
namespace Hello::World {
//Things that are in namespace Hello::World
}
y en su lugar requiere
namespace Hello { namespace World {
//Things that are in namespace Hello::World
}}
¿Cuál es la razón? ¿Simplemente no se pensó en ese momento o hay una razón específica por la que no está incluido?
Parece que la primera sintaxis expresa más directamente en qué espacio de nombres se supone que debe estar, ya que la declaración imita el uso real del espacio de nombres en el código posterior. También da como resultado menos sangrado si tiene la mala suerte de estar usando una herramienta de sangrado de conteo de puntales "tonta".
Mi único pensamiento sobre este tema es que este tipo de declaraciones se asemeja de cosas dentro de una clase. Me pregunto si habría algunas esquinas extrañas de especificar un espacio de nombres de clase frente a un espacio de nombres de espacios de nombres que se rompería con la sintaxis propuesta. – Omnifarious
posible duplicado de [Declaración de múltiples espacios de nombres en C++] (http://stackoverflow.com/questions/3589204/multiple-namespace-declaration-in-c) – AnT
@AndreyT: No estoy preguntando si es legal o no, sabe que es ilegal Pregunto ** por qué ** es ilegal. –