【发布时间】:2011-06-15 13:31:59
【问题描述】:
这两种未命名命名空间的嵌套用法之间是否存在功能差异:
namespace A { namespace {
void foo() {/*...*/}
}}
和
namespace { namespace A {
void foo() {/*...*/}
}}
据我所见,foos 都将获得每个编译单元的内部唯一标识符,并且可以使用 A::foo 访问 - 但是否存在我不知道的细微或不那么细微的区别看到了吗?
【问题讨论】:
-
(已编辑)您可以通过在文件级别声明另一个
A::foo来有效地隐藏第二个foo。第一个foo将始终可以作为::A::foo访问。除非您重新打开A并在那里声明另一个foo。也就是说,是的,几乎相同。
标签: c++ namespaces