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

时间:2017-04-05 02:14:16

标签: c++ namespaces coding-style

我的客户端具有编码标准,需要使用所有单独的名称和大括号在单独的行上定义名称空间。这导致垂直空间消耗(这一点让团队中的一些开发人员烦恼):

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

鉴于他们的绝大多数代码都是由完全包含在上面所见的层次结构中的文件组成,他们可以通过允许来最小化问题:

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

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

namespace MyCompany::MyProduct::ThisFunctionalUnit
{
    :
}

我的问题是,为什么 C ++允许这个?这不可能是因为::可以在命名空间级别中使用,因为这会导致using namespace无法工作。

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

1 个答案:

答案 0 :(得分:1)

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

namespace A::B::C {

相当于:

namespace A { namespace B { namespace C {