gpt4 book ai didi

c++ - 如何定义 boost::any 运算符 ==

转载 作者:行者123 更新时间:2023-11-28 04:53:16 24 4
gpt4 key购买 nike

我想在我的项目中为 boost::any 定义 operator ==。由于参数属于 boost 命名空间,因此参数相关查找将在此处搜索它。所以,签名是:

namespace boost
{
bool operator == (const boost::any &, const boost::any &);
}

但是,每当我包含一个比较枚举是否相等的 boost 库(例如 thread/locks.hpp)时,这都会产生不明确的重载错误——编译器认为没有理由更喜欢将枚举转换为 int 并使用内置比较,而不是将它们转换为 boost::any 并使用我的。

我可以通过在我的比较器所在的同一文件中包含任何此类库并定义自定义运算符来比较 boost 的枚举来解决这个问题。但一定有更好的方法,对吧?

最佳答案

namespace boost {
template<class T,
typename std::enable_if<std::is_same<T, any>{}, bool>::type =true
>
bool operator == (const T& lhs, const T& rhs){
return any_equal(lhs, rhs);
}
}

关于c++ - 如何定义 boost::any 运算符 ==,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47725202/

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