我理解C不能自动为一个类定义operator ==但是为什么它不能使用!(a == b)for!= b当operator!=不可用但是operator ==是?
我知道std :: rel_ops虽然我今天没有听说过它.
解决方法
因为operator ==并不一定意味着与operator相反!=.
我想不出任何运算符==并不意味着!operator!=的实例,但它们是独立的运算符.关于C的最令人解放的,有时甚至是最令人沮丧的事情之一是C对如何编写代码应用了一组最小的限制.如果你有一个实例,其中operator ==与operator!=不相反,那么你应该能够用C表示.事实上,你可以.
你在C中把坏事带走了.你可能会认为这是“坏”的集合.
请记住,在绝大多数情况下,根据operator ==正确实现operator!=是微不足道的.
bool Gizmo::operator!=(const Gizmo& rhs) const { return !operator==(rhs); }