modernize-use-nodiscard¶
为成员函数添加 [[nodiscard]]
属性(在 C++17 中引入),以便在编译时突出显示哪些返回值不应该被忽略。
该检查将考虑满足以下条件的成员函数:
没有
[[nodiscard]]
、[[noreturn]]
、__attribute__((warn_unused_result))
、[[clang::warn_unused_result]]
以及[[gcc::warn_unused_result]]
属性,非 void 返回类型,
非模板返回类型,
const 成员函数,
非可变参数函数,
没有非 const 引用参数,
没有指针参数,
没有模板参数,
没有模板函数参数,
不是具有可变成员变量的类的成员,
没有 Lambda 表达式,
没有转换函数。
此类函数没有改变任何状态或传递除返回类型之外的值的方法。除非成员函数通过某些外部调用(例如 I/O)来改变状态。
示例¶
bool empty() const;
bool empty(int i) const;
转换为
[[nodiscard]] bool empty() const;
[[nodiscard]] bool empty(int i) const;
选项¶
- ReplacementString¶
指定一个宏来代替
[[nodiscard]]
。这在维护需要使用预 C++17 编译器编译的源代码时很有用。
示例¶
bool empty() const;
bool empty(int i) const;
转换为
NO_DISCARD bool empty() const;
NO_DISCARD bool empty(int i) const;
如果 ReplacementString
选项设置为 NO_DISCARD。
注意
如果 ReplacementString
不是 C++ 属性,而是宏,那么该宏必须在作用域中定义,否则修复将不会应用。
注意
有关在非 C++17 源代码中将函数标记为 [[nodiscard]]
的其他 __attribute__
语法选项。请参阅 https://clang.llvm.net.cn/docs/AttributeReference.html#nodiscard-warn-unused-result