C ++转为虚空

时间:2014-09-30 08:07:02

标签: c++ casting void

据我所知,C ++标准说只有在函数式​​转换( ISO / IEC 14882:2003,5.2.3 )的情况下,转换为void才是正确的。

但我在 C ++ 标准中找不到任何关于 C风格转换为void的内容。

在这种情况下,程序的行为只是实现定义了吗?

1 个答案:

答案 0 :(得分:4)

  

据我了解,C ++标准说只有在函数式​​转换的情况下,转换为void才是正确的

不,可以通过static_cast完成,也可以使用功能或演员表示法进行转换。

  

但我无法在C ++标准中找到关于C样式转换到void的任何内容。

由[expr.static.cast]为static_cast定义,5.2.9 / 6:

  

任何表达式都可以显式转换为 cv void类型,在这种情况下它会成为废弃值   表达

[expr.cast],5.4,描述了C风格的演员阵容如何使用static_cast,因此它对该风格也有效。 [expr.type.conv],5.2.3,描述了函数样式如何等同于C样式,因此它也适用于该样式。

(注意:章节编号是指C ++ 11(ISO / IEC 14882:2011),而不是您所指的C ++ 03,因为它是当前版本。其他版本可能不同,但可能不多。)