Есть ли конкретная причина, по которой в C ++ не разрешены объявления вложенных пространств имен?
Стандарт не допускает такой код:
namespace Hello::World {
//Things that are in namespace Hello::World
}
и вместо этого требует
namespace Hello { namespace World {
//Things that are in namespace Hello::World
}}
Каково обоснование? Было ли это просто не продумано в то время, или есть какая-то конкретная причина, по которой это не включено?
Кажется, что первый синтаксис более прямо выражает, в каком пространстве имен он должен находиться, поскольку объявление имитирует фактическое использование пространства имен в более позднем коде. Это также приводит к меньшему отступу, если вам не повезло использовать инструмент для отступа «тупой» скобки.