在"匿名命名空间内使用namespace语句"中,是否合法?
答案是 "是"。 此外,即使在cpp文件中插入命名空间指令,由于统一构建的引入,头文件和实现文件之间的作用域差异也不是非常牢固,因此通常被鄙视(参见https://dev59.com/lmw15IYBdhLWcg3wpNcB#6474774)。
我的问题是: 匿名命名空间是否可以使我免受这些问题的困扰,或者使用指令是否仍然会传播文件边界? 在https://dev59.com/C0zSa4cB1Zd3GeqPrPzG#2577890中提出了类似的方法。 匿名命名空间也适用吗? 它真的很安全吗? 当然,
//file.cpp
//....
namespace
{
using namespace std;
}
int a(){
cout << "bla";
}
答案是 "是"。 此外,即使在cpp文件中插入命名空间指令,由于统一构建的引入,头文件和实现文件之间的作用域差异也不是非常牢固,因此通常被鄙视(参见https://dev59.com/lmw15IYBdhLWcg3wpNcB#6474774)。
我的问题是: 匿名命名空间是否可以使我免受这些问题的困扰,或者使用指令是否仍然会传播文件边界? 在https://dev59.com/C0zSa4cB1Zd3GeqPrPzG#2577890中提出了类似的方法。 匿名命名空间也适用吗? 它真的很安全吗? 当然,
std
是一个糟糕的例子,但例如using namespace boost::assign;
在某些cpp文件中会非常方便。
namespace assign = boost::assign
更安全。我只使用using namespace
将用户定义的字面量引入作用域,因为没有其他选择。 - R. Martinho Fernandes