По принципу Лискова. C
, являющийся подтипом A
, B
и Root
, должен удовлетворять всем этим контрактам.
Таким образом, он должен иметь внутренний тип T
, который должен быть подтипом A
, B
и Root
.
Таким образом, он не ограничен T <: B
или не может быть ограничен T <: A
, он должен быть ограничен обоими.
По некоторым причинам, компилятор не может определить правильный тип для T
или, возможно, он просто решает, что в этом случае лучше, чтобы пользователь был явным, а не выводил.