1

我经常发现自己处于 3rd 方库可以使用一些当前不存在的功能或实用程序的情况。在编写这些配套实用程序时,出现了将它们放入哪个命名空间的问题。

我已经选择了一个约定来在我自己的范围内隐藏第 3 方的名称空间,但我并没有完全说服自己没有潜伏着不必要的影响。

示例实用程序标头:

#include <third_party/Thing.hpp>

namespace my_namespace
{
    namespace third_party
    {
        typedef ::third_party::Thing<int,3> Thing3i
    }
}

所以问题是:这样做有什么重大的负面后果吗?

4

1 回答 1

0

我没有特别发现任何问题,但我会提醒您不要使用第 3 方污染您的命名空间,以防出现歧义或臃肿,这个问题有一个很好的答案,即嵌套命名空间是否是一个好主意:C++ 命名空间建议、 C++ 中的嵌套命名空间和此处C++中命名空间的用法

一般来说,它应该是安全的,我会将using namespace third_party使用限制为仅 cpp 文件,否则如果您要在标头中声明using namespace third_party,那么您的标头中的代码#include将意外获取第三方名称空间,除非您真的希望发生这种情况。

于 2012-04-11T22:22:57.740 回答