sol*_*old 2 c++ enums type-systems bitflags
使用枚举在C++中存储位标志有点麻烦,因为一旦枚举值被OR化,它们就会松开它们的枚举类型,这会导致错误而不进行显式转换.
这个问题的接受答案表明|运营商超载:
FlagsSet operator|(FlagsSet a, FlagsSet b)
{
return FlagsSet(int(a) | int(b));
}
Run Code Online (Sandbox Code Playgroud)
我想知道这种方法是否有任何运行时影响?
运行时对正确性的影响?不 - 这应该是你想要的.
运行时对速度的影响?我希望任何体面的编译器都能正确地优化这个版本,以适应发布版本的最小指令数量(尽管你可能想要添加inline以确保).