可以做到 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/