These might help:
http://www.artima.com/pins1ed/implicit-conversions-and-parameters.html#21.5
http://stackoverflow.com/questions/6085085/why-cant-i-create-an-array-of-generic-type
Generic arrays like Array[T] can be bit annoying because the compiler
needs to know the exact type of the T. If you tell the compiler the
type explicitly, like String, then everything is ok. Otherwise the
compiler needs ClassTag/ClassManifest to figure out the type.
syntax:
def make[T: ClassManifest]() = ...
is officially called 'context bound' and is syntax sugar for
def make[T](implicit ev0: ClassManifest[T]) = ...
These examples might also help
def okA: ArrayBuilder[String] =
ArrayBuilder.make[String]()
def okB[T: ClassManifest]: ArrayBuilder[T] =
ArrayBuilder.make[T]()
def okC[T](implicit myCm: ClassManifest[T]): ArrayBuilder[T] =
ArrayBuilder.make[T]()
def okD[T](myCm: ClassManifest[T]): ArrayBuilder[T] = {
implicit val foo = myCm
ArrayBuilder.make[T]()
}
Cheers,
Juha