snrostov
01/04/2018, 12:21 PMGT
не может быть выведен?
class A<T>(val t: T)
class B<T, out U: A<T>>(val t: T, val at: U)
fun <T> B<T, *>.withCapturedU(): B<T, A<T>> = this
private fun <FT> f(x: B<FT, *>) {
g(x) // ERROR, why?
g(x.withCapturedU()) // OK
}
private fun <GT> g(y: B<GT, A<GT>>) {
println(y)
}
Если посмотреть сообщение об ошибке, то первый вариант который находит компилятор не содержит противоречий, почему он его не может выбрать?