> On Sep 28, 2016, at 23:00, Adrian Zubarev via swift-users 
> <swift-users@swift.org> wrote:
> 
> struct B : RawRepresentable {
>      
>     let rawValue: Int
>      
> //  init?(rawValue: Int) {
> //
> //      self.rawValue = rawValue
> //  }
>      
>     static let c: B = B(rawValue: 0)
>     static let d: B = B(rawValue: 1)
> }
> It seems to me that the memberwise initializer init(rawValue: Int) ignores 
> the failable initializer init?(rawValue: Int) from RawRepresentable and is 
> even able to satisfy RawRepresentable in that case.
> 

Yep, that's correct. A non-failable initializer is considered a valid subtype 
of a failable initializer, in that you can always provide the former where the 
latter is expected. The compiler doesn't handle all forms of subtyping when it 
does protocol conformance checks (and there are bugs on this), but it does 
handle this one.

Jordan

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to