【发布时间】:2018-12-05 16:33:04
【问题描述】:
给定
typealias CP = C & P
protocol P {}
class C {}
class D: C, P {}
和
func f<T: C>(ofType: T.Type) {}
并且给定CP 与预期的C 兼容:
let cp: CP = D()
let c: C = cp
为什么会出现以下错误?
f(ofType: CP.self)
错误:无法将类型“CP.Protocol”(又名“(C & P).Protocol”)的值转换为预期的参数类型“C.Type”
在 Swift 版本 4 中添加了声明类和协议的存在的能力,请参阅 SE-0156
【问题讨论】: