bugprone-standalone-empty¶
当在范围内使用 empty()
且结果被忽略时发出警告。如果存在成员函数,则建议使用 clear()
。
在一些常见的范围内,empty()
方法返回一个布尔值,表示范围是否为空,但它经常被错误地理解为清除范围内容的方式。一些范围提供了 clear()
方法用于此目的。当对 empty 的调用返回一个被忽略的结果时,此检查会发出警告,并建议用对 clear()
的调用来替换它,如果它作为范围的成员函数可用。
例如,以下代码可以用来指示范围是否为空,但结果被忽略了
std::vector<int> v;
...
v.empty();
调用 clear()
将适当地清除范围的内容
std::vector<int> v;
...
v.clear();
限制
如果
empty()
在类模板定义中被定义和使用,且忽略结果(例如在库实现中),则不会发出警告。这些错误情况可以使用[[nodiscard]]
属性捕获。