0

I was thinking of making an integer power function in Swift based on this StackOverflow answer:

func **<T : IntegerType>(var base: T, var exponent: T) -> T {
    var result: T = 1

    assert(exponent >= 0, "Exponent cannot be negative")

    while exponent > 0 {
        if exponent & 1 != 0 {
            result *= base
        }

        exponent = exponent >> 1

        base *= base
    }

    return result
}

I figured I could use generics to implement the function so that it would work with any integer type.

Unfortunately, I get an error when I attempt to use exponent >> 1:

Binary operator '>>' cannot be applied to two 'T' operands

Checking the function definitions for >>, I see that there is one for each of the ten integer types, but no other ones are defined. I was surprised therefore that all the other operators were working, such as &, but I noticed that & was actually defined to work on all types which conform to BitwiseOperationsType, which IntegerType appears to conform to.

Is there a reason why the >> and << operators are not implemented for BitwiseOperationsType?

Robert
  • 5,735
  • 3
  • 40
  • 53

0 Answers0