Я пытаюсь понять, почему эта программа не дает имя-поиску неоднозначности для I:Имя-поиск неоднозначность несогласованность
namespace X { int i = 1; }
namespace Q {
namespace P {
int i = 2;
using namespace X;
}
using namespace P;
int l = i;
}
int main() {}
Если мы изменим это так мы получаем имя-поиск двусмысленности:
namespace X { int i = 1; }
namespace P {
int i = 2;
using namespace X;
}
using namespace P;
int l = i;
int main() {}
Единственное изменение, которое я сделал здесь, заключается в том, чтобы удалить пространство имен Q и поместить его содержимое в глобальное пространство имен.
Я попытался с 3-мя различными компиляторами:
- GCC и Clang с http://melpon.org/wandbox
- Visual C++ с http://webcompiler.cloudapp.net/
Полностью дают результаты, изложенные в этом письме, и я пытаясь выяснить, почему.
Может ли кто-нибудь объяснить поведение в терминах стандарта C++? Я не понимаю этого.
Разве это не ответили на std-обсуждение? https://groups.google.com/a/isocpp.org/d/msg/std-discussion/7K4p4FCdq6o/9bDtklvVzZgJ – dyp
С другой стороны, это правильный вопрос о SO, но, вероятно, дубликат. – dyp
Связанный/дубликат: http://stackoverflow.com/q/10741428/ – dyp