C++11 では、ユニオン内で非 POD 型を使用できるようになりました。次のコードがあるとします。
union
{
T one;
V two;
} uny;
私のクラスのどこかで、一度にアクティブなメンバーは 1 人だけですが、私の質問はかなり単純です。
- uny のデフォルト値は何ですか? - 未定義?
- クラスが破棄されるたびに、(ユニオン内の) どのメンバーが破棄されますか?
- アクティブなメンバーを追跡するために std::typeinfo が必要だとしたら、デストラクタでそのメンバーに対して明示的にデストラクタを呼び出す必要がありますか?
- 非PODタイプを受け入れるようにユニオンを変更した言語提案へのリンクを持っている人はいますか?