Strange compiler error when calling required initializer on generic type parameter
<p>Does anyone know why the first function compiles correctly, while the second one fails? Is this some sort of bug of the Swift 3 compiler?</p>

<pre><code>import Foundation
import CoreData

protocol P {
    init?(i: Int)
}


class C {
    func f&lt;T: NSObject&gt;(i: Int) -&gt; T? where T: P {
        return T(i: i)  // compiles OK
    }

    func g&lt;T: NSManagedObject&gt;(i: Int) -&gt; T? where T: P {
        return T(i: i)  // doesn't compile: "Incorrect argument label in call
                 ^      // (have: 'i:', expected 'context:')
    }
}
</code></pre>