Где в стандарте C++ указано, что способ определения члена переменной пространства имен вне области пространства имен является использование extern
спецификатор в объявлении члена переменной?Определение переменной-члена пространства имен за пределами пространства имен
§3.4.1/14 упоминает об этом «Мимоходом»:
Если переменный член пространства имен определен вне сферы действия пространства имен тогда любое имени, которое появляется в определении член (после идентификатора-декларатора) выглядит так, как если бы определение произошло в его пространстве имен. [Пример:
namespace N {
int i = 4;
extern int j;
}
int i = 2;
int N::j = i; // N::j == 4
** 3.1/2 ** объясняет, как «extern» является способом сделать объявление переменной, которое также не является определением. Это применяется независимо от того, какое пространство имен имеет это объявление, будь то глобальное или иное. –