inline T operator | (const T a, const T b) { return T(int(a) | int(b)); } \
inline T &operator |= ( T &a, const T b) { return a = a | b; } \
inline T operator & (const T a, const T b) { return T(int(a) & int(b)); } \
inline T &operator &= ( T &a, const T b) { return a = a & b; } \
inline T operator ^ (const T a, const T b) { return T(int(a) ^ int(b)); } \
inline T &operator ^= ( T &a, const T b) { return a = a ^ b; } \
inline T operator ~ (const T a) { return T(~int(a)); }