C++ 中的多层命名空间规范

Multi-tier namespace specification in C++

我的一个客户的编码标准要求名称space需要在单独的行上定义所有单独的名称和大括号。这导致垂直-space-消耗(这一点让团队中的一些开发人员感到烦恼):

namespace MyCompany
{
    namespace MyProduct
    {
        namespace ThisFunctionalUnit
        {
            :
        }
    }
}

鉴于他们的绝大部分代码由完全包裹在上面看到的那种层次结构中的文件组成,他们可以通过允许:

来最大限度地减少问题
namespace MyCompany { namespace MyProduct { namespace ThisFunctionalUnit
{
    :
}}} // namespace MyCompany::MyProduct::ThisFunctionalUnit

这会带来其他问题,但可行。但是,在我看来,如果 C++ 首先允许 namespaces 的多层规范,那么整个问题就会消失,如下所示:

namespace MyCompany::MyProduct::ThisFunctionalUnit
{
    :
}

我的问题确实是,为什么 C++ 不允许这样做?不可能是因为 :: 可以在 namespace 关卡中使用,因为那样会使 using namespace 无法使用。

有谁知道为什么会这样,或者是否有可能得到纠正?

在 C++17 中现在允许嵌套命名空间定义:

namespace A::B::C {

相当于:

namespace A { namespace B { namespace C {