Если пространства имен могут иметь только глобальную область, как могут существовать вложенные пространства имен?

#c #nested #namespaces

#c #вложенные #пространства имен

Вопрос:

Я прочитал эти 2 фрагмента кода и их описания и подумал, что они конфликтуют друг с другом.

  1. Определение пространства имен может отображаться только в глобальной области.
 void f()
{
    namespace space1{

    }
}
// So this is not allowed as space1 is local to f()
 
  1. Пространства имен могут быть вложенными
 namespace namespace1{
    int i;
    namespace namespace2{
       int j;
    }
}
 

В этом случае пространство имен2 не будет локальным для пространства имен1, что приведет к ошибке?

Комментарии:

1. Пожалуйста, укажите, откуда вы цитируете.

2. Неверно, что пространства имен могут быть только в глобальной области.

3. «Глобальная область» — это действительно глобальная область пространства имен. Пространства имен могут быть определены в любой области пространства имен.

Ответ №1:

Потому что ваша цитата неверна. Более правильным описанием было бы:

Определения пространств имен разрешены только в области пространства имен, включая глобальную область.