这是C ++中嵌套的命名空间语法标准吗?

时间:2018-06-17 06:53:53

标签: c++ namespaces nested

这是C ++的标准吗?在C#中,我喜欢声明嵌套的命名空间,如下所示:

namespace A.B 
{
    class X
    {
    };
}

替代方案就是这个,这有点丑陋:

namespace A
{
    namespace B
    {
        class X
        {
        };
    }
}

在C ++中,我想看看它是否有类似的功能。我最终找到了这个作品:

namespace A::B
{
    class Vector2D
    {
    }
}

注意::

我很好奇这是标准C ++还是MS功能。我找不到任何文件。我的古老C ++ 98参考书没有提及它,所以我想知道它是微软的扩展还是新功能。

1 个答案:

答案 0 :(得分:27)

是的,这是legal C++ 17语法。但是,它不是称为嵌入式命名空间,而是嵌套命名空间

  

namespace ns_name :: name (8)(自C ++ 17起)

     

[...]

     

8)嵌套命名空间定义:namespace A::B::C { ... }等同于namespace A { namespace B { namespace C { ... } } }