Объявление класса в той же области, в которой используется объявление, компилируется в GCC, но не в MSVS.
Правильно ли сформирована следующая программа в соответствии со стандартом c ++?
namespace X { class A; }
namespace Y { using X::A; class A {}; }
int main() {}
Я получаю разные результаты с разными компиляторами:
GCC компилирует его без ошибок.Visual C ++ выдает ошибку C2888: «X :: A»: символ не может быть определен в пространстве имен «Y»В стандарте c ++ я не нахожу никаких правил, которые бы нарушала моя программа.
Если программа правильно сформирована, почему Visual Studio выдает ошибку?
Если программа не правильно сформирована, какое правило в стандарте c ++ она нарушила и почему gcc не выдает ошибку?
Я не пытаюсь заставить мою программу компилироваться. Я просто пытаюсь выяснить, правильно ли он сформирован в соответствии со стандартом c ++ и почему два протестированных мной компилятора ведут себя по-разному.