【问题标题】:Multi-tier namespace specification in C++C++ 中的多层命名空间规范
【发布时间】:2017-04-05 02:14:16
【问题描述】:

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

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++ namespaces coding-style


    【解决方案1】:

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

    namespace A::B::C {
    

    相当于:

    namespace A { namespace B { namespace C {
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      • 2021-07-17
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多