struct IntError : Error { var value: Int } func mutateError(_ e: inout Error) {} struct Cat { var error: IntError } func main() { var cat = Cat(error: IntError(value: 3)) // Cannot pass immutable value as inout argument: implicit conversion from 'IntError' to 'Error' requires a temporary mutateError(&cat.error) }
import Foundation @objc protocol P { } func genericP<T: P>(_ t: T) {} func existentialP(_ p: P) { genericP(p) }
@objc
protocol は self-conformance していて、その条件チェックもされてるって!import Foundation @objc protocol P { init() } func genericP<T: P>(_ t: T) {} func existentialP(_ p: P) { // Cannot invoke 'genericP' with an argument list of type '(P)' genericP(p) }
pにinitつけたらエラーになった。