繁体   English   中英

匿名命名空间

[英]Anonymous Namespace

SO上最近的一个帖子触发了这一点。

匿名命名空间被认为是等效的

  namespace unique { /* empty body */ } 
  using namespace unique; 
  namespace unique { namespace-body }

我没有回想起为什么它不等同于它的确切原因

  namespace unique { namespace-body } 
  using namespace unique;

也尝试搜索(包括谷歌),但徒劳无功。 请分享您在此方面的任何信息。

现在存在的规范是在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 } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM