我的一个客户有编码标准,该标准要求使用所有单独的名称和大括号来定义命名空间。这导致了垂直空间的消耗(这一点使团队中的一些开发人员感到烦恼):

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


鉴于他们的绝大多数代码由完全按照上述层次结构包装的文件组成,它们可以通过允许以下操作将问题最小化:

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


这有其他问题,但可行。但是,在我看来,如果C ++首先允许按照以下方式对名称空间进行多层说明,那么整个问题将消失:

namespace MyCompany::MyProduct::ThisFunctionalUnit
{
    :
}


我的问题确实是,为什么C ++不允许这样做?并不是因为::可以在命名空间级别内使用,因为这会使using namespace无法使用。

有谁知道为什么会这样,或者是否有可能解决?

最佳答案

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

namespace A::B::C {


等效于:

namespace A { namespace B { namespace C {

09-10 00:31
查看更多