我想使用运算符'|'通过以下方式:
switch(color){
case Color::Red | Color::Green:
...
问题在于运算符必须返回常量值,但我无法使其正常工作。我尝试过这样的事情:
template<class T> inline const T operator| (T a, T b){ return const (T)((int)a | (int)b); }
但是它不能完成任务。
答案 0 :(得分:5)
case
应该使用常量表达式,即编译时常量。将您的运算符标记为constexpr
:
template<class T> inline constexpr T operator| (T a, T b){ return (T)((int)a | (int)b); }