Зачем нужно неименованное пространство имен?

1,00
р.
какую пользу можно извлечь из подобной конструкции:
namespace{ int i }

Ответ
Польза та же, что и при использовании ключевого слова static — избегание проблем с ODR (one definition rule). Если, к примеру, в заголовке у Вас будет int i , тогда при подключении в 2 и более .cpp файла Вы получите ошибку линковки — один и тот же символ определён дважды. Если же Вы напишете static int i , то i станет локальным для каждого объектного файла, в который i попадает — т.е. в каждом cpp будет свой i, в отличии от первого варианта, где i один на всю программу. То же самое происходит когда Вы пишите
namespace{ int i }
i получает внутреннее связывание и, следовательно, проблемы с ODR не будет.