SO上的recent thread触发了这一点。
匿名命名空间被认为等同于
namespace unique { /* empty body */ }
using namespace unique;
namespace unique { namespace-body }
我无法回想起为什么它不等同于
的确切原因 namespace unique { namespace-body }
using namespace unique;
也尝试搜索(包括谷歌),但徒劳无功。请分享您在此方面的任何信息。
答案 0 :(得分:4)
现在存在的规范是在1995年N0783引入的,以纠正一个极端情况。引用该论文(第9页):
WP将未命名的命名空间的语义定义为等同于:
namespace UNIQUE { // namespace body } using namespace UNIQUE;
这是不正确的,因为它使未命名的命名空间中的代码依赖于 代码是在原始命名空间还是命名空间扩展名中。
namespace {} // If you remove this line, the // use of ::f below is invalid namespace { void f() { using ::f; } }
应更改WP以将未命名的命名空间定义为:
namespace UNIQUE {} using namespace UNIQUE; namespace UNIQUE { // namespace body }