class Foo[T](val value : T)
object Foo {
implicit def fromXInt[T <: Int with Singleton](i : T): Foo[T] = new Foo[T](i)
}
class FooUser[T] {
def op[T2](that : Foo[T2]) : FooUser[T2] = new FooUser[T2]
}
val f = new FooUser[1]
val f2 = f op 2
12 | val f2 = f op 2
| ^
| found: Int(2)
| required: Test.Foo[T2]
|
| where: T2 is a type variable