(кросспост из general) почему в этом случае тип `G...
# russian
s
(кросспост из general) почему в этом случае тип
GT
не может быть выведен?
Copy code
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)
}
Если посмотреть сообщение об ошибке, то первый вариант который находит компилятор не содержит противоречий, почему он его не может выбрать?