SH
template <class T>
auto to_underlying(T en) { return static_cast<std::undelying_type_t>(en); }
enum class Color
{
Red,
Green,
Blue,
Count
};
#define ITERATE_ENUM(iterator, enumType) for (auto iterator = enumType(0); to_underlying(iterator) < to_underlying(enumType::Count); iterator(to_underlying(iterator) + 1))