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