Я пытаюсь понять, что означает следующая цитата (3.4.3/3 N3797):
имена, следующие за квалифицированным идентификатором, ищутся в области класса члена или пространстве имен.
namespace A
{
class C
{
public:
static const int a=7;
static int b;
};
}
int A::C::b=a; //7
Область действия static int b;
состоит только из декларативной области, за которой следует точка объявления b
. Фактически:
Потенциальная область действия имени, объявленного в классе, состоит не только из декларативной области, следующей за точкой объявления имени, но также из всех тел функций, аргументов по умолчанию, спецификаций исключений и инициализаторов скобок или равенства нестатические элементы данных в этом классе
Это означает, что static const int a=7;
не принадлежит области действия static int b;
. Следовательно, static const int a=7
не может быть найдено в int A::C::b=a;
.
Это опечатка в Стандарте или это мое недоразумение?
b
— это не то же самое, что область видимости класса, связанная сC
. - person aschepler   schedule 04.06.2014