我正在查看部分7.3.1.1在 C++03 标准中,期望找到未命名命名空间中定义的项的访问规则的一些描述。
对于未命名的命名空间,规则似乎有点不同,因为您无法完全限定对其中的项目的访问权限。我知道至少在同一个翻译单元中,人们可以访问未命名名称空间中的项目,就像它们不在名称空间中一样。例如:
namespace {
int foo;
}
void something()
{
foo = 4;
}
如果命名空间有名称,则无法执行此操作。那么,标准中为这些适用于未命名命名空间的特殊规则定义的规则在哪里?
匿名命名空间基本上被视为:
namespace unique_per_TU
{
// Stuff
}
using namespace unique_per_TU;
我稍后会尝试在这里找到参考。
EDIT:
看来您已经在以下位置找到了它7.3.1.1/1
未命名的命名空间定义的行为就好像它被替换为
namespace unique { /* empty body */ }
using namespace unique;
namespace unique { namespacebody }
其中所有出现的唯一的
翻译单元被相同的标识符替换,并且这个
标识符与整个程序中的所有其他标识符不同。
正如您所发现的,“假”使用已经将命名空间成员带入全局命名空间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)