You could add in either explicit int overloads or some template operator overloads. Ex:
template <typename T> Int64 operator *(const Int64 & x, T y) { Int64 temp; temp = y; return (x * temp); } template <typename T> Int64 operator *(T x, const Int64 & y) { return y * x; }
The thing is, I did (the last two overloads of operator * in my posted code), however, the compiler declares it ambiguous whether it should use these overloads, or use the conversion operator to convert the Int64 to the fundamental type, then do built-in math with it.