Учитывая следующие определения Scala
abstract class C {
type T1 <: { def m() : Int }
type T2 <: { def n() : Int }
}
, есть ли способ определить третий тип в C, который может быть подтипом как T1, так и T2? Например.
type T3 <: T1 & T2 // does not compile
Мне кажется, что (частично) причина, по которой это не будет работать так, как написано, заключается в том, что я не могу быть уверен, что это не приведет к незаконному ограничению (например, наследованию от двух классов). Таким образом, связанный с этим вопрос будет заключаться в том, могу ли я ограничить T1 и T2 так, чтобы это было законно, например требуя, чтобы они оба были чертами характера.