次のコードがあるとします。
trait Trait[T <: Trait[T]] {
def merge(t: T): T
}
case class A[T <: Trait[T]](t: T, i: Int)
case class B[T <: Trait[T]](t: T, str: String)
クラス A と B の定義を省略して型を定義する方法はありますか?
次のようなものです:
type T2 = _ <: Trait[T2] // ???
case class A[T2](t: T2, i: Int)
case class B[T2](t: T2, str: String)