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