//Operator Overloads T operator()() { return *value; } //Assignment Operators T operator=(T nVal) { (*value) = nVal; return *value; } T operator+=(T nVal) { (*value) += nVal; return *value; } T operator-=(T nVal) { (*value)-= nVal; return *value; } T operator/=(T nVal) { (*value) /= nVal; return *value; } T operator*=(T nVal) { (*value) *= nVal; return *value; } T operator%=(T nVal) { (*value) %= nVal; return *value; } T operator^=(T nVal) { (*value) ^= nVal; return *value; } T operator&=(T nVal) { (*value) &= nVal; return *value; } T operator|=(T nVal) { (*value) |= nVal; return *value; } T operator>>=(T nVal) { (*value) >>= nVal; return *value; } T operator<<=(T nVal) { (*value) <<= nVal; return *value; } //Mathematical Operations T operator+(T nVal) { return (*value) + nVal; } T operator-(T nVal) { return (*value) - nVal; } T operator*(T nVal) { return (*value) - nVal; } T operator/(T nVal) { return (*value) / nVal; } T operator%(T nVal) { return (*value) % nVal; } //Boolean operations bool operator==(T nVal) { return (*value) == nVal; } bool operator!=(T nVal) { return (*value) != nVal; } bool operator<(T nVal) { return (*value) < nVal; } bool operator<=(T nVal) { return (*value) <= nVal; } bool operator>(T nVal) { return (*value) > nVal; } bool operator>=(T nVal) { return (*value) >= nVal; } T operator&&(T nVal) { return (*value) && nVal; } T operator||(T nVal) { return (*value) && nVal; } T operator!() { return !(*value); } //Bitwise operations T operator&(T nVal) { return (*value) && nVal; } T operator|(T nVal) { return (*value) && nVal; } T operator>>(T nVal) { return (*value) >> nVal; } T operator<<(T nVal) { return (*value) << nVal; } T operator^(T nVal) { return (*value) ^ nVal; } T operator~() { return ~(*value); }