C++0xの機能(制限のない共用体)

今回は"Unrestricted unions"(制限のない共用体)。

共用体って使う機会があんまりなくて、今まで言語の勉強として以外に使ったことがない・・・。
そんな感じなので、制限なんて気にしたことがなかったですね。そんな様々な制限があったとは・・・。


とりあえず、unionのメンバは参照以外のすべての型を持つことができるようになったようです。

ただし注意点としては、ユーザーが明示的に定義した特殊メンバ関数(コンストラクタ、デストラクタ、コピーコンストラクタなど)はunionに暗黙的に定義されないため、もし要求された場合は削除されるということです。

参照型以外にも仮想関数や基本クラスを持つこともできないようです。
また基本クラスにすることもできないようです。

という感じでしょうか。
他に比べて制限が大幅に緩められただけなので、後方互換性の問題は全くないんでしょうね。

広告を非表示にする