標準變體

Variant 是原始 union 使用的替代品。它是型別安全的並且知道它是什麼型別,並且它應該在它應該的時候仔細地構造和銷燬它內部的物件。

它幾乎從不是空的:只有在更換其內容的角落情況下才會安全退出並最終處於空狀態。

它的行為有點像 std::tuple,有點像 std::optional

使用 std::getstd::get_if 通常是一個壞主意。正確的答案通常是 std::visit,它可以讓你在那裡處理每一種可能性。if constexpr 可以在 visit 中使用,如果你需要分支你的行為,而不是做一系列執行時檢查,複製 visit 將更有效地做什麼。