gpt4 book ai didi

c++ - 为什么 boost::variant 不提供运算符 !=

转载 作者:IT老高 更新时间:2023-10-28 22:20:50 26 4
gpt4 key购买 nike

给定两个相同的 boost::variant 实例 ab,允许使用表达式 ( a == b )

但是 ( a != b ) 似乎未定义。这是为什么呢?

最佳答案

我认为它只是没有添加到库中。 Boost.Operators 并没有真正的帮助,因为任何一种变体都是从 boost::operator::equality_comparable 派生的。 David Pierre 说你可以使用它是对的,但你的回答也是正确的,ADL 找不到新的运算符!=,所以你需要一个 using 运算符。

我会在 boost-users 邮件列表中问这个问题。

编辑@AFoglia 的评论:

七个月后,我正在研究 Boost.Variant,我偶然发现了对遗漏列表的更好解释。

http://boost.org/Archives/boost/2006/06/105895.php

operator== 为当前在变体中的实际类调用 operator==。同样调用 operator!= 也应该调用类的 operator!=。 (因为理论上,可以定义一个类,所以 a!=b!(a==b) 不同。)所以这会增加另一个要求变体中的类有一个 operator!=。 (关于您是否可以在邮件列表线程中做出这种假设存在争议。)

关于c++ - 为什么 boost::variant 不提供运算符 !=,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1044448/

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