【发布时间】:2011-09-13 16:25:13
【问题描述】:
class C {
using namespace std; // error
};
namespace N {
using namespace std; // ok
}
int main () {
using namespace std; // ok
}
我想知道背后的动机。
【问题讨论】:
-
@pst:C# 没有类似
using namespace的东西。 C# 允许类似的东西,但仅在文件范围内。 C++ 的using namespace允许您将一个命名空间合并到另一个命名空间中。 -
this question 的重复?
-
@ZachSaw,我理解你的担忧。已尝试根据相关性关闭 Qn。由于这篇文章包含更客观的答案和对标准的参考,我一直保持开放状态。过去,我的许多旧 Qn 都被新 Qn 关闭..有时被我有时被其他人关闭。如果您认为此决定不合适,请向钻石 Mods 举报。别往心里放。 :-)
-
@iammilind 不在乎 TBH。所以这些天是一团糟。但是,将以“我不完全知道”开头的帖子标记为答案确实包含“更客观的答案和对标准的参考”。哈哈。
-
@ZachSaw,我说的不仅仅是接受的答案,而是整个帖子。是的,这是客观的,但标准报价包含在this answer 中。它以“我不知道”开头,因为即使在标准中,为什么在
class/struct中不允许“使用命名空间”也是不合理的。只是根本不允许。但是接受的答案确实讨论了一个非常合乎逻辑的理由来禁止它。即在哪里考虑Hello::World和在哪里考虑World。希望能消除疑虑。
标签: c++ namespaces using language-lawyer