Why does Scala implicit resolution fail for overloaded method with type parameter?
The first example successfully finds the implicit conversion to the method foo(String) , however as soon as I add a type parameter (see fails ) the compiles doesn't resolve it anymore: object works { class A { def foo(): String = ??? } implicit class PimpedA(a: A) { def foo(i: String): String = ??? } val a = new A() a.foo("test") //compiles } object fails { //same as `works`, but adds type parameter class A { def foo[T](): String = ??? } implicit class PimpedA(a: A) { def foo[T](i: String): String = ??? } val a = new A() PimpedA(a).foo("test") // compiles a.foo("test") // error: too many