protocol Numeric { func +(lhs: Self, rhs: Self) -> Self } func<T: Numeric>(a: T, b: T) -> T { return a + b }
func add<T: Numeric>(a: T, b: T) -> T { return a + b }