Возможно, интересная точка данных.Когда я компилирую следующее:
using namespace std;
using namespace no_such_namespace;
с g ++ 4.5.2, я получаю:
c.cpp:2:17: error: ‘no_such_namespace’ is not a namespace-name
c.cpp:2:34: error: expected namespace-name before ‘;’ token
Ни std
, ни no_such_namespace
не было определено как пространство имен в этой точкеНо g ++ жалуется только на второе.Я не думаю, что есть что-то особенное в идентификаторе std
в отсутствие его объявления.Я думаю, что @James Kanze прав, что это ошибка в g ++.
РЕДАКТИРОВАТЬ: И об этом сообщалось. (5 лет назад!)
ОБНОВЛЕНИЕ: Теперь этоболее 8 лет, и до сих пор не назначен никому, тем более исправлен.g ++ 4.9.2 демонстрирует проблему.clang ++ 3.5 этого не делает, но выдает предупреждение для std
и фатальную ошибку для no_such_namespace
:
c.cpp:1:17: warning: using directive refers to implicitly-defined namespace 'std'
using namespace std;
^
c.cpp:2:17: error: expected namespace name
using namespace no_such_namespace;
^
1 warning and 1 error generated.