以前書いたソースコードをリファクタリングしていて、せっかくなので、よりC++らしくしようとしている。
そこで、以前は enum で書いていたところを enum class を使うようにした。
しかし、配列の添字として使おうとするとそのままでは使えないので、キャストをする必要がある。なので、次のような感じ。
int value = color[static_cast<std::size_t>(Color::kRed)];
しかし、毎回キャストを書くのも面倒。
C++23 以降なら、std::to_underlying() というのが使えるらしい。
int value = color[std::to_underlying(Color::kRed)];
とはいえ、やっぱりちょっと面倒に感じてしまう。