Múltiples límites de tipo inferior en Scala

Me di cuenta quetuple.productIterator siempre devuelve unIterator[Any] se preguntó si no es posible establecer múltiples límites inferiores (por lo que podría ser un iterador del supertipo común más bajo).

Intenté y busqué un poco, pero solo encontréest pregunta para múltiples límites superiores.

Esta es mi prueba sobre cómo definir el tipo de iterador:

def f[A,B](a:A, b:B) = List(a,b)
// return type is List[Any]

def f[A,B, T >: A "and" T >: B](a:A, b:B) = List[T](a,b)
// doesn't compile, but
//  f(1, true) should give a List[AnyVal] and
//  f("x", "y") a List[String]

Es esto una limitación de la JVM?

Editar Aquí hay un ejemplo un poco más grande que no parece resolverse usando el enfoque de IttayD cuando T debe definirse en el método:

class Foo[A, B](a: A, b: B) {
  def f[T >: A] = List[T](a) // works
  def g[T >: A "and" T >: B] = List[T](a) // doesn't work
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta