C++重载|(按位OR)运算符,返回常数值
C++ Overloading | (bitwise OR) operator that returns constant value
我想以以下方式使用运算符"|":
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); }
但它不起作用。
case
应该使用常量表达式,即编译时常量。将您的操作员标记为constexpr
:
template<class T> inline constexpr T operator| (T a, T b){ return (T)((int)a | (int)b); }
相关文章:
- 重载更少,则运算符返回相反的布尔值
- 使用重载 [] 运算符返回 std::map() 的可赋值
- 为什么我的超载"+"运算符返回的总额错误?
- (C++)为什么"||"逻辑运算符返回 1?
- 为流运算符返回代理类时解压缩参数
- C++ 运算符返回差异
- 重载运算符返回什么类型的值(对于用户定义的类型):右值还是左值?
- 运算符返回的指针的有效性 >
- 字符串流运算符>>返回值
- 动态指针引用数组由三元运算符返回值,但有异常
- 重载运算符返回的对象正在丢失 C++ 中的数据
- 如何使用设置运算符返回非 const 对象>
- 重载常量和非常量转换运算符返回数组类型时出现 MSVC 错误 C2593
- 为什么比较运算符"=="返回"YES"即使两个向量不同?
- 如何从重载的下标 [] 运算符返回 std::unique_ptr&?
- 从重载运算符返回对象>>
- 获取对运算符 [] 返回值unordered_map引用
- 我无法让这个虚拟模板化函子运算符返回正确的类型
- 为什么迭代器运算符 + 返回副本
- 从运算符[]返回对映射的char*的引用