这是C ++的标准吗?在C#中,我喜欢声明嵌套的命名空间,如下所示:
namespace A.B
{
class X
{
};
}
替代方案就是这个,这有点丑陋:
namespace A
{
namespace B
{
class X
{
};
}
}
在C ++中,我想看看它是否有类似的功能。我最终找到了这个作品:
namespace A::B
{
class Vector2D
{
}
}
注意::
。
我很好奇这是标准C ++还是MS功能。我找不到任何文件。我的古老C ++ 98参考书没有提及它,所以我想知道它是微软的扩展还是新功能。
答案 0 :(得分:27)
是的,这是legal C++ 17语法。但是,它不是称为嵌入式命名空间,而是嵌套命名空间。
namespace
ns_name::
name (8)(自C ++ 17起)[...]
8)嵌套命名空间定义:
namespace A::B::C { ... }
等同于namespace A { namespace B { namespace C { ... } } }
。