I wydaje się, że połączenie niejawne konwersje z ogólnych parametrów ukrytych nie działa, tak jak w przykładzie 2b poniżej:niejawna konwersja z rodzajowego parametr niejawny
object Test {
case class Foo(i: Int)
case class Bar(i: Int)
case class Zip(i: Int)
object Foo {
// 1)
implicit def toBar(foo: Foo)(implicit g: Int => Bar): Bar = g(foo.i)
// 2)
implicit def toT[T](foo: Foo)(implicit g: Int => T): T = g(foo.i)
}
// 1)
implicit val b = (i: Int) => Bar(i)
val bar: Bar = Foo(3)
// 2a)
implicit val z = (i: Int) => Zip(i)
val zip: Zip = Foo.toT(Foo(3))
// 2b)
val zip2: Zip = Foo(3) // <- compiler error, implicit conversion not applied
}
Czy istnieje teoretyczna powód ten nie działa, lub jest to ograniczenie wdrożenia?