gpt4 book ai didi

c++ - 在头文件中使用私有(private)命名空间中的声明

转载 作者:行者123 更新时间:2023-11-28 07:05:05 25 4
gpt4 key购买 nike

我有一个模板类,它在其方法中使用了一些提升函数。因为这个类是模板,它的方法应该在头文件中实现。我使用一些 using 声明来使代码更具可读性:

namespace network { 
namespace v1 {
namespace detail {
using boost::phoenix::if_;
using boost::for_each;
/* some more functions */

template <class T>
class Some {
public:
Some() {
for_each(inVector, /* some phoenix code */);
}
private:
vector<int> intVector;
};
}

template <class T> using Some = detail::Some<T>;
}
}

以这种方式在 header 中使用 using 是否安全?我不认为有人会在 .cpp 文件中使用 using namespace network::v1::detail;,所以我不认为添加到 detail 命名空间的函数会导致任何名称冲突。我错了吗?

最佳答案

是的,它是安全的。 using 声明仅将 boost 函数添加到 detail 命名空间。你基本上回答了你自己的问题:-)

编辑:还有一个想法:即使有人同时使用您的 detail 命名空间和 boost 命名空间,for_each 等仍然会引用相同的函数,因此别名会不是问题。如果这些名称随后与提供 for_each 的其他库发生冲突,您仍然可以通过在命名空间前加上前缀来消除函数用法的歧义。但是,如果没有人使用您的命名空间,您就没事。

关于c++ - 在头文件中使用私有(private)命名空间中的声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21880363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com