Рассмотрим следующий Scala код (например, в REPL)
object A{def foo:Unit = {}}
object B{def foo:Unit = {}}
def bar[T <: Any {def foo: Unit}](param: T*):Unit = param.foreach(x => x.foo)
bar(A, A) // works fine
bar(B, B) // works fine
bar(A, B) // gives error
Первые две работают отлично. Третий дает ошибку:
error: inferred type arguments [ScalaObject] do not conform to method bar type parameter bounds [T <: Any{def foo: Unit}]
Есть ли способ сделать то, что я хочу?