Avatar
↓なので、 func makeOpaque<T>(_: T.Type) -> some Any { /* ... */ } var x = makeOpaque(Int.self) x = makeOpaque(Double.self) // error: "opaque" type from makeOpaque<Double> is distinct from makeOpaque<Int> やっぱり↓で正しそう。 func foo1() -> some Foo { return Foo1() } func foo2() -> some Foo { return Foo2() } var foo = foo1() foo = foo2() // コンパイルエラー
3:35 AM
これってモジュール(というかビルド単位)をまたいだときにどうやって静的に判定するの? ABI に影響なくできる?
3:37 AM
Opaque result types are an ABI-additive feature
3:37 AM
書いてあった。
3:37 AM
additive だからいいのか。
3:44 AM
↓は OK ?エラー? func p1() -> some P { return S(1) } func p2() -> some P { return S(2) } var s = p1() s = p2() // OK ?エラー? (edited)