Suppose I have defined a class Test:
import scala.collection.{IterableFactory, Factory}
class Test:
def p1[C[_]](xs: Int*)(using f: Factory[Int, C[Int]]): C[Int] = f.fromSpecific(xs)
def p2[C[_]](xs: Int*)(using f: IterableFactory[C]): C[Int] = f(xs*)
Then I can write following codes since there are implicit methods implicit def iterableFactory[A]: Factory[A, CC[A]] = IterableFactory.toFactory(this) defined in List, Seq, etc.:
val t = new Test
t.p1[List](1, 2, 3)
However, I can not write t.p2[List](1, 2, 3) directly. Instead I must define given IterableFactory[List] first, or using t.p2(1, 2, 3)(using List).
My question: Is there any solution such that t.p2(1, 2, 3) works automatically? Such as define some given instances in object Test or so?