Avatar
norio_nomura 8/8/2019 10:14 AM
protocol P {} class C: P {} func cast(_ any: Any) -> (C & P)? { any as? (C & P) } _ = cast(C()) これ、C & Pのメタデータを用意してキャストするコードが生成されるから、witness tableも持ってそう。Cが既にPだというのは考慮されていない感じ。