簡體   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