2014-09-30 85 views
1

據我所知,C++標準說只有在函數樣式轉換(ISO/IEC 14882:2003,5.2.3)的情況下,轉換爲void纔是正確的。C++投到void

但是我找不到任何關於C-style鑄造爲空的C++標準。

在這種情況下,程序的行爲只是實現定義的嗎?

+1

當進行C風格的轉換時,'void'就像任何其他類型一樣,只是該值被忽略。 – 2014-09-30 08:18:36

+0

但是在C++標準中這個解釋在哪裏? – 2014-09-30 08:53:36

回答

4

據我所知,C++標準規定,鑄造void僅使用函數樣式鑄造

不,它可以通過static_cast完成的,因此也被轉換的情況下是正確的功能性或演員表演。

但是在C++標準中,我找不到任何關於C風格鑄造void的內容。

它爲static_cast由[expr.static.cast]中定義,5.2.9/6:

任何表達式可以顯式轉換爲類型CVvoid,在這種情況下,它成爲一個丟棄值 表達式。

[expr.cast],5.4,描述了C風格演員如何使用static_cast,所以它也適用於該風格。 [expr.type.conv],5.2.3,描述了功能風格如何等同於C風格,所以它也適用於該風格。 (注:段號是指C++ 11(ISO/IEC 14882:2011),而不是C++ 03,因爲這是當前版本,其他版本可能不同,但可能並不多。)