Рассмотрите следующую программу. Хорошо ли он сформирован или не в соответствии со стандартом C++ (ссылки на соответствующие разделы стандарта необходимо):Попытка определить элемент пространства имен посредством использования-объявления
namespace X { extern int i; }
namespace N { using X::i; }
int N::i = 1;
int main() {}
Я получаю разные результаты для разных компиляторов. Я пытаюсь выяснить, для чего компилятор, который я должен подать отчет об ошибке для:
Clang: Выдает следующую ошибку компилятора: Ни один член с именем «я» в пространстве имен «N»
НКУ и Visual C++ компилирует его без ошибок.
Для сравнения следующее дает ошибку компилятора со всеми тремя составителями:
namespace X { void f(); }
namespace N { using X::f; }
void N::f() {};
int main() {}
Смешно, VS2013 компилируется, но IntelliSence говорит '' Ошибка: пространство имен «N» не имеет действительного члена «i» ' – AlexD
Я думаю, что ответ здесь: [link] (http://stackoverflow.com/questions/6175705/scope-of-use-declaration-inside-namespace) – Jorj
@Supremum Вы можете получить свою собственную копию стандарта C++ для чтения по адресу https://isocpp.org/std/the-standard. – Coder