警告 C26457

(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
}