C++ 匿名命名空间
一场如此激烈的战争引发了这场战争 匿名命名空间被视为等同于C++ 匿名命名空间,c++,namespaces,anonymous,C++,Namespaces,Anonymous,一场如此激烈的战争引发了这场战争 匿名命名空间被视为等同于 namespace unique { /* empty body */ } using namespace unique; namespace unique { namespace-body } namespace unique { namespace-body } using namespace unique; 我记不起为什么它不等同于 namespace unique { /* empty body
namespace unique { /* empty body */ }
using namespace unique;
namespace unique { namespace-body }
namespace unique { namespace-body }
using namespace unique;
我记不起为什么它不等同于
namespace unique { /* empty body */ }
using namespace unique;
namespace unique { namespace-body }
namespace unique { namespace-body }
using namespace unique;
也尝试过搜索(包括谷歌),但没有成功。请分享您在这方面的任何信息。现在存在的规范于1995年引入,以纠正一个角落的情况。引用该论文(第9页): WP将未命名命名空间的语义定义为等效于:
namespace UNIQUE {
// namespace body
}
using namespace UNIQUE;
namespace UNIQUE {}
using namespace UNIQUE;
namespace UNIQUE {
// namespace body
}
这是不正确的,因为它使未命名命名空间中的代码依赖于
代码是否位于原始命名空间或命名空间扩展中
namespace {} // If you remove this line, the
// use of ::f below is invalid
namespace {
void f()
{
using ::f;
}
}
应更改WP,以将未命名命名空间定义为等效于:
namespace UNIQUE {
// namespace body
}
using namespace UNIQUE;
namespace UNIQUE {}
using namespace UNIQUE;
namespace UNIQUE {
// namespace body
}
顺便说一下,技术术语是“未命名名称空间”。实际上,我并不完全理解它。DEO这是否意味着显示的代码片段在当前标准中应该格式良好?是-使用::f的
遵循使用命名空间唯一的。因此,UNIQUE::f
被注入全局名称空间中的代码引用点::f