Является ли это стандартным синтаксисом вложенного пространства имен в C++?
Является ли этот стандарт в C++? В С# мне понравилось объявлять вложенные пространства имен следующим образом:
namespace A.B
{
class X
{
};
}
Альтернативой было это, что немного уродливее:
namespace A
{
namespace B
{
class X
{
};
}
}
В C++ я хотел посмотреть, есть ли у него подобная функция. В итоге я нашел это:
namespace A::B
{
class Vector2D
{
}
}
Обратите внимание на ::
.
Мне интересно, если это стандарт C++ или если это функция MS. Я не могу найти на нем никакой документации. В моем древнем справочнике C++ 98 это не упоминается, поэтому я задаюсь вопросом, является ли это расширением от Microsoft или новой функцией.
Ответы
Ответ 1
Да, это законный синтаксис C++ 17. Это, однако, не называется вложенным пространством имен, а вложенным пространством имен.
namespace
ns_name ::
name (8) (поскольку C++ 17)
[...]
8) определение вложенного пространства имен: namespace A::B::C {... }
эквивалентно namespace A { namespace B { namespace C {... } } }
.