我经常发现自己处于第三方库可以使用当前不存在的某些功能或实用程序的情况。在编写这些伴随实用程序时,会产生一个问题,即将它们放入哪个命名空间。
我已经选择了一个约定来影响我自己的第三方命名空间,但我并不完全相信自己潜伏着不受欢迎的反响。
示例实用程序标头:
#include <third_party/Thing.hpp>
namespace my_namespace
{
namespace third_party
{
typedef ::third_party::Thing<int,3> Thing3i
}
}
所以问题是:这样做有什么明显的负面影响吗?
答案 0 :(得分:0)
我没有特别看错,但我要提醒你,如果不明确或臃肿,你不会用第三方污染你的命名空间,这个问题有一个很好的答案是否是一个好主意嵌套命名空间:C++ namespaces advice,Nested NameSpaces in C++和此处Usage of namespaces in c++。
一般来说,它应该是安全的,我会将using namespace third_party
用法仅限于cpp文件,否则如果您在标题中声明using namespace third_party
,那么#include
是您的标题的代码将意外获取第三方命名空间,除非你真的想要这样做。