【发布时间】:2012-03-26 05:51:05
【问题描述】:
我正在查看 C++03 标准中的 7.3.1.1 部分,希望找到对未命名命名空间中定义的项目的访问规则的一些描述。
对于未命名的命名空间,规则似乎有些不同,因为您不能完全限定对项目的访问。我知道至少在同一个翻译单元中,人们可以访问未命名命名空间中的项目,就好像它们不在命名空间中一样。例如:
namespace {
int foo;
}
void something()
{
foo = 4;
}
如果命名空间有名字,你就不能这样做。那么,标准中为这些适用于未命名命名空间的异常规则定义的规则在哪里?
【问题讨论】:
-
匿名命名空间只表示它只能在同一个翻译单元中看到。所有其他命名空间规则都应适用。您可以将东西放在另一个名称空间中,也可以放在另一个名称空间中。以
namespace bar { namespace { int r; }}为例。
标签: c++ namespaces