Рассмотрим следующую программу. Является ли он корректным или нет в соответствии со стандартом С++ (ссылки на соответствующие части стандарта необходимы):
namespace X { extern int i; }
namespace N { using X::i; }
int N::i = 1;
int main() {}
Я получаю разные результаты для разных компиляторов. Я пытаюсь выяснить, для компилятора я должен представить отчет об ошибке для:
-
Clang: дает следующую ошибку компилятора: ни один член с именем 'i' в пространстве имен 'N'
-
GCC и Visual С++ компилирует его без ошибок.
Для сравнения ниже приведена ошибка компилятора со всеми тремя компиляторами:
namespace X { void f(); }
namespace N { using X::f; }
void N::f() {};
int main() {}