A conversão implícita não é aplicada se um método tiver o parâmetro type

A questão é baseada na discussãoaqui. Esta é a configuração:

implicit def CToC2(obj: C1): C2 = {
  new C2()
}

class C1() {
  def f[U](f: (Int, Int) => U): U = f(1, 1)
}

class C2() {
  def f[U](f: ((Int, Int)) => U): U = f(2, 2)
}

Eu esperaria que tentar chamar a função com uma assinatura existente emC2, scala usaria a conversão implícita para atender a chamada:

val c1 = new C1()
val ff: ((Int, Int)) => Unit = t => println(t._1 + t._2)

Mas isso falha:

scala> c1.f(ff)
Error:(16, 7) type mismatch;
 found   : ((Int, Int)) => Unit
 required: (Int, Int) => ?

Curiosamente, se eu largar o parâmetro type deC1, Funciona bem:

class C1() {
  def f(f: (Int, Int) => Unit): Unit = f(1, 1)
}

questionAnswers(0)

yourAnswerToTheQuestion