C ++重载| (按位或)运算符,返回常数

时间:2018-07-11 16:05:08

标签: c++

我想使用运算符'|'通过以下方式:

    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); }

但是它不能完成任务。

1 个答案:

答案 0 :(得分:5)

case应该使用常量表达式,即编译时常量。将您的运算符标记为constexpr

template<class T> inline constexpr T operator| (T a, T b){ return (T)((int)a | (int)b); }