import scala.language.implicitConversions trait T[X] trait U[X] trait TC[M[_]] object Test extends App { def foo[M[_]: TC, A](ma: M[A]) = () implicit val TCofT: TC[T] = new TC[T] {} implicit def any2T[A](a: A): T[A] = new T[A] {} implicit def any2U[A](a: A): U[A] = new U[A] {} val x = foo[T, Int](1) val y = foo(1) }