我正在查看我遇到以下if
声明的遗留代码
if (!(foo == bar)){
// lots of code here
}
在
上写这个有什么好处if (foo != bar){
}
如果相关,则代码库为C ++。
答案 0 :(得分:6)
它们应该是等价的,对于普通的旧数据类型它们当然是,但如果作者(非常规地)为==
而不是!=
提供了重载运算符,那么第二种写作方式这将无法使用。
为了便于阅读,我想我更愿意看到
if (foo == bar){
// do nothing
} else {
// lots of code here
}
尽管最清楚的方法是调整代码库以提供!=
运算符,并且您采用第二种方式编写此代码。
答案 1 :(得分:2)
类型(模板参数)的要求(概念)可能包括EqualityComparable
,但不包括NotEqualityComparable
(不存在http://en.cppreference.com/w/cpp/concept中列出的库概念)。
LessThanComparable概念类似:C ++算法不需要大于概念(它是多余的)。