(void)
不应用于忽略返回值,请改用“std::ignore =
”(es.48)
备注
C++ Core Guidelines ES.48 的摘录:
从不强制转换为
(void)
忽略[[nodiscard]]
返回值。 如果你故意放弃这样的结果,首先考虑这是否确实是个好主意(函数或返回类型的创建者通常具有首先使用[[nodiscard]]
的充分理由)。 如果仍然想放弃,并且代码审阅者同意,请使用std::ignore =
关闭简单、可移植且易于出现 grep 的警告。
代码分析名称:USE_STD_IGNORE_INSTEAD_OF_VOID_CAST
示例
使用 std::ignore
,而不是强制转换为 void
:
struct S{};
[[nodiscard]] S getS();
void function() {
(void) getS(); // C26457
std::ignore = getS(); // OK
}