c++ - 为什么禁止一次打开多个命名空间?

标签 c++ namespaces standards nested language-lawyer

可以做到 using namespace foo::bar; (即使用内部命名空间而不首先使用外部命名空间),为什么标准禁止这样做?

namespace foo::bar {
  // open nested namespace bar in foo and extend it...
}

我不是在寻找解决方法,只是想说明为什么不允许这样做。

最佳答案

我不确定“禁止”是正确的词 - 也许这只是一个疏忽。这是一个相当小的好东西,并不是什么大不了的事。

您还可以认为,当您编写 foo::bar 时,命名空间 foo 尚未创建,因此允许该语法使其看起来像foo 已经被创建,但它不是。

您还可以更进一步,请求能够编写 class Foo::MyClass {... 以在命名空间 Foo 中定义 MyClass ,对于函数、变量等也是如此。但是这个特性真的有必要解决任何特别紧迫的问题吗?

关于c++ - 为什么禁止一次打开多个命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6322685/

相关文章:

c++ - 您会使用哪种数据模型在 QML 中创建 100*100 的二维字段?

c++ - 将迭代器初始化为 vector 中的某个位置

c++ - 我如何在 'force' 断言中使用 const 访问器?

php - SimpleXMLElement : Retrieving Namespace Attribute

c# - 为什么要封装这个字段?

C 空指针算法

c++ - 取消注释 std::cout 语句会给出不同的结果

perl - 在 Perl 中,如何将打印函数分配给变量?

c# - 替换本地 : keyword with a path? 的适当方法是什么

c++ - 全局对象是否保证在所有线程本地存储对象被销毁后被销毁?