scala> case class Foo[A](x: Int)
defined class Foo
scala> def add(foo: Foo[Int], foo2: Foo[Int]): Int = foo.x + foo2.x
add: (foo: Foo[Int], foo2: Foo[Int])Int
scala> add(Foo[Int](1), Foo[Int](2))
res9: Int = 3
Note that I tried to add a `Foo[Int]` and `Foo[Double]`, but got a compile-time error, as expected:
scala> add(Foo[Int](1), Foo[Double](2))
<console>:15: error: type mismatch;
found : Foo[Double]
required: Foo[Int]
add(Foo[Int](1), Foo[Double](2))
^