在c++11开始引入了枚举类型enum class,在此之前enum关键字所声明的枚举更像是一个普通的常量集合,会将当前作用域视为访问空间,而enum class解决了这一问题。但作为类型也失去了像数字一样的位运算,尤其在使用Flags时会尤为困难,这里将会编写宏定义,自动生成完成运算符的重载。 enum class可以有一个明确的类型,可以是int32_t、int64_t等等,在运算符时要将枚举强制转换回本身整数类型时才可以进行运算,这里将会使用标准库提供的std::underlying_type_t(cppre…