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