【发布时间】:2015-10-24 22:14:19
【问题描述】:
以下程序是否符合 C++14 标准?
int f() { return 42; }
int main() {
(void)f();
}
如果不是,唯一的函数调用表达式是否包含在丢弃值表达式中? (注意是子表达式,不是整个表达式语句)
【问题讨论】:
-
您是否有任何参考资料让您认为
(void)f()格式不正确? -
@RSahu:void 是一个不完整的类型,所以:
void t = f();格式不正确,因此我希望(void)x的意思是(没有相反的措辞)创建一个临时类型的 void,这相当于前面提到的格式错误的void t = f();。但是在 C 中这是格式良好的,所以我不清楚。 -
@AndrewTomazos
void t不会是临时的(如果它是合法的)。void是表达式的有效类型。例如调用 void 函数。 -
您还可以看到类似
(void)param;的代码,以消除函数中关于未使用参数param的虚假警告,因此该表达式绝对是有效的 C++。