package t1 import scala.reflect.{ArrayTag, arrayTag} trait Element[T] { } trait Config { type T <: Element[T] implicit val m: ArrayTag[T] // XXX Following works fine: // type T <: Element[_] } trait Transform { self: Config => def processBlock(block: Array[T]): Unit = { var X = new Array[T](1) } }