繁体   English   中英

声明嵌套命名空间`std`是否合法?

[英]Is it legal C++ to declare a nested namespace `std`?

std命名空间在 C++ 中很特殊,所以......

这是合法的 C++ 吗?

// at global scope
namespace mine {
  namespace std {
    ...
  }
}

我会说这很疯狂,但允许吗?

来自标准的参考(或非参考)将不胜感激。

reserved names标准 17.4.3.1(及其子段落)中,我找不到任何禁止使用std作为嵌套命名空间名称的内容。 它不是一个宏,它不在全局命名空间中,而且它似乎不符合任何禁止它的“外部链接标准”。

这似乎是合法的(尽管您注意到非常不可取)。

标准中使std命名空间“特殊”的规则是 (§17.6.4.2.1 [namespace.std]/p1):

如果 C++ 程序向命名空间std或命名空间std内的命名空间添加声明或定义,则它的行为是未定义的,除非另有说明。

这仅适用于顶级命名空间。

暂无
暂无

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

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