我目前正在使用 Visual Studio 11 Beta。我正在使用强类型枚举来描述一些标志
enum class A : uint32_t
{
VAL1 = 1 << 0,
VAL2 = 1 << 1,
};
uint32_t v = A::VAL1 | A::VAL2; // Fails
当我尝试按上述方式组合它们时,出现以下错误
error C2676: binary '|' : 'A' does not define this operator or a conversion to a type acceptable to the predefined operator
这是编译器的错误还是我根据 c++11 标准尝试的无效?
我的假设是之前的枚举声明将等同于写作
struct A
{
enum : uint32_t
{
VAL1 = 1 << 0,
VAL2 = 1 << 1,
};
};
uint32_t v = A::VAL1 | A::VAL2; // Succeeds, v = 3