【发布时间】:2021-11-09 23:06:42
【问题描述】:
在 C++ 头文件中在命名空间中使用 using 声明是否安全(且正确),如下所示:
#include <boost/numeric/ublas/vector.hpp>
namespace MyNamespace {
using boost::numeric::ublas::vector;
vector MyFunc(vector in);
}
即“使用 boost::numeric::ublas::vector”是否正确包含在 MyNamespace 块中,或者这会污染包含此标头的任何文件的名称空间?
【问题讨论】:
-
“任何文件的命名空间”到底是什么意思?从 using 声明开始,它将“污染”任何翻译单元中的
MyNamespace命名空间。 -
对于单个符号...为什么不使用
typedef? -
@Matthieu:因为
boost::numeric::ublas::vector是一个模板。我以前使用标准的“模板 typedef”解决方法 (stackoverflow.com/questions/26151/…),但想稍微简化一下。 -
啊!在 C++0x 中,你有办法给模板取别名……虽然你需要重新声明你想使用的所有参数,但否则你有点卡住了,我猜。
标签: c++ scope namespaces header-files using