blob: ffcdc624b41383374aee279bd514596acbb4f166 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
// infers wrong instance --> an implementatioin is missing
trait Ord[-T] {
def less(x: T, y: T): Boolean
}
object Test {
implicit val anyIsOrd: Ord[Any] = new Ord[Any] {
def less(x: Any, y: Any): Boolean = ???
}
implicit val intIsOrd: Ord[Int] = new Ord[Int] {
def less(x: Int, y: Int): Boolean = x < y
}
def less[T: Ord](x: T, y: T): Boolean =
implicitly[Ord[T]].less(x, y)
def main(args: Array[String]) =
assert(less(1, 2))
}
|