Overloaded shift operator must have the type of the first operand be the containing type, and the type of the second operand ...