Avatar
これは T1T2 がそれぞれ Numeric に適合してることは述べられているけど、 values のすべての要素が共通して Numeric に適合していることは暗黙的だから、 map したときに * できるのは structural subtyping 的だと思う。 func squares<T1: Numeric, T2: Numeric>(of values: (T1, T2)) -> (T1, T2) { values.map { $0 * $0 } }