I have these 2 implicits
trait A[T] { val name: String } trait B object A { implicit def product[T <: Product] = new A[T] { override val name: String = "product" } implicit def childOfB[T <: Product with B] = new A[T] { override val name: String = "child of B" } } and if I try to find an implicit instance of A[C] where C is
case class C() extends B childOfB will be selected.
I know it is logical but why does this happen? I cannot find it documented anywhere.