在草案 §7.3.1¶1 (n4527) 中,命名空间定义的语法包含:
封闭命名空间说明符:
标识符
封闭命名空间说明符 :: 标识符
这可以防止命名空间定义具有以“::”开头的标识符
namespace d{ namespace e {} }
namespace ::d::e
{
void foo(){}
}
这种限制有什么理由吗?
更新: downvote(s) 和一些答案让我意识到当我在第一句话中的意思是“草稿”时,我写了“标准”。在我的辩护中,我确实在括号中写了文件编号。因此,让我强调这是一个关于 C++1z 的嵌套命名空间定义特性的问题。