Avatar
omochimetaru 11/8/2018 7:49 AM
func package<T: P>(_ t: T) -> P { // ここでPのExistentialが作られて、Tはその中に保持される return t } // これは普通 let p0: P = package(Cat()) // このとき、callee側ではPではなくT: Pとして来るので、 // 同じように T を保持する P が作られて、 結果的に P { P { T } } になりそう。 let p1: P = package(p0)