c++ 14中语句(void)f()的状态是否格式错误?如果不是,f()部分是否为丢弃值

Status of statement (void)f() in C++14, is it ill-formed? if not, is the f() part discard-value?

本文关键字:是否 如果不 格式 语句 void 错误 c++ 状态      更新时间:2023-10-16

根据c++ 14标准,下面的程序是病态的吗?

int f() { return 42; }
int main() {
  (void)f();
}

如果不是,唯一的函数调用表达式是否包含在丢弃值表达式中?(注意这是子表达式,而不是整个表达式语句)

根据c++ 14标准,下面的程序是病态的吗?

。如果你有特定的理由认为这可能是无效的,你可能会得到一个更详细的答案,但是引用标准的每一个句子,试图指出那句话不会使程序无效,是没有成效的。

如果不是,唯一的函数调用表达式是否包含在丢弃值表达式中?

唯一的函数调用表达式丢弃值表达式。

5.2.9静态铸造(expr.static.cast)

6任何表达式都可以显式转换为类型cv void,在这种情况下,它成为一个丢弃值表达式(第5条)。[…]

我假设您已经意识到,如果可能的话,c风格的强制转换执行static_cast

相关文章: