Ответ на обновленный вопрос
Проблема заключается в определении f
. Если вы удалите вызов f
, вы получите это сообщение об ошибке:
аргументы типа [G] не соответствуют признаку параметра типа GM C [A <: G с M [A]] </p>
Другими словами, вы не можете использовать пустой G
в качестве параметра типа для GMC
, где ограничение типа для GMC
равно G with M[A]
.
Вам необходимо ограничить тип, который принимает f
, чтобы соответствовать определению GMC
:
def f[A <: G with M[A]](gmc: GMC[A]): Unit = ???
Предыдущий ответ
Вам необходимо указать параметр типа для T
при создании object
:
object X extends T[A] {....}
Если вы сделаете это изменение, оно скомпилируется:
class A
trait T[A]
object X extends T[A] {}
def f(t: T[A]) = {}
f(X) // No error