#pragma once namespace TLAC::Utilities { template inline T operator~ (T a) { return (T)~(int)a; } template inline T operator| (T a, T b) { return (T)((int)a | (int)b); } template inline T operator& (T a, T b) { return (T)((int)a & (int)b); } template inline T operator^ (T a, T b) { return (T)((int)a ^ (int)b); } template inline T& operator|= (T& a, T b) { return (T&)((int&)a |= (int)b); } template inline T& operator&= (T& a, T b) { return (T&)((int&)a &= (int)b); } template inline T& operator^= (T& a, T b) { return (T&)((int&)a ^= (int)b); } }