嵌套匿名命名空间

时间:2020-07-10 09:25:49

标签: c++ c++17

以下几行是等效的(从c ++ 17开始):

namespace A { namespace B {} }
namespace A::B {}

下面的行是否有合格的等效项?

namespace A { namespace {} }

谢谢

1 个答案:

答案 0 :(得分:0)

匿名名称空间(也称为未命名名称空间)成员占据全局范围,并且在文件中的声明之后的所有范围中均可访问。我们可以无限制地访问它们。

如果您考虑使用以下程序:

config/database.yml

您必须使用限定符cat /etc/postgresql/12/main/postgresql.conf | grep port ,即#include <iostream> // named namespace namespace A { // unnamed namespace namespace { int a; } } int main(void) { // initializing an unnamed namespace member // you need to use `::` because that unnamed namespace // is containing in a named namespace `A` A::a = 10; // calling the unnamed namespace member std::cout << A::a << std::endl; return 0; } ,如果您定义了未命名的命名空间,则不再需要使用示例中给出的任何限定:

::