ちょっと便利な enum class (scoped enum)
ちょっとしたコネタレベルだけど
C++11では enumのかわりに enum class あるいは enum struct
を使うと良いという話
地味に便利なんだよ。
例えば 今まで enumは、ネームスペースを持っていなかったので
他のシンボルと名前がかぶるので
namespaceを作ったり、プリフィックスつけたりして
シンボル名の衝突を避けていたのが
デフォルトで名前空間を持つので
シンボル名がかぶる事なく使える
他にも
enumの型サイズは実装依存だったので コンパイラによりサイズが変わる可能性があったが
enum classだと、int型であることが明記されました
その事により 定義でサイズがわかるので、前方宣言可能になります
デフォルトはintですが、整数型(char、short、int、long等)を継承する事で
他の型にする事も可能
また、安全に型変換をするために
std::underlying_type
で内部型にキャストできます