Я согласен на заявки. Большинство людей, которые используют несколько уровней пространств имен (по моему опыту), происходят из фона Java или .NET, где шум значительно меньше. Я считаю, что хорошие префиксы классов могут заменять несколько уровней пространств имен.
Но я видел хорошее использование нескольких уровней пространства имен в boost (и других библиотеках). Все находится в пространстве имен boost, но библиотекам разрешено (рекомендуется?) Находиться в их собственном пространстве имен. Например - пространство имен boost :: this_thread. Это позволяет такие вещи, как ...
boost::this_thread::get_id()
boost::this_thread::interruption_requested()
"this_thread" - это просто пространство имен для коллекции бесплатных функций. Вы могли бы сделать то же самое с классом и статическими функциями (то есть способом определения свободной функции в Java), но зачем делать что-то неестественное, если у языка есть естественный способ сделать это?