0
是否存在必須使用union且boost :: variant不能使用的任何用例?在聯盟中推薦boost :: variant
更具體地說:工會可以解決和提升::變體不能有什麼問題嗎?
由於C++標準委員會建議using variant instead of union 。
是否存在必須使用union且boost :: variant不能使用的任何用例?在聯盟中推薦boost :: variant
更具體地說:工會可以解決和提升::變體不能有什麼問題嗎?
由於C++標準委員會建議using variant instead of union 。
雖然工會在技術上允許某些變體不會的東西,但實際上這些東西都是未定義的行爲。
請注意,這比Implementation Defined強得多:你不能依賴於同一個編譯器做同樣的事情兩次,或者編譯器的未來版本做同樣的事情。
在可移植性方面,沒有可用性,因爲UB意味着「任何事情都可能發生」。
事實上,一些編譯器治療它定義現在實施實際上只是一個側面說明在標準C++
的範圍變的目標是讓識別聯合( tuple(union, discriminant)
)安全,有點像array_view旨在使tuple(pointer, size)
安全。
[Type-punning](https://en.wikipedia.org/wiki/Type_punning)?期望'union'參數的函數?當Boost不可用或無法使用? –
@JoachimPileborg當你閱讀的字段不是最後一個分配的字段時,是不是在C++中通過聯合UB打字? –
這是UB,但人們仍然使用它,因此編譯器在一些有限的情況下不情願地允許它。 –