[英]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.