在匿名命名空间内的“使用命名空间”语句中,询问以下内容是否合法
//file.cpp
//....
namespace
{
using namespace std;
}
int a(){
cout << "bla";
}
答案是“是”。此外,即使将命名空间指令插入到 cpp 文件中,通常也会鄙视使用命名空间指令,因为自从引入统一构建 ( https://stackoverflow.com/a/6474774/484230 )以来,头文件和实现文件之间的范围差异并不是坚如磐石。
我的问题:匿名命名空间是否使我免于此类问题,或者 using 指令仍然可以传播文件边界?在https://stackoverflow.com/a/2577890/484230中提出了类似的方法。它也适用于匿名命名空间吗?它真的安全吗?当然std
是一个不好的例子,但例如using namespace boost::assign;
在某些 cpp 文件中会非常方便。