语句(void)f()在C++ 14中的状态是不正确的?如果不是,f()部分是丢弃值吗?

And*_*zos 3 c++ c++14

根据C++ 14标准,以下程序是否格式错误?

int f() { return 42; }

int main() {
  (void)f();
}
Run Code Online (Sandbox Code Playgroud)

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

小智 8

根据C++ 14标准,以下程序是否格式错误?

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

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

唯一的函数调用表达式废弃值表达式.

5.2.9静态强制转换[expr.static.cast]

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

我假设你已经意识到static_cast如果可能的话,C风格的演员会表演.